From patchwork Mon Dec 26 06:02:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Wenbin" X-Patchwork-Id: 39752 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bc95:b0:ad:ade2:bfd2 with SMTP id fx21csp2472185pzb; Sun, 25 Dec 2022 22:02:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXtF0dPMiQV3VZlIACccnY5njq9209Ve2j0nhtWG0lJLl90qVdTjHK379EjJzGUrZ5dInfu4 X-Received: by 2002:a17:906:9be4:b0:7c0:e99a:e353 with SMTP id de36-20020a1709069be400b007c0e99ae353mr13429711ejc.56.1672034537207; Sun, 25 Dec 2022 22:02:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672034537; cv=none; d=google.com; s=arc-20160816; b=04vCycp+I/un8afA/btvgDSn0k6hTgT0oKgLpCYWyDyY7Xdsf16560RU34b1pxTyy/ rMSAgiK7AftHRkpAu2hrLn2jq2xwS60OKTRGocjU8Ed5LdTCKJhndjBkQkeP/cKwgqHw WXCfLV2BjRgfpba7Kw7WzzIQSrTBUrsad4heWoDp8xtRmqpfO9+JEFx/UrKJeUh10iGw x8Ir5v/Juiih4T5q/WvhZzH/dXze0ZoxyzD/jaC/fY4IN6s2CjyhZiNyfPD1imC8wARv O9M1+l9Wp9XavUbj2skKLhX+sJu3ceDBXQqeSA/qprvEb9jO9suuIYdNLI14W7+2lcpq 1a8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=NGxIPaAH1HXnrFlvvSMPHE0e2JP++nXqDH14W6XhZxY=; b=p2LgNqG3f8ut7HLqwyqwX77+eUl1WtfspJU2grURb48o53uQbfp5/u7oSFZPno02r+ M/wUYkh2L30NdqCjIeUjrAI8YY/iyHniVQ/4Dq7oSV3fBE9zmEX9iQGYEPQBrRUPGROC FKkFt9Tpq3ZsTwzEcOC/Or0F/LFylr6v0djsCyga1vR4ib5Vt71BTRJZiLQSNPUnSurj l86IiyTx+9UPWqbA9ZIV6O392TrE1lzMVBN+PZSXCK2Ip7i/hSrJ8fD8SrMKlg5z+Ilr IQbsXPT/THxubue//jQabmQ8BfOkSDJdDbTkMs3zlyp3sr5FWSY4FnFx4bC61sLC//FL rONg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=XDeE+SI+; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id xh10-20020a170906da8a00b007c1572c3efesi6696683ejb.846.2022.12.25.22.02.16; Sun, 25 Dec 2022 22:02:17 -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=@intel.com header.s=Intel header.b=XDeE+SI+; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5ABDB68A5F8; Mon, 26 Dec 2022 08:02:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7FE1C6880B3 for ; Mon, 26 Dec 2022 08:02:05 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672034530; x=1703570530; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=a19Q3fzTIa513qQintKW5SxPDCV1v2zokMbcHR0rdrI=; b=XDeE+SI+xqZlBX9CNJzTnW/xdqObvPugfFhpRVeRp0L8xq6eU/TFrJoS PpdvCgkdOXYMrD/AvP0ttfdCTlOVW5ITPfB8BnCpsM4V8aEPOaTFxPnct ++pyvSmOfbeh4ESY77U71fiefNJUHdE2AqtmSZz00cRd6Y1sFPN/Q/EVF J7wSKYBXEfOZnGK6gBWKgnCriDITMPMNGjWlRk/UOc5AbVvz66xZtXlgp zyPvM/nckCnrgfTbmHhmcrK+ZHt7R2yf//lPNuwu7wwRxw/Oltbw1aFFR /jXa0YCDz2Pd+5BdcsrdR9vLa9d0knsmdJjwvqrAZVCiZZzPimnN7/tXl g==; X-IronPort-AV: E=McAfee;i="6500,9779,10571"; a="322503340" X-IronPort-AV: E=Sophos;i="5.96,274,1665471600"; d="scan'208";a="322503340" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Dec 2022 22:02:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10571"; a="685088939" X-IronPort-AV: E=Sophos;i="5.96,274,1665471600"; d="scan'208";a="685088939" Received: from wenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.4]) by orsmga001.jf.intel.com with ESMTP; 25 Dec 2022 22:02:02 -0800 From: wenbin.chen-at-intel.com@ffmpeg.org To: ffmpeg-devel@ffmpeg.org Date: Mon, 26 Dec 2022 14:02:00 +0800 Message-Id: <20221226060201.2081722-1-wenbin.chen@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] libavcodec/qsvenc_av1: Add low_delay_brc support to av1_qsv encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: f8sOZTi4UK2F From: Wenbin Chen Signed-off-by: Wenbin Chen --- doc/encoders.texi | 5 +++++ libavcodec/qsvenc.c | 4 ++++ libavcodec/qsvenc_av1.c | 1 + 3 files changed, 10 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index b8051cda3f..543b5e26a9 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -3850,6 +3850,11 @@ Extended bitrate control. @item @var{look_ahead_depth} Depth of look ahead in number frames, available when extbrc option is enabled. + +@item @var{low_delay_brc} +Setting this flag turns on or off LowDelayBRC feautre in qsv plugin, which provides +more accurate bitrate control to minimize the variance of bitstream size frame +by frame. Value: -1-default 0-off 1-on @end table @section snow diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 514a1e8148..f5c6a164bb 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -537,6 +537,7 @@ static void dump_video_av1_param(AVCodecContext *avctx, QSVEncContext *q, av_log(avctx, AV_LOG_VERBOSE, "WriteIVFHeaders: %s \n", print_threestate(av1_bs_param->WriteIVFHeaders)); + av_log(avctx, AV_LOG_VERBOSE, "LowDelayBRC: %s\n", print_threestate(co3->LowDelayBRC)); } #endif @@ -1090,6 +1091,9 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) q->extco3.MaxFrameSizeP = q->max_frame_size_p; q->extco3.ScenarioInfo = q->scenario; + } else if (avctx->codec_id == AV_CODEC_ID_AV1) { + if (q->low_delay_brc >= 0) + q->extco3.LowDelayBRC = q->low_delay_brc ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; } if (avctx->codec_id == AV_CODEC_ID_HEVC) { diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c index bb9ad16927..1e7801fefe 100644 --- a/libavcodec/qsvenc_av1.c +++ b/libavcodec/qsvenc_av1.c @@ -110,6 +110,7 @@ static const AVOption options[] = { QSV_OPTION_ADAPTIVE_I QSV_OPTION_ADAPTIVE_B QSV_OPTION_EXTBRC + QSV_OPTION_LOW_DELAY_BRC { "profile", NULL, OFFSET(qsv.profile), AV_OPT_TYPE_INT, { .i64 = MFX_PROFILE_UNKNOWN }, 0, INT_MAX, VE, "profile" }, { "unknown" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, VE, "profile" }, { "main" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = MFX_PROFILE_AV1_MAIN }, INT_MIN, INT_MAX, VE, "profile" },