From patchwork Wed Dec 14 01:55:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 1779 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp2521374vsa; Tue, 13 Dec 2016 17:56:08 -0800 (PST) X-Received: by 10.28.152.137 with SMTP id a131mr4873492wme.56.1481680568484; Tue, 13 Dec 2016 17:56:08 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 81si5044774wmq.96.2016.12.13.17.56.08; Tue, 13 Dec 2016 17:56:08 -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=@gmail.com; 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=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AEA7A689AB8; Wed, 14 Dec 2016 03:56:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f68.google.com (mail-pg0-f68.google.com [74.125.83.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B15F2689937 for ; Wed, 14 Dec 2016 03:55:53 +0200 (EET) Received: by mail-pg0-f68.google.com with SMTP id 3so594667pgd.0 for ; Tue, 13 Dec 2016 17:55:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=to:from:subject:message-id:date:user-agent:mime-version; bh=hSRPACFdsteStS24QPc+eUFwAsFOLDpKnKmbmJogIBE=; b=nnE9YD391bBY/VSHcly1zgUT9JYPdWJyjEVvYzUz2IAL1+O4EGZ7YYLT7F+J2IcB+V o240Ipsk0vjplXqQM/xl89sDPXUqpvCm/AZZtT56SzM6D9o2SqJ9JHMJzopoqAgf1/f3 npmy/wACUe/QeHRdScxf+Q5YHD2QNeZOIlwHf50jbYM1nXevr/xZNYwmFPa2hswysgeZ +Tcn3tvdTFigANV+uaw+KDdUtoOnKu4PTx1ePe/itlITWTI9i7jeUvyT3g08jH8INEmS IVzcc/GcQUFgahMeWJfy5LEgXmArBAnhnBRicNnIWroD3K6EW6BqOVhKpC1BxX2Ggjnf MuUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=hSRPACFdsteStS24QPc+eUFwAsFOLDpKnKmbmJogIBE=; b=AdHl3wo1e5Y3rOix/QHW1kbXbkZQRB4iljqJ/ITQBcQ9CrhmSBjSOoLlMYQzvko96p kvo29q6T8nI6BpxdUTBQ+GdhwHtKVfS2uBc7BxdSaNVxL1tM1Fi/9XA0oTCTB1PbfLmn R2gB5Qg62B9SvOnMaNPzV5QSOU7xjAn5NCKzYohv//ci0fkLFlrCVbcD0kGgG4+W5yoI EWQuC/F60rjiSJHnXyi36G2Gvy8BL1erczKkEMm+Ot7ke9Ji3tvH6aCoxezq2lJoKI0V 631ByTyTHRcmmEMLtIYLe8QcqpnUw14VZ9L1sHW0M+wP4V2UvpYhoItEft2Sp7C0pVQF 7IUQ== X-Gm-Message-State: AKaTC01ZeMChSUmSBtQNHVTKeiiwzrgPDq6/SiZy6MIPvm0CvKcIa5lSMsoJfxXuVNvlTA== X-Received: by 10.99.209.81 with SMTP id c17mr38315625pgj.24.1481680557758; Tue, 13 Dec 2016 17:55:57 -0800 (PST) Received: from [10.239.204.22] (fmdmzpr04-ext.fm.intel.com. [192.55.55.39]) by smtp.gmail.com with ESMTPSA id i11sm83104269pgn.17.2016.12.13.17.55.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Dec 2016 17:55:56 -0800 (PST) To: Mark Thompson , FFmpeg development discussions and patches , Yi Wang , jun.zhao@intel.com From: Jun Zhao Message-ID: Date: Wed, 14 Dec 2016 09:55:53 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Content-Disposition: attachment; filename*0="0001-lavc-vaapi_encode_h264-add-option-to-indicate-the-h2.pa"; filename*1="tch" X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH] lavc/vaapi_encode_h264: add option to indicate the h264 encode profile 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From 03030392ec2458679cdfb14802b80cbb196eae40 Mon Sep 17 00:00:00 2001 From: Yi A Wang Date: Tue, 13 Dec 2016 10:50:54 +0800 Subject: [PATCH] lavc/vaapi_encode_h264: add option to indicate the h264 encode profile add h264 encode profile option and update the docs, for avc constrained baseline, disable B frames base on H.264 spec Annex A.2.1 Signed-off-by: Jun Zhao Signed-off-by: Yi A Wang --- doc/codecs.texi | 8 ++++++++ libavcodec/options_table.h | 5 ++++- libavcodec/vaapi_encode_h264.c | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/doc/codecs.texi b/doc/codecs.texi index 9a3a56d..9ee9061 100644 --- a/doc/codecs.texi +++ b/doc/codecs.texi @@ -893,6 +893,14 @@ Possible values: @item dts_hd_ma +@item hevc_main10 + +@item h264_constrained_baseline + +@item h264_main + +@item h264_high + @end table @item level @var{integer} (@emph{encoding,audio,video}) diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index 3fe7925..94b2d9b 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -395,7 +395,10 @@ static const AVOption avcodec_options[] = { {"mpeg4_core", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_CORE }, INT_MIN, INT_MAX, V|E, "profile"}, {"mpeg4_main", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_MAIN }, INT_MIN, INT_MAX, V|E, "profile"}, {"mpeg4_asp", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_ADVANCED_SIMPLE }, INT_MIN, INT_MAX, V|E, "profile"}, -{"main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, "profile"}, +{"hevc_main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, "profile"}, +{"h264_constrained_baseline", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_H264_CONSTRAINED_BASELINE}, INT_MIN, INT_MAX, V|E, "profile"}, +{"h264_main", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_H264_MAIN}, INT_MIN, INT_MAX, V|E, "profile"}, +{"h264_high", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_H264_HIGH}, INT_MIN, INT_MAX, V|E, "profile"}, {"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, {"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, {"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|A|D}, diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 69cc483..5f37770 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -1190,6 +1190,11 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) switch (avctx->profile) { case FF_PROFILE_H264_CONSTRAINED_BASELINE: ctx->va_profile = VAProfileH264ConstrainedBaseline; + if (avctx->max_b_frames != 0) { + avctx->max_b_frames = 0; + av_log(avctx, AV_LOG_WARNING, "H.264 constrained baseline " + "profile don't support encode B frame.\n"); + } break; case FF_PROFILE_H264_BASELINE: ctx->va_profile = VAProfileH264Baseline;