From patchwork Thu Nov 30 11:32:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 6470 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp505066jah; Thu, 30 Nov 2017 03:32:56 -0800 (PST) X-Google-Smtp-Source: AGs4zMakRoPkI34LmlDau77qZBDLR/yuv8PrToOEJuBWvXEPq6hg5MnLwIrlags0fj2U0w2Sy7S5 X-Received: by 10.28.196.70 with SMTP id u67mr344628wmf.100.1512041575983; Thu, 30 Nov 2017 03:32:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512041575; cv=none; d=google.com; s=arc-20160816; b=tBRwC6wAABMelv3wKdz+uhVwUsKRFX/3ydZEgIgVyrFSMTF19TcdKIVj3ZtkAHi/ec wBLywLDBBmL9cN3sN/oqe8guUMQwpig9GDCd7xl0LrpKnP5Z6MrYlspJBvA27h2mDZHw IwadAQoXKU9eShR8WnKiexA2RbFKsRAis92f3tObXCxyTfhT0fPfGUosxm66LcVGM0Uk zZeX1Af7BBadgZCJUQ9gzLHslaPl0ShulxZyTq1eWRBqJfku732slQg/WvCng4geM4dP FFGOwSzOBgwHq4DE8thX/ruYbtDBEnfNAQu+kGOt8M8wNsWIc2j0wAlzPz6/+AhVTbem 8myg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=dN/8dxzhj8J6p/fCYrSzjrQXJ6dVjlPski4K5PPMQ7I=; b=k8ff+1RWzucUImPMc9yEiH9I/qODgWXCObJj1R461cIq3C52VBG7pdmd7C4sAWVjke 0CZrFYk2gbWe4ON34n7vqyiBHFuIqz5aKkX0hQsTXcT6OTJn0/KG6nxPyJW1CCaLrT58 ul7BKNFTSY3urLnrMSLIYj8eO6CIyh5kZij01yiLunXZHgoA9352WAwzIZxmlDx59R96 5XSSOaDY5Tkjgl0mB/mqrk6MULE5byKQPs5w3ql3DpOK8QwbLNJCUtYYpZu8yaxh96WH JnRSIOg58ywuoHKt8WfZ8kJBYyW4zQBPv1r1t0gwZ51jL5iZcjJFoWwGFSArKHrxoVQ+ OoUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=Loxpj0zy; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o10si3102543wrg.50.2017.11.30.03.32.55; Thu, 30 Nov 2017 03:32:55 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=Loxpj0zy; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A8EE068A388; Thu, 30 Nov 2017 13:32:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a2i831.smtp2go.com (a2i831.smtp2go.com [103.47.207.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49E4B68A35D for ; Thu, 30 Nov 2017 13:32:45 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1512042473; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=SSGmUUV6AIbhV4abp45ITcq6hzy18CbeuhuFiOI3tOc=; b=Loxpj0zy Pc/uXNwq2YK2MQ1odFvKoOpKQ2jVJWND11vfTwQCt0JcISF3wcga23weT/slUfM+lpriEe0zsSPu+ fC/bwkdTX+aDbK7E32jyNCGBe4LhTryX1p76COjFcaePnZnf/rhlp72YY5aPJrwRnp0Q/DeWG2Vvi Rej1i6g3ARj6jXqD0G7A9b5mPgsVHrbhoI94z5wjVT0WRmWFdSvtggNjN0fBbLDoSwwRJv/qGpB5v eFhIn79HvYA1hFEtkVwFExY7Q+AgXj29b009KDFNjkf6xOBwDrRwKW4QUo64H1QKqiuSIDOijk6lT pHwSE7arOT5JAs1xXO4yrIQVHA==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 Nov 2017 17:02:37 +0530 Message-Id: <1512041557-23601-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1511537408-13475-1-git-send-email-kjeyapal@akamai.com> References: <1511537408-13475-1-git-send-email-kjeyapal@akamai.com> X-Smtpcorp-Track: 1-KN5jRyIua4Eq.H6xdPLBA0 Feedback-ID: 337386m:337386asVRLGB:337386sQrbQQYKod:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v5 2/3] avcodec/libx264:setting profile and level in avcodec context X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit --- libavcodec/libx264.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 9c67c91..545826c 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -19,11 +19,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/avassert.h" #include "libavutil/eval.h" #include "libavutil/internal.h" #include "libavutil/opt.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" +#include "libavutil/reverse.h" #include "libavutil/stereo3d.h" #include "libavutil/intreadwrite.h" #include "avcodec.h" @@ -454,6 +456,9 @@ static av_cold int X264_init(AVCodecContext *avctx) X264Context *x4 = avctx->priv_data; AVCPBProperties *cpb_props; int sw,sh; + x264_nal_t *nal; + uint8_t *p; + int nnal, s, i; if (avctx->global_quality > 0) av_log(avctx, AV_LOG_WARNING, "-qscale is ignored, -crf is recommended.\n"); @@ -799,12 +804,15 @@ FF_ENABLE_DEPRECATION_WARNINGS if (!x4->enc) return AVERROR_EXTERNAL; - if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { - x264_nal_t *nal; - uint8_t *p; - int nnal, s, i; + s = x264_encoder_headers(x4->enc, &nal, &nnal); + // Assert for NAL start code and SPS unit type + av_assert0((nal->p_payload[0] | nal->p_payload[1] | nal->p_payload[2]) == 0 && nal->p_payload[3] == 1); + av_assert0((nal->p_payload[4] & 0x1F) == 7); + // bits 0-7 LSB for profile. bits 8-11 for constrained set flags. + avctx->profile = ((uint32_t)nal->p_payload[5]) | ((uint32_t)ff_reverse[nal->p_payload[6]] << 8); + avctx->level = nal->p_payload[7]; - s = x264_encoder_headers(x4->enc, &nal, &nnal); + if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { avctx->extradata = p = av_mallocz(s + AV_INPUT_BUFFER_PADDING_SIZE); if (!p) return AVERROR(ENOMEM);