From patchwork Tue Dec 19 06:09:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 6862 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.79.195 with SMTP id r64csp1171284jad; Mon, 18 Dec 2017 22:09:40 -0800 (PST) X-Google-Smtp-Source: ACJfBotVjGqMHaTlT7dPObwPl5O+eOH++4VlShg3xS9q+jJO++rbDFhQIqevS8HV8tj3qdKFd52H X-Received: by 10.223.157.27 with SMTP id k27mr3012995wre.153.1513663779999; Mon, 18 Dec 2017 22:09:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1513663779; cv=none; d=google.com; s=arc-20160816; b=0aORKvZ+vWA7BNRgl46h7xymas25s23ffIAp0snWkZ8eL/IERQxCSRU39cipmCWWcT dFh69xpf8Fj+AVI1N9iXDtgsyJJx+OgkJg6HsogclntCzNqXv4ibKfxac2HpE7g3JOTC BfgRlSj0GQXiTwkLg0fojVt7SrZ50guVXFnKp8kgBt583QIrKzNP8rA/1sYpgnc+NWpb NTKOiNSCLn+J2fWYeiWHwESe9Xu9TOw89CJtqkxdv57Lt63F2eyOjU0GuJoFOxJNAzEY bodRhEL+GZlcBjfvXLPKLnNT4fltpkHipgGw5DDKpMt0RBbPikksJTS7xO/1snRZVDcJ saDQ== 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=JjzTsOLx+rkhL7KDwam7jees65r61EPs09nFlgvZ7Co=; b=vmP68Mt2U9hWdJPpUOsNlb9YkuXNbkT4TExXx72wNTfOMozgJkwQtRFkDeUNg8Ntvs LlXtWc0jcgtbHivcqor+Gm9mmCiCNc/rucnnv4zTPD9c7fCDreRQ2NuYZ+PJPqm8OSxI MoFnQchhVqBEx9TseuJbfSlPD/aKHLa+7jcX0gGL5v9bGfeY4ENSBDnNgN5Tf/B7stEM nEXgMkSOfw/h/tz1zXLxu4T6K27RrbSWiTPzwF+Kl6MLHjc5UZlICUKmO65ueeaO6SMe 4ed0KIVjbuWozCeJvTRPJWBUgL0/KVTqD3W5SkVqG3KznCkbFG8LFdHLSNSfiNK2p8Cr 81jg== 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=gZBk3wRF; 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 a5si680456wmh.122.2017.12.18.22.09.39; Mon, 18 Dec 2017 22:09:39 -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=gZBk3wRF; 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 58B2F689957; Tue, 19 Dec 2017 08:09:28 +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 DCFE8680A6A for ; Tue, 19 Dec 2017 08:09:20 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1513664676; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=TGmlG7RNByVmaiICUMTTJdNU+vNat2sVvfTAbhx4rrQ=; b=gZBk3wRF 7B2+/2reR9uoxON2l8t4Id3HcGqwm7IJrnifpuRo5u97SGSp9B0xgSS6zYSVdrjR5BSR0Eh27MUbu 1tIBKV8ONkaLHx+MT310QwW1LpOOIbxJ3j4E9pSuLitRqYI0exaamV7kRFYl10aAA+zWyYCpVDiZL Tp70SsCsguficKwnOROGy5pHpzyluJdRgnX5O+G+hNEJ8rhUt589uh3xGOjOHS4JIPZmE3iiE6BT6 0nm4pE7aBSzDCqerXm9ZX4k3lXAd6ixXeO17zhcepytWugOri6IVMF7p3v2M70Pfais2y32RJvkhh 1twVAIabnAAMChDzXVxVShoYUw==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 Dec 2017 11:39:24 +0530 Message-Id: <1513663764-1891-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1513601583-27896-1-git-send-email-vdixit@akamai.com> References: <1513601583-27896-1-git-send-email-vdixit@akamai.com> X-Smtpcorp-Track: 1-RU5MNmF5eaJO.OO0WnMCD7 Feedback-ID: 337386m:337386asVRLGB:337386sDRF6WGQLE:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v8 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 | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index e2455e1..0285213 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,17 @@ 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. + if (avctx->profile == FF_PROFILE_UNKNOWN) + avctx->profile = ((uint32_t)nal->p_payload[5]) | ((uint32_t)ff_reverse[nal->p_payload[6]] << 8); + if (avctx->level == FF_LEVEL_UNKNOWN) + 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);