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 0DF1742958 for ; Wed, 6 Apr 2022 11:59:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 28BDC68B278; Wed, 6 Apr 2022 14:59:45 +0300 (EEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD5AA68A5B3 for ; Wed, 6 Apr 2022 14:59:38 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649246383; x=1680782383; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=RbF1QcGD4KvU2Dez/o/jWDX0XDZAf/e1p7kGujF6sEA=; b=ZDi8tBNRLYym/o0wA4YWUTeLSO8MFCoXbknghw0ZDkiI4F/URgE5kU6a FuILYHr6GOv5sSxN9yHfig7Dgz9xLPD/IhCa2SqcsUU3Amw0NxBW+/AqD 6vjyp/X5dVN2xU/Lzs3or6fl+VEBG2/jvmRMHinhS8uG73D4XGDtA1VMW +pbiekAPlsZcp4am4AeCbMRLS71AC8mRDxajT4j1D1wXRtRmyNEDebFSK PS9OLHQT7HGBgu+6sfLLa8ftYFqbH6Vp2kBvHlTgHbn127uVOUnQ9+VzX CUouTec3KfA7290z6wLVW+/hRvqlegglHsgobAluOOoppbVtgW131LHGh g==; X-IronPort-AV: E=McAfee;i="6200,9189,10308"; a="258615068" X-IronPort-AV: E=Sophos;i="5.90,239,1643702400"; d="scan'208";a="258615068" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2022 04:59:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,239,1643702400"; d="scan'208";a="505702462" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga003.jf.intel.com with ESMTP; 06 Apr 2022 04:59:36 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 6 Apr 2022 04:59:36 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 6 Apr 2022 04:59:36 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.103) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Wed, 6 Apr 2022 04:59:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jRzg3v0KNwnJ6N4Px8eNe4fJ9lqQHAZEmTFbMnljPOlxVj2dEue7zabi3wq9SmHKNp4XQANPuhZ0pV0ryFbmojBLGxLQG88AsXPed6li2Zm4wuChaz1updiX01SjHwGk1IdrvV0Thwo2zp7/SbmPsVHsU2KKKzxgpR+APyLnBAYkQnAh8828L2uExxrxu6KCprhEONCBV/8gTk37Q/3viqzShavmGa6o5hKhxEVMg2UvMDdAtP56faS/CxXjyEuH1Y/9QjT0KT8CQ/PXiOQ81n7r6vCb6d7vtP8fvNFrchzA1L9Ffi710l2JcOYGKkMTMC4ZrlrTpyQQmjw2w345XA== 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=RbF1QcGD4KvU2Dez/o/jWDX0XDZAf/e1p7kGujF6sEA=; b=BS6arcSpTjoZy1qDTf9MiPVZu9QnF2m+H692gxx9siO/7WNzx37h/yvmsEkYmUZvNfg5JbpgNPLMlugT/PRNVc9my6AdzVwk+PtHKqIUANzrcB9TqXWwWmka0FIP2CYYs60pTFZrBuVPIixUf9tObam54zcJxNfLbnRB5+ggIOdr4RwwW0o/tWTChq3gs8h8/2VdN6bIazCxJX18mik+NsgZTJql3gocWchVnE7Woc4h/AebqhBebAF0X7Czao9ZhbZyeV22mfldxWaBw0OK0ubHifFk+s8h7ZsijonFWeT2EyqA/859zw4LxVACgHSG6nEria2M3bSQSjSeDKdjww== 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 BL1PR11MB5480.namprd11.prod.outlook.com (2603:10b6:208:314::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Wed, 6 Apr 2022 11:59:29 +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.5144.021; Wed, 6 Apr 2022 11:59:29 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: enable LowDelayBRC and MaxFrameSizeI/MaxFrameSizeP for more accurate bitrate control Thread-Index: Adg8/h16TOMj4bDYSkaTQaBdh6zHkAMr6bgA Date: Wed, 6 Apr 2022 11:59:29 +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: 2cc990b1-2034-4784-ff1c-08da17c4e7b5 x-ms-traffictypediagnostic: BL1PR11MB5480: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: WzM/9tOX6n5TTJeLYwom8r7wvmVeQeuKD3MBqXVaiYEv4iv8ZSWg8WJqh48URcGaEBdKoEcMmq+6RXKUXryU6UhWSZyBHHiC4efqfHwpZRcUaPHZum++2XIF+hD3UK0Cxr90WhWGjqp969vTi9mf/3pyVMdW/2u9tq2vXcDa5+DRIHnGc/gyBNUTggUW/Tgu1rfR0TfuiWtSh1j36sGFBeP1ayWY5v/Ezbs62DdZ8Trfo8PbnKcfCW+F0JwMn8PvS+/9LsKT93oei0euBrP4trRD0fzwZNa5D/j1NxW4mehO71XnbveFJFqQN7RdLDtszzyQpp3kSlJxBSpndGAKQ74fwAYRU9s6OqL+9J8Y5eN44QThntKFvW55FU+P0ZAcFp4Jzwus/PB+RAzpyHU2i6QRXbonvoKMHrRxY71i8oKF6OQUHnFMwzUGPpGlTMdy8ypwlZu2F5vd+Opu9fw5M+O7em71k6C1+E4Q39p6lkdxfvKLL9N+xpM5Xv/Od4zfhDLqU3ufX8s6RI3Fr33HtI4k0zq4HfvVmaPeJ0rmzmpcvNE7J5ygT4TR2VQ/gmE+JoVTdvw3saRNGEL4U5gKIshFu9hhNJjcwiwqNghOJtYYeigg6RFdQnqYzDeiA8Kfr83qLYXRRkn23e45VFc3R/jclbB3jZuq6jMAF1+smykkZpdhIoz09ucSPp8PVzmRjaDpSbefjKPRfT68RHSJ190evmWj+EF1QPZrFNSdqeHR3Ok/aDVSu4Auu4jB7E0dhCsn1BVA78flqyiOv/qZJb/i6ddTpA/Aa88uu3udpx4WHesPZK1s6Mm4AuDgSjzg 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)(71200400001)(38100700002)(6512007)(508600001)(76116006)(82960400001)(6506007)(966005)(6486002)(8936002)(36756003)(186003)(6916009)(26005)(2616005)(107886003)(2906002)(316002)(66556008)(8676002)(5660300002)(64756008)(91956017)(83380400001)(66946007)(66476007)(66446008)(86362001)(38070700005)(122000001)(4326008)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d3hYOUlkbXlTd2tiVnpPYkZxS0ViVCtyK3BoeTBRcm9YSnQvTUcvZ2VuNDEx?= =?utf-8?B?YjJCS3FJN2JCNkl6b2pmM3VIUGk5cWVOcFlueDkvSEFJME9CRHpRbHMzZ21n?= =?utf-8?B?M0dxa3dDVWdmb2ZOUE80QythYUYyNUQxU0RvUXRoZlF3emVqRHIwaFZWT0pJ?= =?utf-8?B?d0xHRE5kTmxWNFlmVm5xUFJWUVdTV095VUlVN2xsdHdLc2wzdy9TRTRyeDNm?= =?utf-8?B?bXo4enlNUjdkSjl3RHNkR0VEdG02ZGhZK3RZQ2t0NEo4WTBwdnRGdkFBc2xv?= =?utf-8?B?eXFoZG96YVRxZ0dhanQ1elN2bXdjV1lxR0VvTVdob2xBZ1Jab3ZUMmM2RWhS?= =?utf-8?B?TnpjVzRWMW45UW16NHR6dXNIUlFIMFZGalVld09LdkVKT0xyeEhqYUt5M29Q?= =?utf-8?B?dm9ZQzZsT1NsQndwRU41dW94TTVjNXk1U3AwbUd5VlgwcVJaU1J1YnZ6aTlI?= =?utf-8?B?ODZ5c1VjbEEyalBrRTJ4bFpYZmNnbko1NWxEUWZ6clZJc0ZrS3llR2w3b1NT?= =?utf-8?B?eElSVDRmd2dINGt6OXphdjZWSldsZWQyVzdhU2dwbDVzTGYzNWNYWnR5d29Y?= =?utf-8?B?RDg2WkVpK2RNQWtlVUsvWnRUd0hHOUwwV21vdVloNWpxL20yc3BHcCtuZkFp?= =?utf-8?B?SVB4Z1V5Q0J0ZE5pYjZBcmZEOVJkNnRveGpURHJyVHhrZzhla0t0ZjhzVkRL?= =?utf-8?B?YjByaE9EbkNEZTluenJPSUg0eWNqMzFqWEdCdjZiV2ZWQ0paN3JxclhBMmR5?= =?utf-8?B?NkdueTE4ZDlDU29CejdvZ3ZIVGFGdGh1VUVCK0tUMG1pRjJqOTd4NHROK0JZ?= =?utf-8?B?RWJiUUprSmhNTzhzWjhrSTBlZFN5S255UXdRSnBpVDE3K0xxUVpKZ3huU1VU?= =?utf-8?B?dXRKUWVhVlFMWkVBcEd2cFJwT25pM3BEU3VYMFRrU2h0emc2OWxCTmVobUJa?= =?utf-8?B?U1pIMzhybnB6UURQTVF6NEZhaWNMVmFscEF0MGlwUnlKRGxuL0w0NXhqOHBh?= =?utf-8?B?YkRQaDIzSmsxd0YxdS9leXVETDduUktxSU5aSkk4QzZnWVhJTGlMQWxDd2dV?= =?utf-8?B?MnhaRktBVk1abDF4b0NLalJiUGxYUnFxNE9CRDFMejVyaEVVc29kTFhGY1lX?= =?utf-8?B?Ti92Sk5TQlU4Q0RxQUcrMlJVcXFUb1dmVlkyamp2c2xrTm1QWXhQMTdQQkxU?= =?utf-8?B?bm0zWWlLZWt3cUlDZC9vcHlCSnVyeUhxRXZaTXgzL3ptNklVYkNDVGloWGU1?= =?utf-8?B?NmU1Ny9wZUluMHRPSURtaXp5R3NUYkZkNURXclRveTBhZUxSVmJ2YUNCVVR3?= =?utf-8?B?SXVuZHd5SHo1V3FoaENLYmt4U1JsQVlzR3c4RU9Fc01yRzRwL0dYLzBCMTI0?= =?utf-8?B?UU5qTnVjWE0vY3NuYXVlcEJ3YktmZWx6STUyRWZESXRtZHozT0NueVloMXNB?= =?utf-8?B?WFcwMTNibHZiMVo2dys3NE85OXR3by9FalA5YTdSSUt4TThCQTVCVDR0OUdt?= =?utf-8?B?T1VXUUFHUUJ3ZldnOWFZckhtSmVXOTFreXJGMHM1eHVzQWNVcXl2NXVFYjN1?= =?utf-8?B?Ni9Qb1ZScXhpaHlpZlUrTW84ODd4M1F0OGNNaWE5K1huUjJIdUtoWFdJOHc1?= =?utf-8?B?M1h0bG0wQnQ3bndyNzVUUFYyb2l1cXhTVWR3K3JOd1ZaWlJtWCtSQU9kcTVN?= =?utf-8?B?c1pDQWFmS0xHcUI1NHBCbjZ6QkpnM0JMbjdqU2p4Wi9DanJEMXNXN3Q0RjNz?= =?utf-8?B?Y1JscnZrVDRCRXVhSGY0Z0FHQ0hVZlZnVVVVdUJ5dzlzVlV5bmZnTlhEV2xX?= =?utf-8?B?dG1IdUg1VzlQOTZheUdlSCt3UUpQcDEycEZ5NmZod1R5Mkk2eVZ5SDZqOEJU?= =?utf-8?B?Ny9XNlY5TVNlR2RBL3ZvZktZb1U3c2IxMDZtLzBaY2d1ZkNFSE1mL21taDBG?= =?utf-8?B?emNxVmUraTlOM25rZUdRVTBkM3hFbXM4Uk45NW5scHUxcE1SY2xjNWNqalUv?= =?utf-8?B?QzJoZ1NpSXRnTlllRzdqbkRocnR5aUZXTzd1QUZDV1NiWDZTRmZwZzNSWlFK?= =?utf-8?B?S3JxR2hzN3VBVWZ6b1BhdHZTVFRlVkNnaWlsbDRGaE5rZDV0RjZITEV6NVhw?= =?utf-8?B?eWdvZHVselJLL1pPT3V0VSs5eHd0bWxEOE5vOWNieVlieEV4YzRCUnFqZFBW?= =?utf-8?B?UmU3aXNBQ21TV0x4aGVObTg4bEJXaStyVmx3QnRxWXFBSkJIM2x5WXlQTmk4?= =?utf-8?B?dTB1WkNkWER4cXZrWlM0MzZFVW41V21zQTFZTmRpcjFsaTB0cURGVGFYQzk4?= =?utf-8?B?QXFoMm1JS2dRRnl3SkplS1NaMURyWDZoOUs1aTNTcVBDclJRdE4wVVpVbVNT?= =?utf-8?Q?aFEuL3zRkmOMKf9U=3D?= Content-ID: 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: 2cc990b1-2034-4784-ff1c-08da17c4e7b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2022 11:59:29.3902 (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: TTSpVN027B+IkyVNS6/MIngaX68Pafuo02e9tqZewhnXZv/YJ3mszhCgds/ZJTKbyTRfj+zkqRtvbSdZ6d3bgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR11MB5480 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v2] 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 Mon, 2022-03-21 at 08:33 +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 | 10 ++++++++-- > 3 files changed, 51 insertions(+), 2 deletions(-) > > 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 55ce3d2499..d7441ac447 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -376,6 +376,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, > @@ -990,6 +997,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..cb84723dfa 100644 > --- a/libavcodec/qsvenc.h > +++ b/libavcodec/qsvenc.h > @@ -90,8 +90,10 @@ > { "slower", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_TARGETUSAGE_2 }, INT_MIN, INT_MAX, VE, "preset" > }, \ > { "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_slice_size", "Maximum encoded slice size in > bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > UINT16_MAX, VE }, \ > +{ "max_frame_size", "Maximum encoded frame size in > bytes", OFFSET(qsv.max_frame_size), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_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, INT_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, INT_MAX, VE }, \ > +{ "max_slice_size", "Maximum encoded slice size in > bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_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 }, \ > { "extbrc", "Extended bitrate > control", OFFSET(qsv.extbrc), 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); Applied, thx -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".