From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 85E55425FF for ; Mon, 21 Mar 2022 05:04:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1185468B14F; Mon, 21 Mar 2022 07:04:10 +0200 (EET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F11636881B1 for ; Mon, 21 Mar 2022 07:04:01 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647839047; x=1679375047; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=hbwZ7ipw0xNLAzIE52AwizCQKc+A4j2N2IcAbANEMOQ=; b=nmcw8WmD6xKN89UhVOkgGTFx05gwNxXYiijqlejtYoAkiGgp1jTbV+1Y 9mZ7ZYGRxCLvBchjhhFetKeLI1J/mWml+sbJxyhVa1HJE8gUItHIaIL5O G3XhhQrGtrm6hB5wX8ysEE54ixctSh9PXvLrT2dlIC16spx6xDa38NHoQ kAPufWDBFgMYM4LXprI1CyVql4huelcJyct7ivVZQ0/0eQ70IFCV9wrNW kfMVYrKSU+1zIYUXgc0Oy2XHDfG8CaEBiwaIwFqKlWM2u6f/j1Woraqui TwpG1hADmWygibxd9zIeyLvcCN1+Stb0h4ijIlPLTxkvcQe6KuiHQ65bC A==; X-IronPort-AV: E=McAfee;i="6200,9189,10292"; a="257659420" X-IronPort-AV: E=Sophos;i="5.90,197,1643702400"; d="scan'208";a="257659420" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Mar 2022 22:03:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,197,1643702400"; d="scan'208";a="559701598" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 20 Mar 2022 22:03:59 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sun, 20 Mar 2022 22:03:59 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Sun, 20 Mar 2022 22:03:58 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21 via Frontend Transport; Sun, 20 Mar 2022 22:03:58 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Sun, 20 Mar 2022 22:03:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vv9hQ0YYUcj9ukbFWdHBme0yuCD+lWQ+mSnilkaK3etF0+a9Dql1m9ZmhFkdvXXN7Sap9QOz561+1cbwckzUaCFveMPOOWAoaeJyiB5Whop1p4Tt2c2kcvNMctFkQ6fI8uqlhuGYFj8mGfQ8/EblQGoFahnCpvysI4FAEFzsiox4Tvuw7HSs5r8/5xZAMq3BieTUy+p+pbf+a++un8OzcMA6gBb1Zf7GFH83YFK4jMnyNTNx8Cn3HMFeTrq6pPW4aZ0q2iFcaPKNl67NPFcuD2C9watGZYii64A1aI3JLm4DdteyRDaCWC8fgli/8d1k+x+pLFKBazvq3exN/dbV/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hbwZ7ipw0xNLAzIE52AwizCQKc+A4j2N2IcAbANEMOQ=; b=fyYhIKLlIiT8W1AHxuYavFycxhVjZv4YIlBM+o+RB7Qr6/Ikyruwszj7v0Kbh1KZGEZINNxqTkBHx2eoC4Z8g8zqTxSqFN949fjDU855NSjE+Ip7AMAJHeDH39rafpv2HT7hEu0FclrbuDBXcjiNAUfwNim2IkZmAL/ug0qNzIFXIFYNTank9Pa0ZRgsAee1j8NpB3ZLQcvLJfLNexOtwAJ2p4IEd4MupFQMlTCzgg9BjSRCDpOIGafGtI5Clj/Qm0gMkJTSSTwDgZimNO19Gq16S0chSln1DNKOOPHmuEtVASc9K8XkN83+9m0bqYLpl6nTTXhOmG6QXAjIO0eX1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by BN9PR11MB5404.namprd11.prod.outlook.com (2603:10b6:408:11d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.15; Mon, 21 Mar 2022 05:03:54 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::c0b8:e06a:3d29:da25]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::c0b8:e06a:3d29:da25%5]) with mapi id 15.20.5081.022; Mon, 21 Mar 2022 05:03:54 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: enable LowDelayBRC and MaxFrameSizeI/MaxFrameSizeP for more accurate bitrate control Thread-Index: AdgkSmbmThki2vGIQD+K13kXSRrnKAYlqfUA Date: Mon, 21 Mar 2022 05:03:54 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 682ddca1-c809-4df5-5f15-08da0af832d5 x-ms-traffictypediagnostic: BN9PR11MB5404:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: itb1zmyz53NVWJEfGPh8uaYvQUMx+DJE6nc2RgzZgji5XcxfKtmilfqu1dsFJua2dSVIdpua4MEpwqE2hSF1wWQOgq8L/RwqgiV6rtCZJjV3zI8h1xkKhze5mKVZw5gQoCo4Fxc3K1E0aMuB/1Bu5fdhSoNArFDtWnrh2Kl1g5yfRBHbmqNzJavplxdNIp89P2SgEXk/LjXLzUCuwk72aYbOoY2IgbXX+Z2VtqRQyaTzl38v9bVqUseGx8Lh+1JYdgU3AwDfkeuLt3ZjK1WfkZH0ano4LOf1RLOxRedhlIjDkY0U4qxd6RfQCm05fGVRip3RWfUUSsm3GKZoBFEw3xicUrIIzNDocweyTJy4V+A0JURFsKfDAKYb10+YYFZx83IfrTOpAoPv4kXR80rcnSnsazEoheOVRKAgXF5SgjAX3HBQud78uZzH9GLf4Py+wT3eO0AEROlv8XgrrWuB+MpJx1pD3f2ilbvRF/vHbPQ9i+y+7UgGSuijNvIHY0GN2xZrIQRbrVUpvi41a6ppJs+Ur4mP244IWlKpCOCyJia+EFOnPcTrRP49dv7Pvbm40+JipNELwJXQLB8/Jn3iarf7g5VWPFGuwI4a+54k0Vph4o3/XfDmNiBeWp+GecB3lXluSI2LqSk9VTnLNx+S42jQneIwILYgWvjGLSV4SZGwH646l9wB6o2G7/9NyRR2h0elAx2GSTQO6f0B1TeX8ubHSvMw9KtIx5vdyPK1c92Ax2d2mFdEG9UzOpvS2OIJGcCgkSMEUdnfaGrEm4wKPW69Rb6L41SP/JE+IvpCz1wn0R1rVDtHepk4nSsnhzQ8 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(8936002)(5660300002)(38070700005)(86362001)(38100700002)(82960400001)(122000001)(2906002)(83380400001)(316002)(2616005)(107886003)(6512007)(26005)(186003)(6506007)(6916009)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(4326008)(8676002)(91956017)(508600001)(6486002)(36756003)(966005)(71200400001)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VnJSajZ5UUQ2V2k0a2c0OGp0NTBKZTlhbzlhWFRkU3A3c0wwdk9vUWNqcTZ3?= =?utf-8?B?U0NHTENPYVJic3lvVkVKQ1hDMFRsZnk0clZFZHZDT2tvcHQ2bGxUYjNpbmFQ?= =?utf-8?B?NU91c1lYRW5DM0h1YnpXSUtMSlF1Uzk3dklWNXhHNkZKU3NpUFZQeG1zb0Yz?= =?utf-8?B?UnYwU1YvN2JyUnI0YXZQNjdUcUpmRE81Z0RYMzJ1WDZlNkhSYllGS1JheVBU?= =?utf-8?B?QUdLVjJjNEd3ZUcrMWtaMFMzbGt1V0JIbUtJc0gyRUtSQ0FlYzcwdnZ1V1p0?= =?utf-8?B?VUhRKzJoc1lEQ21wSVNmWEp1YS84aDgwOURXMDZFb1hwbjMwc3ZObGdQWWRm?= =?utf-8?B?M0JPYzdKM2RhaXNhbXo5MVFSOVUwRVJUWWNIUWpIUVZIZjZqRXdsZFIyWUJZ?= =?utf-8?B?d0xSMHZicDFVLyt2ejZaUUxXNmRnVHc0Qm94eWpEWUlLYkcvZExudHVkdS9N?= =?utf-8?B?NENRakN1RXN2WU5ya2pBejk2MkhrSzhrRHpGTkVTWTRJNWZHNG1uZmNSQ00z?= =?utf-8?B?b29vblJUdWpIMDg3ZU5iUFBuUTkxM2t4dUY2b0tORVVUeCsxcDZJUFhqUm9C?= =?utf-8?B?QVc0UkU0SWZMSEg0MkVKZ2FhajJMRlJWNk1PT1RkVncwWC8zNzRlNnl6bkdp?= =?utf-8?B?MENEbVR5OEQyS3RnUFlmTTdLV1hvSmZhNzVySjdSRm9jRmxmMlZ0eEpMR1Jx?= =?utf-8?B?M0s0OTB0ekYyRWRualVxOTQzNU12d0xaRVArdTVMYkNCK29zTG1nNWZzWDA3?= =?utf-8?B?b0V0bEVaVFRURURVNTQzVkQ1NmZaZGwvbm5Sbkg4UDByWE96NXZlcmJpTjlC?= =?utf-8?B?Q0c5WGNRaG1HRUZUNzM3aWh1ZFFSTkljaDNaUEc2c1FKSmlhR2Q5MWQ1VktR?= =?utf-8?B?V1ZmNHRlODh6djRDbklYZUNqM3NZYm1aSkpFMVdYSFlUMlpQczZLRDErekpj?= =?utf-8?B?cWNNTGsxbGJpSGNjQlhDMWplblVSbTRjSXRxSFNOS2FkU1JSWVROMkRMaHkv?= =?utf-8?B?QjY2MlluSnNFbTB3ZHZlQ0Q4NlRhcmZmNnJ5MElteXdyZ3pIL3kzdldsdStv?= =?utf-8?B?VjdpMFZyMXRwQVp3WUxTaUV6NnRWSi9PUU41NWpSb0N2c01HbVg4K3pGUDli?= =?utf-8?B?bHVqdUlvWnJPQWNZeEt4YXRTMzJ6OU1aTTBpNlAvZWtJemlIeU9ZNUVoNnhu?= =?utf-8?B?WW9tOWRkVTh6ckZVWlVPb1R3dzd4L2ZEUGhmQ1NpODhRRnllVVQrVE5iTEFl?= =?utf-8?B?cGFsT1grMnB5dDEzdGU0NTBoZWRGNVVZc3FEOThjWVZnWWt2MzF2eWV5V2Ns?= =?utf-8?B?emNMVk9rMk9talIxWGRWTDRHRnhDVC9mcHlJSTIycUF1dXJEd1B5ZVlXeGxL?= =?utf-8?B?aEZicUlTR3JUM3lEZElBMFNEUjlhZXZwankvVkZhaU1VckJtQzBxSG1ISjk2?= =?utf-8?B?UWZ4SEZvWi9UVm5oWnc2UThZSlJsRHloUDBYN2FKaytTd3VLbHlwR0drNDNX?= =?utf-8?B?aTBDd1VBKzJzTFA1blJzTnJtQTBTOEtSMXllVS9sem1XQzY2Y24vRUp6T1g0?= =?utf-8?B?WnZIcEd1ckJDVHd4SVIwQ2I4cytHUGxSakljMkh2NVYrZ0MzZmpGaStnNUxv?= =?utf-8?B?dFI3c1VmcnZaSnlYdnp5Z2tTM2NzMEdBNVREZDErekpVR21ubzBlWnJRV1Qy?= =?utf-8?B?UGV0bmJkME5UWEk1WVlwVVFwUngvTEpHaStIb09waGUrWmViWWhaZzA3YWRy?= =?utf-8?B?bkFkMnBkQjd4eHd5aW0xR3oxaWF5N2Q3QXJmMFo3QUViQUlRSkdPY2s5enVn?= =?utf-8?B?NytyUGl4TUxHMEJpL2x2RWNBOHdnQlhLdTdZaGpUWDlaOHJxM2lrak5SM2x6?= =?utf-8?B?cGp0ajNjeUsxN0lwQ0EyTklTTWkvU04rcDhSdkM3UnQ4U2xhMG54M2YwR21a?= =?utf-8?B?VkxUNnh3emFJSGJRdXBzc1oyc2YxQ0JRQnJvaHNkalVMaVVrWEhpTFBQeldn?= =?utf-8?B?RGEralBNVDd3PT0=?= Content-ID: <10723BB750B5244B91659468843EE697@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 682ddca1-c809-4df5-5f15-08da0af832d5 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2022 05:03:54.6264 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: crxyyO+3kWIUIiR8lNVZUqd5D8IfeTaFZBuh1LM255/56CxxDUts3TjDFnbbBzyfp06k/Jx9Er37S3udvHIxYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5404 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: enable LowDelayBRC and MaxFrameSizeI/MaxFrameSizeP for more accurate bitrate control 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 Cc: "Ermilov, Dmitry" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On Thu, 2022-03-10 at 10:11 +0000, He, Fan F wrote: > Feature introduction of LowDelayBRC, MaxFrameSizeI and MaxFrameSizeP could be > found here: > https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md > > Signed-off-by: Dmitry Ermilov > Signed-off-by: Fan F He > --- > doc/encoders.texi | 26 ++++++++++++++++++++++++++ > libavcodec/qsvenc.c | 17 +++++++++++++++++ > libavcodec/qsvenc.h | 6 ++++++ > 3 files changed, 49 insertions(+) > > diff --git a/doc/encoders.texi b/doc/encoders.texi > index 1bd38671ca..47c8577e09 100644 > --- a/doc/encoders.texi > +++ b/doc/encoders.texi > @@ -3264,6 +3264,14 @@ Enable rate distortion optimization. > @item @var{max_frame_size} > Maximum encoded frame size in bytes. > > +@item @var{max_frame_size_i} > +Maximum encoded frame size for I frames in bytes. If this value is set as > larger > +than zero, then for I frames the value set by max_frame_size is ignored. > + > +@item @var{max_frame_size_p} > +Maximum encoded frame size for P frames in bytes. If this value is set as > larger > +than zero, then for P frames the value set by max_frame_size is ignored. > + > @item @var{max_slice_size} > Maximum encoded slice size in bytes. > > @@ -3280,6 +3288,11 @@ Setting this flag enables macroblock level bitrate > control that generally > improves subjective visual quality. Enabling this flag may have negative > impact > on performance and objective visual quality metric. > > +@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 > + > @item @var{adaptive_i} > This flag controls insertion of I frames by the QSV encoder. Turn ON this > flag > to allow changing of frame type from P and B to I. > @@ -3392,6 +3405,14 @@ Enable rate distortion optimization. > @item @var{max_frame_size} > Maximum encoded frame size in bytes. > > +@item @var{max_frame_size_i} > +Maximum encoded frame size for I frames in bytes. If this value is set as > larger > +than zero, then for I frames the value set by max_frame_size is ignored. > + > +@item @var{max_frame_size_p} > +Maximum encoded frame size for P frames in bytes. If this value is set as > larger > +than zero, then for P frames the value set by max_frame_size is ignored. > + > @item @var{max_slice_size} > Maximum encoded slice size in bytes. > > @@ -3400,6 +3421,11 @@ Setting this flag enables macroblock level bitrate > control that generally > improves subjective visual quality. Enabling this flag may have negative > impact > on performance and objective visual quality metric. > > +@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 > + > @item @var{p_strategy} > Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need to be set to 0). > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > index 9b71487666..d5e2c5fb32 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -374,6 +374,13 @@ static void dump_video_param(AVCodecContext *avctx, > QSVEncContext *q, > #if QSV_VERSION_ATLEAST(1, 16) > av_log(avctx, AV_LOG_VERBOSE, "IntRefCycleDist: %"PRId16"\n", co3- > >IntRefCycleDist); > #endif > +#if QSV_VERSION_ATLEAST(1, 23) > + av_log(avctx, AV_LOG_VERBOSE, "LowDelayBRC: %s\n", print_threestate(co3- > >LowDelayBRC)); > +#endif > +#if QSV_VERSION_ATLEAST(1, 19) > + av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSizeI: %d; ", co3->MaxFrameSizeI); > + av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSizeP: %d\n", co3->MaxFrameSizeP); > +#endif > } > > static void dump_video_vp9_param(AVCodecContext *avctx, QSVEncContext *q, > @@ -988,6 +995,16 @@ static int init_video_param(AVCodecContext *avctx, > QSVEncContext *q) > #if QSV_VERSION_ATLEAST(1, 16) > if (q->int_ref_cycle_dist >= 0) > q->extco3.IntRefCycleDist = q->int_ref_cycle_dist; > +#endif > +#if QSV_VERSION_ATLEAST(1, 23) > + if (q->low_delay_brc >= 0) > + q->extco3.LowDelayBRC = q->low_delay_brc ? > MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; > +#endif > +#if QSV_VERSION_ATLEAST(1, 19) > + if (q->max_frame_size_p >= 0) > + q->extco3.MaxFrameSizeI = q->max_frame_size_i; > + if (q->max_frame_size_p >= 0) > + q->extco3.MaxFrameSizeP = q->max_frame_size_p; > #endif > } > > diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h > index 2bda858427..5e07580289 100644 > --- a/libavcodec/qsvenc.h > +++ b/libavcodec/qsvenc.h > @@ -91,6 +91,8 @@ > { "veryslow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_TARGETUSAGE_BEST_QUALITY }, INT_MIN, INT_MAX, VE, "preset" > }, \ > { "rdo", "Enable rate distortion > optimization", OFFSET(qsv.rdo), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, 1, VE }, \ > { "max_frame_size", "Maximum encoded frame size in > bytes", OFFSET(qsv.max_frame_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > UINT16_MAX, VE }, \ > +{ "max_frame_size_i", "Maximum encoded I frame size in > bytes",OFFSET(qsv.max_frame_size_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > UINT16_MAX, VE }, \ > +{ "max_frame_size_p", "Maximum encoded P frame size in > bytes",OFFSET(qsv.max_frame_size_p), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > UINT16_MAX, VE }, \ > { "max_slice_size", "Maximum encoded slice size in > bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > UINT16_MAX, VE }, \ > { "bitrate_limit", "Toggle bitrate > limitations", OFFSET(qsv.bitrate_limit), AV_OPT_TYPE_INT, { .i64 > = -1 }, -1, 1, VE }, \ > { "mbbrc", "MB level bitrate > control", OFFSET(qsv.mbbrc), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, \ > @@ -102,6 +104,7 @@ > { "forced_idr", "Forcing I frames as IDR > frames", OFFSET(qsv.forced_idr), AV_OPT_TYPE_BOOL,{ .i64 = > 0 }, 0, 1, VE }, \ > { "low_power", "enable low power mode(experimental: many limitations by mfx > version, BRC modes, etc.)", OFFSET(qsv.low_power), AV_OPT_TYPE_BOOL, { .i64 = > -1}, -1, 1, VE},\ > { "dblk_idc", "This option disable deblocking. It has value in range > 0~2.", OFFSET(qsv.dblk_idc), AV_OPT_TYPE_INT, { .i64 = 0 > }, 0, 2, VE}, \ > +{ "low_delay_brc", "Allow to strictly obey avg frame size", > OFFSET(qsv.low_delay_brc), AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE > }, \ > > extern const AVCodecHWConfigInternal *const ff_qsv_enc_hw_configs[]; > > @@ -173,6 +176,8 @@ typedef struct QSVEncContext { > int vcm; > int rdo; > int max_frame_size; > + int max_frame_size_i; > + int max_frame_size_p; > int max_slice_size; > int dblk_idc; > > @@ -212,6 +217,7 @@ typedef struct QSVEncContext { > char *load_plugins; > SetEncodeCtrlCB *set_encode_ctrl_cb; > int forced_idr; > + int low_delay_brc; > } QSVEncContext; > > int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q); LGTM, will apply -Haihao _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".