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 F35D440B2E for ; Mon, 6 Jun 2022 06:17:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 92FB968B5DD; Mon, 6 Jun 2022 09:17:16 +0300 (EEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A701468B4F1 for ; Mon, 6 Jun 2022 09:17:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654496234; x=1686032234; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=QDKAjQPh8LavlasEeld7520pOCrD1zsi0gHu6pcHtUk=; b=ipRbLB+teSGz2X8tDF1bBc+sQXtDgluR3lea38CVcvbJp5kdc4qPeI3W elXQbdCwKMeSn5fpjmdRW4Me5rwrapv2sVDBJQ17mu5WNMtCKYFUYnmr5 lHE77qVrQJRDVnkE1gn2dGPPjq8lPVpo0o7QTeqxwqw5ulHJkT5GpwKiX fAmctzX/DLbHsLa0EBo+/upMGmSbM1NALJlsgSyluh764cili9Mcdnq2R mN54iBbcD2kBNZ6qrcVMseFoVPn1Ed/IOs4ZaSELgTp6Dlmac7aZhgo62 DY7NFFCaYKpoxRQ/TvRVZlhx7xfh9Y7ajOloAp+nGAy3PdAxthHDl4zbK w==; X-IronPort-AV: E=McAfee;i="6400,9594,10369"; a="362971330" X-IronPort-AV: E=Sophos;i="5.91,280,1647327600"; d="scan'208";a="362971330" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jun 2022 23:16:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,280,1647327600"; d="scan'208";a="758431255" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga005.jf.intel.com with ESMTP; 05 Jun 2022 23:16:50 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sun, 5 Jun 2022 23:16:50 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) 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 via Frontend Transport; Sun, 5 Jun 2022 23:16:50 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Sun, 5 Jun 2022 23:16:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OXqc3XB+PVjgaiiaUvWsKi/PUpdOHqqoZ9ZK16Uhqk68To/gDSTw5T35d3lv11Ox8ZzCHgj5bsGTQxoQeK3ZOEIib8RXwDRzFv3c7+J2iBHwivP5riNnk2mWBjTjYmNWArPHVQpDHkgA3fkcxMD2tGBK06EcuBh8D7WsKTYpr4VPRqnFrJSdd6IS00SSnnQH2AfU6mSP/RI9syEvwpZNLQBe63GCJc7djOJG6b48dh0uonErT8UyCpYvOwZ68UkBshYYAaD7sDQB6DldpsQwW2wtOF8S1HOATF95w03Bx2zrz7iPgrcTAIX51R+SuA6nNN+tNX+WzeEqjiaje952WA== 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=QDKAjQPh8LavlasEeld7520pOCrD1zsi0gHu6pcHtUk=; b=gOFFxRsoK5Rk+uXfY6i7DTWRclksDs3GWA4WEA/JWwz6SgP4SxnmmEfl13IWZuQng/dEkR0MVSdxgkfL7obe2ljfGx218W1NNriZzoM6HxmGK7HG2kO+qOPkwPy4KjPQpUptQUc2zphf7Ah5CAbU3DuxvNm5O11w0pdOCz3NB2inatFNaJdrwnLVG+f/6anbXHVu5RuSIYATwQzzxEkNpOhWqvRMXSJfsSSlzHqn7iDiYg0CWDL+0GeWBDX1XCJfemgAfh/mNGHW9V7pqHU9/t4Cw1bhhRSSUPufCDiX3l/nN9cuWKxxbUNNtEsqX3CiaxSKg05vtbBbAkApsCHmAQ== 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 SA2PR11MB4827.namprd11.prod.outlook.com (2603:10b6:806:11f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Mon, 6 Jun 2022 06:16:47 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73%6]) with mapi id 15.20.5314.019; Mon, 6 Jun 2022 06:16:47 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v7 1/2] lavc/vaapi_encode: add support for maxframesize Thread-Index: AQHYYGB3/2XUVLhRkE2LD/HCpLsiPq0r1NiAgArzWYCAC1EJgA== Date: Mon, 6 Jun 2022 06:16:47 +0000 Message-ID: <563002a4b097007b0419a0cb9c3ec6967c15ca85.camel@intel.com> References: <20220505090715.2016246-1-fei.w.wang@intel.com> <442401147dead9124bfcbf38427db91c5b1999cc.camel@intel.com> In-Reply-To: <442401147dead9124bfcbf38427db91c5b1999cc.camel@intel.com> 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: 6ed72bba-cfce-4bcf-0328-08da478422d9 x-ms-traffictypediagnostic: SA2PR11MB4827: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: NVgZr9ruOScZBItzasV42fxb+iAAUOIxbjldcpYhqY2xnXEyy8+C4KeERRibnW2dbRmrKkFD37YmJtLcKWb5K4ZQoSsKn5RvMmYkHHc6rzoJs/oyA8vBW9r8g7Rm6gj/OgNJOy4o/i2ioUJ0LQXEIcR9Oao309nmVtE/2GDKnPANC/s2Ovx1p2kKgQcyQ+iHbYzT2CDLFgR0g5xp+iU6tncTjB49C0dBa4DvKJiSN41MTX7lCiwHTDS9SI4HpiTstJa1K53XFgEbTfQDAfuZkRGP31aPupitjDNOTDTiDGCtZ2BRFC/cV52RompLPxLsUb20Ca9NNofB1dQeKunRHbHII1hnl+eUcg1mByRjvMNbDQS2fA0P+zfOOh0DzV2Qsl4RGyy5lzLDSle/luGM3on6ZjchS41t6cF0zFBxOiUqTlz0MD4gqetJrfUy4zLhvgS3TrkQet2P6RqGfZF91YbIS83F9yj4EDHPdVZM0oPtBPKuY4RZNdI3PpSmx+yRVKZjNaX42z3LrwaK1rTudjx4JmCTsXZ1ZrHP6VZZKueYL1SGXGxGc0xJikwmdlBOdTjzIPOcIbEKLGaXYyOwfyUATGVYBKFeV2cw0j67BKwL32jpWe31qd8ljm/roH51RT3sbCfJtn04EHiC9da7KZCMcjnLr1frV1T05NdYMU/jFgxs8mtCP6z5bLRUXa8L3frNFsWDXmX1Tgd9mE0JiU2aLCd8PiwULYxWQK7g7iA= 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)(38100700002)(2616005)(53546011)(71200400001)(36756003)(6506007)(6916009)(54906003)(83380400001)(64756008)(82960400001)(86362001)(5660300002)(2906002)(4326008)(122000001)(316002)(8676002)(66446008)(38070700005)(107886003)(186003)(6486002)(508600001)(8936002)(66476007)(66946007)(91956017)(66556008)(76116006)(26005)(6512007)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QUd4ZkVLcmswVnZHdmNRK0RFMmdtcUo5S2MvamZheHVJdFN4dHplRmhiYUxX?= =?utf-8?B?LzloK21nVzF3R0NLTHRlLzdCY2cyZDVxWGpTRWdySm9pZGpkMkx0amFFRGVF?= =?utf-8?B?NFVIZDBEQk5scmR5VHNJYkpWcFZMbDZleXhGN3hyRnFWeEp0NjJvK1BnYStT?= =?utf-8?B?UFl6WE04R0U1S0Z2SGdUU1dXd3FaTS9xRHh3d3krcXA4YitMSEN1eTd2dm9N?= =?utf-8?B?VXlPSHExYjRITXFCMitRWFhMVi9pQS9Ja1ViNEswanVJR1kvOGRrdE1ESjh3?= =?utf-8?B?dnU1dHYyMWtaZE5PN0pnSGh5VEh4NWo1YUJFaUo1ZGE2dmVrQ2FNNUl6VjlB?= =?utf-8?B?M2pnWGFNNTY2RmN6U29LbDNNVUs0dTBRZEo1Qi8yektudnZyckdVNGZ5OFc1?= =?utf-8?B?MTQvMGhRS2RoaEgrZWFLcEhpM0hEWm9CTmNhdEJZTlRxZUZzRGRoZ1ZRT2hH?= =?utf-8?B?ZEpOa1RtdWRocDRCcUt4ME53dlZqMzVibkhUeXNkSVVIR2dvUG9CTHc1ZlZz?= =?utf-8?B?ZkthOTZ5WWFJMUhoS0VRWVJlenN0czI3a1VpR08yUnFZQkI5TlFNYUJJcVpE?= =?utf-8?B?S3dkeUNTWDA1MVRtazlVMnpCcEppN3dGZHI0ditJRlNHby9NMEVwNEtIWEh2?= =?utf-8?B?RVVyZ1dHUjFodjYycE5KRURmT0IrOE5uSG1SeEMrZnN2WWkrUVVQUUVLM1V6?= =?utf-8?B?OGhJRm53VXVaNUJxZjhjQkh0SE1ZUUFyRWZUT0ptKzJrZVU2QTlkSWtZMlhX?= =?utf-8?B?UDdBd2ZJMTcrS25uU2FUSElFdEhTZW9FWnJLUG5KWVF4dFc4WmJkUTYveXpo?= =?utf-8?B?SUFQZ2RVcUEzdStRV1FMaC8xZmpiR0s1U2w3aGZxRVgzaU9zb09FZ0pkK0JC?= =?utf-8?B?WkQwelF4TTNPTlRncFRmOVVXSWVtNGpHRzdFRHY1eVR2aC8zZTNEa25tdVQx?= =?utf-8?B?VVdTZ01vZzhtSFEwUDBWUTFmM3l6ZVIrdEhYbnBUQThOdENvMEZjTjh6YUE1?= =?utf-8?B?ZXBnZE5UalNSMkM3YlRQMnlkK3RYc1RXWkhxMEJiN1pJZlQ4MEl5VEFMeTBu?= =?utf-8?B?dWxVeERZTkZCbFI2ZStNY3Q4azRsMmdVL04vOFk3dDJwZzVGZWd0TzJ3L0RY?= =?utf-8?B?UGdicVBlbUlvUGwreXpHWnRaUHB3TmY5T1c2VS9objJGLytWM1VNUE0xWmJV?= =?utf-8?B?MU9iYnhtSUw3TXhaU1JoWGRxUEpmdXdOVGY5Um5iVUt3VUdVUjE2STJQQ3VW?= =?utf-8?B?Y3ZUeEU0akpNeW5hRGFnT1FTY2NaQ01HTnpMaTBLT0NaVDhZdnBCTFcybkRP?= =?utf-8?B?SWhkWldITmNCaDBBeTFkbUllckJ6Z3pPekpIb2tneGhBU2RpVThUd21ubkNV?= =?utf-8?B?QXdpdGtCbDd4cXVvc080bzh1UXRxQmdpMmdycldWUklpT3p4UDFlN1paVnNS?= =?utf-8?B?S3N1cFlRdGhDUUZPVkEydHA5ZHQwMWFLYmh2MjJRV2ZYQU1XZHRWYmVlMDVv?= =?utf-8?B?OHJlb2VlanE4ajNObno3MGdBZ0p1SHR2UnppMVVSLzJ3OXNxdlVWTVAzZmVG?= =?utf-8?B?SUhIb0grYVh4RTRGcW8xck42SnJSL2N2TUpkQkllWUI3OWRkRUJvVkFJdVlX?= =?utf-8?B?NWRndmJscEZ0Q1h3N3FRUjdaK21yRHVyOXNVVHozbHEvekdrS09hZ2Zic3Y2?= =?utf-8?B?dmxZaUs0TjI4NnhqM25NUk9mc2FhdlpJK01HN1A1anlTUDVBcS9WbDMzbnN5?= =?utf-8?B?N2ZiMHF3S0NSblp6MW0wZ2g0bi8yK3VXckRWeng2KzNrcUVXVXZjaTNBNUZV?= =?utf-8?B?aEZtOE10Zmk5ZndtTm9RdjY2T3JsQXpURG1MK2VLcG5jRVNxajhpOFJhNjE3?= =?utf-8?B?cXlyR211OXdBTkFmYTQzdGdPdGlzV1kvV21sZ1ROVmFzcVB6bC9YOTFPOFp5?= =?utf-8?B?c2M5Rk9pK0lLWUFDdnZ5SDJpSnB0OTJnL0F6dVdtYXR0UWFQeWJMVU5SSWl4?= =?utf-8?B?d3NDNWUrSFBOcFhlYm96Ykc1cUpaNHp5UWdTbnhlb0VVVWVkZHdwd3RTYWdu?= =?utf-8?B?Yll5M0RPWUh5emZhZG1OVTlod1JkcEdlaW95UGFra0l2bzNGK2JaQmVONlRj?= =?utf-8?B?a00xZXNzclZjNEladjZQSEJDRmphR1RXRTU0bGRhZXhnUDM3N0ptUVdNTmE3?= =?utf-8?B?TEtSTWlOc0FTcmJ0TlBXb3ZSV2ppc0dvTEdrL1M5VE41WDh3QU9JZzBJd3NR?= =?utf-8?B?L1p0NkVCZHZmTmdtSjRGamdJcXNRVkh0WVErVWt2aTJoSjlNRFFubFpXbWUz?= =?utf-8?B?WHpJam5RQUEvYmFJYjF5bjRBS3J2ZjdleGhTLzg2L0RLcS9BaUpHR0JHcFlB?= =?utf-8?Q?CsGsXFZzyzaXb0Pc=3D?= Content-ID: <6FB29C95F53D554BA6D554BBAB6B08A7@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: 6ed72bba-cfce-4bcf-0328-08da478422d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2022 06:16:47.1936 (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: N+F1nTwRYHXoEBDS7Zl+qE6rR7Q5fyMaUvYXP8G7aeqsp3Femwysy771HnPXOipWG7pqo0pre1xE4nfvtynsMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4827 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v7 1/2] lavc/vaapi_encode: add support for maxframesize 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: "sw@jkqxz.net" , "linjie.fu@intel.com" 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-05-30 at 01:27 +0000, Xiang, Haihao wrote: > On Mon, 2022-05-23 at 02:14 +0000, Wang, Fei W wrote: > > > -----Original Message----- > > > From: ffmpeg-devel On Behalf Of Fei > > > Wang > > > Sent: Thursday, May 5, 2022 5:07 PM > > > To: ffmpeg-devel@ffmpeg.org > > > Cc: Wang, Fei W ; Linjie Fu > > > Subject: [FFmpeg-devel] [PATCH v7 1/2] lavc/vaapi_encode: add support for > > > maxframesize > > > > > > From: Linjie Fu > > > > > > Add support for max frame size: > > > - max_frame_size (bytes) to indicate the max allowed size for frame. > > > > > > Control each encoded frame size into target limitation size by adjusting > > > whole > > > frame's average QP value. The driver will use multi passes to adjust > > > average > > > QP > > > setp by step to achieve the target, and the result may not strictly > > > guaranteed. > > > Frame size may exceed target alone with using the maximum average QP > > > value. > > > The failure always happens on the intra(especially the first intra frame > > > of > > > a new > > > GOP) frames or set max_frame_size with a very small number. > > > > > > example cmdline: > > > ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -f rawvideo \ > > > -v verbose -s:v 352x288 -i ./input.yuv -vf format=nv12,hwupload \ > > > -c:v h264_vaapi -profile:v main -g 30 -rc_mode VBR -b:v 500k \ > > > -bf 3 -max_frame_size 40000 -vframes 100 -y ./max_frame_size.h264 > > > > > > Max frame size was enabled since VA-API version (0, 33, 0), but query is > > > available > > > since (1, 5, 0). It will be passed as a parameter in picParam and should > > > be > > > set for > > > each frame. > > > > > > Signed-off-by: Linjie Fu > > > Signed-off-by: Fei Wang > > > --- > > > update: > > > 1. return error when fail to set max frame size. > > > 2. refine commit and debug message. > > > > > > libavcodec/vaapi_encode.c | 74 > > > +++++++++++++++++++++++++++++++++++++++ > > > libavcodec/vaapi_encode.h | 10 +++++- > > > 2 files changed, 83 insertions(+), 1 deletion(-) > > > > > > diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index > > > 0e2f5ed447..284ce29888 100644 > > > --- a/libavcodec/vaapi_encode.c > > > +++ b/libavcodec/vaapi_encode.c > > > @@ -365,6 +365,17 @@ static int vaapi_encode_issue(AVCodecContext *avctx, > > > goto fail; > > > } > > > > > > +#if VA_CHECK_VERSION(1, 5, 0) > > > + if (ctx->max_frame_size) { > > > + err = vaapi_encode_make_misc_param_buffer(avctx, pic, > > > + VAEncMiscParameterTypeM > > > ax > > > FrameSize, > > > + &ctx->mfs_params, > > > + sizeof(ctx- > > > >mfs_params)); > > > + if (err < 0) > > > + goto fail; > > > + } > > > +#endif > > > + > > > if (pic->type == PICTURE_TYPE_IDR) { > > > if (ctx->va_packed_headers & VA_ENC_PACKED_HEADER_SEQUENCE && > > > ctx->codec->write_sequence_header) { @@ -1869,6 +1880,63 @@ > > > rc_mode_found: > > > return 0; > > > } > > > > > > +static av_cold int vaapi_encode_init_max_frame_size(AVCodecContext > > > +*avctx) { #if VA_CHECK_VERSION(1, 5, 0) > > > + VAAPIEncodeContext *ctx = avctx->priv_data; > > > + VAConfigAttrib attr = { VAConfigAttribMaxFrameSize }; > > > + VAStatus vas; > > > + > > > + if (ctx->va_rc_mode == VA_RC_CQP) { > > > + ctx->max_frame_size = 0; > > > + av_log(avctx, AV_LOG_ERROR, "Max frame size is invalid in CQP > > > rate > > > " > > > + "control mode.\n"); > > > + return AVERROR(EINVAL); > > > + } > > > + > > > + vas = vaGetConfigAttributes(ctx->hwctx->display, > > > + ctx->va_profile, > > > + ctx->va_entrypoint, > > > + &attr, 1); > > > + if (vas != VA_STATUS_SUCCESS) { > > > + ctx->max_frame_size = 0; > > > + av_log(avctx, AV_LOG_ERROR, "Failed to query max frame size " > > > + "config attribute: %d (%s).\n", vas, vaErrorStr(vas)); > > > + return AVERROR_EXTERNAL; > > > + } > > > + > > > + if (attr.value == VA_ATTRIB_NOT_SUPPORTED) { > > > + ctx->max_frame_size = 0; > > > + av_log(avctx, AV_LOG_ERROR, "Max frame size attribute " > > > + "is not supported.\n"); > > > + return AVERROR(EINVAL); > > > + } else { > > > + VAConfigAttribValMaxFrameSize attr_mfs; > > > + attr_mfs.value = attr.value; > > > + // Prefer to use VAEncMiscParameterTypeMaxFrameSize for max frame > > > size. > > > + if (!attr_mfs.bits.max_frame_size && attr_mfs.bits.multiple_pass) > > > { > > > + ctx->max_frame_size = 0; > > > + av_log(avctx, AV_LOG_ERROR, "Driver only supports multiple > > > pass > > > " > > > + "max frame size which has not been implemented in > > > FFmpeg.\n"); > > > + return AVERROR(EINVAL); > > > + } > > > + > > > + ctx->mfs_params = (VAEncMiscParameterBufferMaxFrameSize){ > > > + .max_frame_size = ctx->max_frame_size * 8, > > > + }; > > > + > > > + av_log(avctx, AV_LOG_VERBOSE, "Set max frame size: %d bytes.\n", > > > + ctx->max_frame_size); > > > + } > > > +#else > > > + av_log(avctx, AV_LOG_ERROR, "The max frame size option is not > > > supported > > > with " > > > + "this VAAPI version.\n"); > > > + return AVERROR(EINVAL); > > > +#endif > > > + > > > + return 0; > > > +} > > > + > > > static av_cold int vaapi_encode_init_gop_structure(AVCodecContext > > > *avctx) { > > > VAAPIEncodeContext *ctx = avctx->priv_data; @@ -2548,6 +2616,12 @@ > > > av_cold int ff_vaapi_encode_init(AVCodecContext *avctx) > > > goto fail; > > > } > > > > > > + if (ctx->max_frame_size) { > > > + err = vaapi_encode_init_max_frame_size(avctx); > > > + if (err < 0) > > > + goto fail; > > > + } > > > + > > > vas = vaCreateConfig(ctx->hwctx->display, > > > ctx->va_profile, ctx->va_entrypoint, > > > ctx->config_attributes, ctx- > > > >nb_config_attributes, > > > diff --git > > > a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index > > > af0588c30b..359f954fff 100644 > > > --- a/libavcodec/vaapi_encode.h > > > +++ b/libavcodec/vaapi_encode.h > > > @@ -191,6 +191,9 @@ typedef struct VAAPIEncodeContext { > > > // Desired B frame reference depth. > > > int desired_b_depth; > > > > > > + // Max Frame Size > > > + int max_frame_size; > > > + > > > // Explicitly set RC mode (otherwise attempt to pick from > > > // available modes). > > > int explicit_rc_mode; > > > @@ -268,6 +271,7 @@ typedef struct VAAPIEncodeContext { > > > VAEncMiscParameterRateControl rc_params; > > > VAEncMiscParameterHRD hrd_params; > > > VAEncMiscParameterFrameRate fr_params; > > > + VAEncMiscParameterBufferMaxFrameSize mfs_params; > > > #if VA_CHECK_VERSION(0, 36, 0) > > > VAEncMiscParameterBufferQualityLevel quality_params; #endif @@ > > > -478,7 > > > +482,11 @@ int ff_vaapi_encode_close(AVCodecContext *avctx); > > > "Increase this to improve single channel performance. This option " > > > \ > > > "doesn't work if driver doesn't implement vaSyncBuffer function.", > > > \ > > > OFFSET(common.async_depth), AV_OPT_TYPE_INT, \ > > > - { .i64 = 2 }, 1, MAX_ASYNC_DEPTH, FLAGS } > > > + { .i64 = 2 }, 1, MAX_ASYNC_DEPTH, FLAGS }, \ > > > + { "max_frame_size", \ > > > + "Maximum frame size (in bytes)",\ > > > + OFFSET(common.max_frame_size), AV_OPT_TYPE_INT, \ > > > + { .i64 = 0 }, 0, INT_MAX, FLAGS } > > > > > > #define VAAPI_ENCODE_RC_MODE(name, desc) \ > > > { #name, desc, 0, AV_OPT_TYPE_CONST, { .i64 = RC_MODE_ ## name }, \ > > > -- > > > 2.25.1 > > > > > > > Mark, any other comment on this version? Thanks. > > > > @Mark, > > Do you have any comment about this new version ? I'll merge it if no more > comment for v7. > 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".