From patchwork Fri Nov 24 15:30:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jeyapal, Karthick" X-Patchwork-Id: 6336 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp2324492jah; Fri, 24 Nov 2017 07:30:31 -0800 (PST) X-Google-Smtp-Source: AGs4zMblaPBHLaj4XhUCgmBVLUqch+AYm00Boi0pOzJDWDwjvsAHaQV3kHeab7LblFeFrmT0XmYF X-Received: by 10.223.186.202 with SMTP id w10mr2485640wrg.187.1511537431383; Fri, 24 Nov 2017 07:30:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511537431; cv=none; d=google.com; s=arc-20160816; b=kNvOl/GWQJUz9NKlyhB3nuM7R9oO9KjiSRUiVOtjW23tnDZdVwwHrGxsZxV0FMDAnM A/nmoOpRQSjjuhOey7LHZ72MezGTIKSge1VdZHW7Bkxi6v9Sz/k3f3ou9wf4dG6KjEVE slZhgllyOAP9g/PXqmSgAqCqIill+UtivtAYhT3ThfBMi5hEwqlWOptPK6BD5M7WvPZc DAMo2XpS1naasbXi9yjY9cpQzwIIJh5bGR99Xbjg0hNYA/SRXNhqliJ1Ddi95nwz35oz oJfM18+TZ8KBYzBel2sgjqNYRl1OoINsJbDUebU38JRQz1A5vhaxQaWQT6R616clytOd WJLw== 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=INyaw5YEnYEVipD1ctdfIvBuRwOFpV8WSi2ZyGiiulzj4urqmjTk9Goy3bQMpwa4Gq wWZNfjqY6rpGiAeKXT19NjaXYUfSMKNmE8CEAIi9o2tLPSpbKPaiv+Nbliq6lvtV/AyN BHS5nyMVPioiixp1621dJTXdGj/XnN+6CKdjLtMPK9294WiFMKXCntN+1gb+bmcFrn6x U2+TE3hutwYC+78t7Anh+Jh4gkwgC6c4yATX6RQ/46XFaCAYEBWOy23mtOtnZQ+7v+VU uosj6OTLEaJitVKXO6DSBleIghs6vGr40E1JN4/Cik8hNpQp7A0tnO664Eq7rRIKuqND viqg== 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=cHhtEqrg; 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 c138si7452878wmh.28.2017.11.24.07.30.29; Fri, 24 Nov 2017 07:30:31 -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=cHhtEqrg; 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 52DC568A15C; Fri, 24 Nov 2017 17:30:27 +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 EC071680934 for ; Fri, 24 Nov 2017 17:30:19 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1511538326; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=SSGmUUV6AIbhV4abp45ITcq6hzy18CbeuhuFiOI3tOc=; b=cHhtEqrg BQ3o2hz4Wjf1NTi61buhUREwSp7dQxGBFb+TCeq2E1Y+QAE8SxfNnn1FF+aM6VOKiRyDmAsOqqm5n oYQXktfatFEdoqXILnRh+4AnXlelmKXPpGc2OxQfU9pCVuy/uCvkfrgBY+f/xmBRlaanLY0MvnNmR oGJBPVvZ63jYHW8Fns/lL9gO+0xI6N8Stx+mQXHEYvGBEjwngzz8d05OvM9dXHR1um8VEJAh7/VTM zFF8GwmGXfCsCNy+dstmI56BkQBLWtLQ+hqPoinXfGvpuWMfVmuCNQbv4wxm9OmtMBNRdq7XW4+5H tlilpVKDX502tSDRBX5CLfnJEQ==; From: Karthick J To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Nov 2017 21:00:08 +0530 Message-Id: <1511537408-13475-1-git-send-email-kjeyapal@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <172a80f9-3bc5-3a5c-81f1-f14f8bdad64e@jkqxz.net> References: <172a80f9-3bc5-3a5c-81f1-f14f8bdad64e@jkqxz.net> X-Smtpcorp-Track: 1-mFvkNmFU1O1M.GHsJdVQlb Feedback-ID: 337386m:337386asVRLGB:337386sl9MI42ffX:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v4 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);