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 4CF6A406CC for ; Mon, 30 May 2022 01:28:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 03FD668B57A; Mon, 30 May 2022 04:28:07 +0300 (EEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1F55568B377 for ; Mon, 30 May 2022 04:27:55 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653874082; x=1685410082; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=FGVFzdil/7in2g2Aw+xFlORPbqwdks6R4ZZOzhUTBRo=; b=ciZJcrz+ULqHOIQPSgMYFoEDOHOAG26AiVUrSdjbnGGZopW+rcdCxAaD 3TLmG7bnofDLMXIjCL4hMWdtXFZf64I4nh/cs6vHetJzmZeufmu8O2Y8K DHmYqMgafM3O4HRwB+/+DuXJeMeqbCr1CQGeMIPvNUii+Shfd/++it/Kv GuihUgM83nYuDe+1U/mjpy4JIf8Zyig0uuPZlflxHokBl7fJ/3PqOfs6V LbFGv6xa53NjERGbb7YgKjNgNNC7t6BljSaraQpfeCRjPpJSDvibat5oL Lacnr6ia1+2oM9tCvI0VlrPkQeqMOFvWeUdxQX6fxi9bU2ONxEVDUc2de A==; X-IronPort-AV: E=McAfee;i="6400,9594,10362"; a="335513342" X-IronPort-AV: E=Sophos;i="5.91,261,1647327600"; d="scan'208";a="335513342" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2022 18:27:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,261,1647327600"; d="scan'208";a="528960572" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga003.jf.intel.com with ESMTP; 29 May 2022 18:27:53 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sun, 29 May 2022 18:27:52 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) 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 via Frontend Transport; Sun, 29 May 2022 18:27:52 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.41) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Sun, 29 May 2022 18:27:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VrzeTsAYU/NW27qraabPuFqz9p4AOFFvuiTCSxOhFbfiVa1uRmBPuSCos3tNxhXEc2AUEwMquyDP8dLuy63Scs4ISjVbdBFE8ZO+/26M4q5/J1F3uUoMP9xTR7agc/Pv1C8RFbfuWk6ySkoXd3/VtK+KIxkL7lPG0B/JNzwG/ckL5yaJoPV2FBrDtgMkxqkIRN3hBh0FFC2TPgDpi5BVeIlCHY1VoULH2U7MxiHfa2Fzd3g/+Dn0itlylZmZOoC/ldi+SFrmlyDiw+Z1/J9YYDDrSh1RYZLnK+RelVRxaBvBBBk4de5d05FehQ1JDrGJ+WhS4nEjLCYIG46UC7eJVg== 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=FGVFzdil/7in2g2Aw+xFlORPbqwdks6R4ZZOzhUTBRo=; b=nv35ujFuysmv7hPNWtHWBhD7X3XOVbq0k0K5hV424FrSJ+wnYnwmGttnqy9KCwRuIPAhoLYyC6Dm0rsLPG3SbiddU3wYZeHK7M5qsqPXpQxAM1Xefy+msKfJQ0XyZq5fg9z6HVjKEom7T3aFFTBLqDgyeSI57HGiIxe7IAs+7grZPtctZ2RIu0xQYZx1XvDBAak4OeKlFPW5dIclmwmsKAwYfOMFoRCGTm/Z0v/vFDC2VhnfnmbQKeqEzVdiT3CHXhHHGGMPs8vFFviB/ATmFPHA5ffE/6SHV2oUG8NdJEFO8ze8EwnkG+HShzzx6of/tDNGlsNlrcdEGiFzCBPGcA== 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 BN8PR11MB3570.namprd11.prod.outlook.com (2603:10b6:408:90::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Mon, 30 May 2022 01:27:50 +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.5293.019; Mon, 30 May 2022 01:27:50 +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/HCpLsiPq0r1NiAgArzWYA= Date: Mon, 30 May 2022 01:27:50 +0000 Message-ID: <442401147dead9124bfcbf38427db91c5b1999cc.camel@intel.com> References: <20220505090715.2016246-1-fei.w.wang@intel.com> 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: 2967cb23-ac31-431d-fc73-08da41db9c9c x-ms-traffictypediagnostic: BN8PR11MB3570: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: Kf4S1+jGMHJU2OdVwhIR4aCf+YKq0DRgUZ7hqNbNzLdIbpoJnsj/SmZBf0t4fRreJF5LqV49uIXUbnlYPeFu4Ae2vzfcANkD/t0i8hxjIvZeIN/dNNg4Tef8Fkw6zW552lAdEKWVpnB6uL+mj36VQHfHM9cKzk05atdi/Fw5Y5jWlB7gHqdnWGFWf0N3C41DxIiv3t0mn6Ur6lC0fYYga4uVCD459RqHS2ClzF0SEzuTGe4wZKzluZF4yTtIgqYh79T0R+y+Ty/KQH2qAC603/2am7xrIiQvqJTmk+ZJ5r/IHaMu2Tf4YpgdLPz/0bxBV7Ez5MmQOn/RjdpXco53wjbd9Cd+jxsxeCMjNH6QXDvkp3cQhIFvu4xKGvYJcXeyyA+QRVCEZl+QP6IjmUZZhL3Ex4mDOeVYQSsUzHRZUox1XfzhNXK/Dr9UFbkVK6a6dOz2b/HttCx53I3GTjDt1eNFIlCrVYu9LT3KQGvgmi42Oyzyg/Ea47HBcZrq5jjIu1bxIsoFILDbSbqj2N6QsLJBN4dg8xZYfgovu75YLsBl5/hKCXRIMXeF0J9FC6WnuRzs0Ixt0LzzrNt4psX63FWdnDhfzk+1KOrchkoUzTr3wsZGhVcNuRFCjrzn+wr4jynruQjY1zm7KA9dg/Y9+7cpPODm88Us9TuNBEc08FA+uQKG4z6IDPM2P9kogb2r57+4PGUcfUwjUBinmYGQUqRXUsrVtGk008ge/jAr6NI= 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)(82960400001)(83380400001)(5660300002)(64756008)(8676002)(508600001)(66446008)(6506007)(76116006)(66556008)(71200400001)(66476007)(38100700002)(4326008)(36756003)(66946007)(2616005)(8936002)(91956017)(53546011)(2906002)(316002)(186003)(86362001)(38070700005)(26005)(6916009)(54906003)(6486002)(6512007)(122000001)(107886003)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VUxrRVFNL1FvV1R3S0ZXU0c1RWhMakRwVWUzOEd0SmlOOG80TitpVU5LaFJJ?= =?utf-8?B?RXd3N1g3NWVlVzlGbnQwVy9pUDdRRVAzSGcwaFJzR083enViM2pvWjcwRjM3?= =?utf-8?B?cllQSWI3UHBObUxPVkNxdS9wZ2QyK2MyTW12UkI3c0VKbVFGSmt6eFoyVU13?= =?utf-8?B?WHJ5ZTNFQ3U1YUtXOTgvVWIyaU51Um5aY1dlUEdvenZwRk9ua3RYUXh6cTV3?= =?utf-8?B?aUo2V2NGb3NVUFp4RXg0UHY5TkZhMVNSdjRpSGlLcUNUTzc0TVA1ZDFmNlI4?= =?utf-8?B?OEFiRGVQSVJUVzZXZEpmbGFpRmlnRzZEbUdVd1VKNnJCMEgxYkd3MXlxTnhz?= =?utf-8?B?dXYwU2todVYzTFNmNGFNZUNrMTlUR2Q5STRleWJsV3FzYmVpOXdCMTArOHBr?= =?utf-8?B?OUZpeDV5c1lWUVc5Qk96enU4QlRyZnZyWTBndkozK2wwb3FhbVVWNGYrSGJO?= =?utf-8?B?NnVlaXJHKzNZd0ZVQmEzNjVlSmk0eCt1a1hWQ0JtVnlsRTZoYXJkeFp3NEpK?= =?utf-8?B?SlBoNVJlSVVGZWpKVGh1MXRNUUFML1BRVGdlejZ3YjJqdlJxSmhmdk02YnZI?= =?utf-8?B?Z1cwcVdmQm52SmpZODIycmpnZklEVjFhS01nVS9VY2k3dnFNa281TFJaczZw?= =?utf-8?B?clh1M0YzVm52SmZVMlUzY1JYaVJXUXhCbXkwTkhOQm4rNXNEd3VRcWUrSUwr?= =?utf-8?B?VCtpRTNGS3VXcWtZTkQ3Q0dNajV0S3JYcjJ1cEdEZ1kyTHk2ZDVVRHdTNkRt?= =?utf-8?B?L0t3ODhTNnptTXdZdkdkQVJWK05KNFBxSlNZQytuUkduODkvOUJVR1VHZS9w?= =?utf-8?B?clZkZkNwZ2lHVVhiT0s5SVl3OGs2N1laWXZlSEpQb1MxejJkTzE3ckdKaE9n?= =?utf-8?B?bEJocFMzZ1RJQUk4Ti9QeTM1aWNIUXpPV0c5VTRHaXA1c3ZzSGdvK25vYjBQ?= =?utf-8?B?dDZwZlN1MHk0WnF4eEF2ajJkWTVGdzV2U2V3Qk5YaFpWbmxWUVlMQ1drWWYz?= =?utf-8?B?UDk5aUxSYjVhSDlUMjdKK1ZmR3pYKzJpaUx2Y0FZcG94R3J4ZStFVTB1aUhh?= =?utf-8?B?dEJZMW43bnpkcHkvby9EbzJYQlJzOCtyY0IzSzRYbTc2QXRWUXhoZlkxYmhp?= =?utf-8?B?a05mUEtQUXo0VVJnTDFWcGlkbStMNldDaXFFU2dSUk1CUkRUaW1tcjBkdUpR?= =?utf-8?B?REZlb1NKbkRMUTVqSytJUE0rRnlOTXc3bE9mckRXN3h4YTFmZk1GUUVDZ2kv?= =?utf-8?B?ZzBZK0JIdGtZV1A4Ti8vWDJ5elNrb2VZTHVmbWJJRGlRVzdKQkJXV0orclpM?= =?utf-8?B?a0M4RFVTRVVvYTR3OVhJZ05qTkZreFdiVDBuSXo2Rkx4NitMWVhGbHNremMw?= =?utf-8?B?RGtMdlRuRkNrUEJITVVGWTFva1E0ZlYyVVV4aFRnb0l1RHBlUHdPVDV1ejhF?= =?utf-8?B?UTcyV1dFelFCRlJxNjVmVFpHeGFBMlhFa2lMOWErRGp6bXd4eGZVM2EyMmZK?= =?utf-8?B?cVY0c3NHZGw2YkM4UmpXRXJZMTYwNlhnTk4wcU9ENjcrUjNCSStuMHRlNTVM?= =?utf-8?B?WnpOTVdrTjZDN1BTTVZyU21peTkwajl0elVUejlsRGpGZEkxN2R2RFRVMk5W?= =?utf-8?B?Z29lWGowNll4QmtZT0VtQzNkQkMvZWxRZUZhOWNrU0lQRXRlL081aWR6OWxv?= =?utf-8?B?VmZhNC9BK1BLVkp1WFBIS0NjdkFxSmRTUnRIelk2N3U1SS9IMFlBY0tDOEZI?= =?utf-8?B?ZU5NaDRMdjFqL1l0cFhZZUlrY2YzZ1M0bUJOdDRQc2EyZFBqOUdsYmdTS2Zu?= =?utf-8?B?aGhTZUw0d2wyTjlUU3VjYkxFWFJ4Y1pEZXdoSWJRTHBEQy9yUEdNRzI4dERn?= =?utf-8?B?Qk1zby8yWmFtQ2hVUnJhUFdWTHB4N3J6a00wU2VGd3lNcUJrb29OcEgyRUd6?= =?utf-8?B?c0poRGF2aXV3ZGhlVGxyeVFFR0tCWlM2YWZTMXAvS2tUM3NtbEFHNndHYnEx?= =?utf-8?B?TlptYmJIVzBvQUZGRHJoYlZCbVBLQkl3dlRsV2piR2tOb05aSTF1WWpuVDBZ?= =?utf-8?B?aWNIc25FR2hmbnZQa1VvY011VkhzR0tLL2pHREE2eXVRdmxJenFqdlFXTkhX?= =?utf-8?B?T2pLazdvT3ZZQkF3OTRjZDVmMjdDNWRUWnQ5ckE3UHgzODVJZUpSY1dYcitk?= =?utf-8?B?T2tJSVZLYzJkM3NkMnJmKzhoMUVyVWZqM29aNlROUnNNM0tFMXdXSjlzVzJo?= =?utf-8?B?UVg5Z1RDNHRDK2xtRERWck5XbzZoU3hvdjRIUTlqNldBREN6b3FrcjJnQTJJ?= =?utf-8?B?VlZzd284dHR6SGFFVElLVTN4a2V1dVdCZFNEUDhDN0VPbU9BMGdKelQ4a1hm?= =?utf-8?Q?LvcFLYbw9gNc3lmg=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: 2967cb23-ac31-431d-fc73-08da41db9c9c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2022 01:27:50.7054 (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: DXRoUpW/ZUAd2uUl6jx/ezyc42xcjDkr8h5eepj0WQk923EDsB5I5JjDPrnE6P7w+D4qYGuTHa/PkuW/AkCmxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3570 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-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, > > + VAEncMiscParameterTypeMax > > 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. Thanks 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".