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 A1FF34A63F for ; Tue, 2 Apr 2024 06:16:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6016368D12D; Tue, 2 Apr 2024 09:16:32 +0300 (EEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F6A868CD17 for ; Tue, 2 Apr 2024 09:16:24 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1712038590; x=1743574590; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=uvWFqHX2eeRdreWbSaciFV7vIYDmMRADeiz0NsgRtdU=; b=EzlbXuD2cH5sblfYSj9OaFIw2749zDzCQH9OrIOCjfXu/ue5tSplVOzr uTr2GtRxsHU4InCLpP03HcJ//GJxX7i1L8XgPwcUTtI8Sld+bgxDHHxwc 8jsWJHgB1+CXj1P476WvQqVSEY6noJ4sJ0prT7CmO4ZBGaSkgTzA+4Mfi 4F8LvUOTice5C2tZZwSmRo4v+PwfBjVvBdjMXdRQ0SmgeY9S0xNpVaM6Q 18g6G/RG27TZPbVdyRTMh1xdyPTWuCQcpQXUJkuuQ7H8O9IuG7GX34CNL xCPDJhsxpd/Xjrcyc4osEFyOVmiyCnim/axeYFRCzk0ykFWo5Z5rCIdIn Q==; X-CSE-ConnectionGUID: HRKzhZxCRZuwgyFCg36MsQ== X-CSE-MsgGUID: HTs83dI+RziDMhmuA6nofw== X-IronPort-AV: E=McAfee;i="6600,9927,11031"; a="11019884" X-IronPort-AV: E=Sophos;i="6.07,174,1708416000"; d="scan'208";a="11019884" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Apr 2024 23:16:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,174,1708416000"; d="scan'208";a="18352667" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orviesa007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 01 Apr 2024 23:16:17 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 1 Apr 2024 23:16:17 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 1 Apr 2024 23:16:16 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 1 Apr 2024 23:16:16 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 1 Apr 2024 23:16:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e5db5kMNbxOnkZC3UySbeKtS0tbwQTpKEO42X/X1E32xWqjnTzUGpewSThILRSDRkpMzjEneKcxDTCgv8PqwMqNGqXpOwJn1SLnawwl1yZkQqTVpRvu0LVorUsL3Sj4meTKYX/Y9BLBg+GhMMSbEjCrB2+xF+w3nOUzzcjRg/Yp0Xdba5INY+zoxpweNar7oUnsnq0yVuAE6wqCMoIjpqW7gkdK/nhkkmKznqAdPH5xS7EXm1hoFJ7yj3FgitoTOgt5864At/93A0/wGQIM2nfPh44aI9lT/zIIkmrs99IiUAS+7idxuvybYjMKoz546tBkyoOZNwrTEcxLZPozGsA== 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=uvWFqHX2eeRdreWbSaciFV7vIYDmMRADeiz0NsgRtdU=; b=jcxjVqiSwONccYqfPd5d4/Ma3xShTwc7QKUOjqAQvUBwbCjaVoj08rXosejVfClcfMteg1+cziZjuaXPr6+ym70uZCVX4YcgXoyyw6NvYF6FpBSejhKIxWDQp+g6d9nQ7leyR32gLxD7ftf5OeFwtNtLzymD5WG/MZV5pNWzQss7FvA3tirPdcNy78nByp9binKN9Lp2+CQNcZmTXYMiwQa4EpY+DQLu2lWDR4Hnn49HBVGTOfucVBxEoJVtqtJei716tdmAIGbK4m4TyvZRMiY+kimhBim6L1JLwETuZDrV/umwwTUW9By/KDwnz2GonPuKorPjVadt1RSe/w1aeg== 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 PH0PR11MB5030.namprd11.prod.outlook.com (2603:10b6:510:41::5) by DS0PR11MB7651.namprd11.prod.outlook.com (2603:10b6:8:149::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.24; Tue, 2 Apr 2024 06:16:09 +0000 Received: from PH0PR11MB5030.namprd11.prod.outlook.com ([fe80::566d:2e2d:1fa3:d511]) by PH0PR11MB5030.namprd11.prod.outlook.com ([fe80::566d:2e2d:1fa3:d511%6]) with mapi id 15.20.7409.031; Tue, 2 Apr 2024 06:16:09 +0000 From: "Wang, Fei W" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v1 1/7] lavc/vaapi_dec: Create VA parameters dynamically Thread-Index: AQHahG4UayeUnS48DUSr0+WFYpNwzrFUgb+A Date: Tue, 2 Apr 2024 06:16:09 +0000 Message-ID: References: <20240328012631.777476-1-fei.w.wang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5030:EE_|DS0PR11MB7651:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wufEdJNFaJFdAHHiDeKz6DDIMdkW69qBgFFLiACstF7W37oiU/S55Balwi9uWacZjvMlVvlniAKcynz86UhbDNEJ3+Us3cYLPTUWAsq9DQ3ebkFf+I0/YYTgwxRk7NCkbU9GM4c/AonkSl86w6stJV+TSjFqATaSGZ6yfXWjjRcqKQLK/GmExztyLpp55kfZGrItkk1mmERMB74FgSCstNg8pOTDpYb99y/S4ujzyruZi1LfDRx6vrWhEV3HeCvsAhhUt2nB0vxWOYCZDoF6A2Ypi1VIGthmzCE8oafYuvZRUl8CVFwV19oA0hsQBKxe2WVXIJcDh5uV5o3DOiX1GpyWFfbEPyWO5p4KV9//dZXlLPNUmBrxhd2vOHt98QjegUpc47tpKrFGA/stWHgZgiXzg3T3x6Z5D0xm03/1KU7Z0beh+CwkWxOzJn/KEhNx5W2nWOJtMbP+S1yMyplz28u4Hj/kqnqHSGxfDnvxwrWHdtzRFO2/Z7Bcg09fHtKRiu+EPIhLLVkLYnqJUa07OF6bybEByEK90FKmlrzA9+exz4uTu2utIZzAi3AQzZjy+NOQOvwtY/pb7VR3/mOHmhSXVHiePQkKpA6wvrCrFMk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5030.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VHh0b2JsNGYwWDlkdi9MQVljWEJMQldZbkVBVEdHZGJsTGNDVnBUQ0VRNm9v?= =?utf-8?B?Z0djbk9NV1AxdHN4d3NiZTJwT2dTamNqdVFkVlNTZmFQZjZPTk5ZclRpWFk0?= =?utf-8?B?STZYSjlKc3JVbHdZQURPZ0dNWmpGWmVFUC9mU0JUVWFVdGpFUHk5Z3FqOFpz?= =?utf-8?B?eVc0dkxRZFlxQml0NzdBMHhua2c0RlQxWjBFdDROTmptNmE4N0ZvWUNUTTN4?= =?utf-8?B?c2RENmF4T2VEakI5L1BiOXFRUkwxWVQvU1BHWldpUU8vWTM3US9rc1Fnbktj?= =?utf-8?B?a3dRLzNhMi82N0U0Q1VNaTI3Tm9Jd2V4S29JYzdCVU5WVHkvMHNPbU5SMnFk?= =?utf-8?B?R1lyYVJzN01iTk0yOXh0R3k2YS8vMHAzdzhQZHR3MVhsK1Eyc3JDZzd2OUNE?= =?utf-8?B?NWticXo3ZTVYaEd2OERGT09CZXBWQ2JobnJZcjd3TzgraWk2UXdUdVg2eHFF?= =?utf-8?B?SXVWNHlla1ZQQnlFeG53RkZOdG15ZmpTdWFqQWpVV0xIdW05cnRkaFpBNkZr?= =?utf-8?B?eDJhbUNNdHR6N292bXNXeW9yMXoyUzdYeng4MzhtMGhkcEp5dWNFZVpvWmwx?= =?utf-8?B?d3hhaEZ6bS9ONG02d2RUNFFWMXVWTjhOdjVuMnZpTVpBM2sxemtrdGl6VjBL?= =?utf-8?B?cndIeXFJcTJnWTdhU1BxaU5SNkFVV2NjY3dHMjViVmRlVXVQU01hR201dzJX?= =?utf-8?B?a09oUFFMVFB5V1ZEU1dDZjhCWEFBNW9POEdYeERSZm82V3dlSkRUUUs5ZTZx?= =?utf-8?B?dXVmNUF6eTQ3bWZhaklPTTgvSUM5enhJTkc3Z3QxZTc3dElYTnFFeGpPTkF2?= =?utf-8?B?N2VqRGFWaCthUlQ1SURUNTFvb3VPV201S0NGZmo1aFZVK29XQlgrM2JKc1Bi?= =?utf-8?B?VXR2eWtUYUk5MWRxN1pZVkdINE52T09zNGxmV1oyNnVVVFNyZTdCRlRSY0xL?= =?utf-8?B?SnJ6VUQwSmNBVHBMTlJzRGRMNGhPRzBDODdSSG52Q3BZT2xTVlBmY2N5Y3FQ?= =?utf-8?B?L2VDa2xRakhLamdhNnlZRjVSSEdNb3lJckRJd1QrQm42eVFrUHJ1U0lqM1c3?= =?utf-8?B?eGtadDlFWTNHU3JaQThWRitBYzFGamhadVNUOXlWNWFNc3dXQW1FbXF1Yzcv?= =?utf-8?B?VG82RG02WTBKVU5hQ2k3OUhDK1JScG9vNUlJdUJXS3FLNVJZNFBkWDhJNE9T?= =?utf-8?B?cGFNb0FKbGE0V2phMEpRYUF3WnNKUUlnU3Z3dFZSZHNqV3JTMC96akl0SmVY?= =?utf-8?B?amtjRTRzTWtheTlLcHVvVk1tZjN4MXd2SEozajFpbysvK1ZiRzRESnhqeGhE?= =?utf-8?B?YWhkYURONzNwUUtjM1ViSGxGMkRDRmZWVGNyZTZQN3JpbjVyb2VYWnBxTTQy?= =?utf-8?B?ZkgwNmpJZkZRSzhJWG4zNlhrT1AxUkE5M3J2SUxCM2szODVsdVFPV25wbXdy?= =?utf-8?B?OHBBUkJWeVNWZGZQNTlha3lzQ0JHeW9iaEUzN3NHdEpDc0JkREF4NVg5bk1x?= =?utf-8?B?Sk1VOVpiV05uZG9ISlZoM2R4b0U5RHVqc3RweHRCT1I5ZE11S2JoWHVsQTJ6?= =?utf-8?B?NS94VmRVSy94SWw5R0YwdTh6aVZleC83VUNxOUJlQVFubzdodVZ5V2hXOEdD?= =?utf-8?B?K0JHZ1BlUlRaMm5YNW11cE12di93SGRmV24xMmk3SU91NSttTDNjcTJGZ29n?= =?utf-8?B?cm1wMEJTZTUyVVh5Zm1Qc0d4eTBtWTlKaU1UcDdEZDVNTG94TTZtcjBPSzZ5?= =?utf-8?B?M1FmUmZ6T0txT082VEMzQkd0YVNZK0p6WVpucTVsL2FHT1dueUl3MGdLWGFW?= =?utf-8?B?NlI3TW9oL2xTcWtSWVphYjUyQjRSdm5rQ1h2WHBJOVl6dFhwWEdKbXVNTjAw?= =?utf-8?B?VGQzVUFlVUZscTM1OXBmbFZsTTJZSk9FbVI0RHMyakZCS0NEbTBpQzh4bWdV?= =?utf-8?B?bEZrbDBSRkM3NnllbUZGMjI0SVdQQ2lpNVJuMnUzQmNyenFQUFVTQjN5ZEZ5?= =?utf-8?B?NnJjbmtQZngvcTdzRS9CR0tsdWdjdmRYbVRyM3NUVXFyQW5EZVVzOGp4cWNn?= =?utf-8?B?Mk1zZ0F2SWxpNWZ0VFhMWUQzcjJkWWJNT2RLVjFqRVB5MFZJc25GVEFEd3Zl?= =?utf-8?B?YW14WDRPdnZqVlVxQitMalVtc0NvaDZQb1VZYVlZY2VsS0g5MnZZMDE5T0VY?= =?utf-8?B?T0E9PQ==?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5030.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0c68e2d-5456-4930-9a5f-08dc52dc6370 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2024 06:16:09.3964 (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: FStLHfdyuw/oMuSMLD0y+prHITodlEE91bE/6QVg3PhIOjsUPjTl6keefNQRwED8VM53PAD5bptgdnDbypH1OA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7651 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v1 1/7] lavc/vaapi_dec: Create VA parameters dynamically 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 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, 2024-04-01 at 20:52 +0100, Mark Thompson wrote: > On 28/03/2024 01:26, fei.w.wang-at-intel.com@ffmpeg.org wrote: > > From: Fei Wang > > > > Signed-off-by: Fei Wang > > --- > > libavcodec/vaapi_decode.c | 29 ++++++++++++++++++++++------- > > libavcodec/vaapi_decode.h | 7 ++----- > > 2 files changed, 24 insertions(+), 12 deletions(-) > > This is because the VVC code is going to want to make a lot more of > these param buffers - can we just set a slightly larger fixed limit? > > If you always need 20 buffers (say), then this has turned 1 > allocation per picture into 3 and used more memory in the non-VVC > case as well because of the overhead of that (but if you might > variably need up to 200 then this is completely fair). VVC support 1000 slices and 990 tile columns, and other buffer like APS/tile_rows... So there will be 1990+ buffers needed at most in theory. For other non-VVC case, 16 buffers will be created which is same with before. > > > diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c > > index cca94b5336..1b1972a2a9 100644 > > --- a/libavcodec/vaapi_decode.c > > +++ b/libavcodec/vaapi_decode.c > > @@ -38,12 +38,23 @@ int > > ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, > > { > > VAAPIDecodeContext *ctx = avctx->internal->hwaccel_priv_data; > > VAStatus vas; > > - VABufferID buffer; > > > > - av_assert0(pic->nb_param_buffers + 1 <= MAX_PARAM_BUFFERS); > > + av_assert0(pic->nb_param_buffers <= pic->param_allocated); > > + if (pic->nb_param_buffers == pic->param_allocated) { > > + pic->param_buffers = > > + av_realloc_array(pic->param_buffers, > > + pic->param_allocated + 16, > > + sizeof(*pic->param_buffers)); > > Use av_reallocp_array() to avoid leaking the pointer on failure. > > > + if (!pic->param_buffers) > > + return AVERROR(ENOMEM); > > + > > + pic->param_allocated += 16; > > + } > > + av_assert0(pic->nb_param_buffers + 1 <= pic->param_allocated); > > > > vas = vaCreateBuffer(ctx->hwctx->display, ctx->va_context, > > - type, size, 1, (void*)data, &buffer); > > + type, size, 1, (void*)data, > > + &pic->param_buffers[pic- > > >nb_param_buffers]); > > if (vas != VA_STATUS_SUCCESS) { > > av_log(avctx, AV_LOG_ERROR, "Failed to create parameter " > > "buffer (type %d): %d (%s).\n", > > @@ -51,14 +62,14 @@ int > > ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, > > return AVERROR(EIO); > > } > > > > - pic->param_buffers[pic->nb_param_buffers++] = buffer; > > - > > av_log(avctx, AV_LOG_DEBUG, "Param buffer (type %d, %zu > > bytes) " > > - "is %#x.\n", type, size, buffer); > > + "is %#x.\n", type, size, pic->param_buffers[pic- > > >nb_param_buffers]); > > + > > + ++pic->nb_param_buffers; > > + > > return 0; > > } > > > > - > > int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, > > VAAPIDecodePicture *pic, > > const void *params_data, > > @@ -215,6 +226,8 @@ fail: > > fail_at_end: > > exit: > > pic->nb_param_buffers = 0; > > + pic->param_allocated = 0; > > + av_freep(&pic->param_buffers); > > pic->nb_slices = 0; > > pic->slices_allocated = 0; > > av_freep(&pic->slice_buffers); > > @@ -228,6 +241,8 @@ int ff_vaapi_decode_cancel(AVCodecContext > > *avctx, > > ff_vaapi_decode_destroy_buffers(avctx, pic); > > > > pic->nb_param_buffers = 0; > > + pic->param_allocated = 0; > > + av_freep(&pic->param_buffers); > > pic->nb_slices = 0; > > pic->slices_allocated = 0; > > av_freep(&pic->slice_buffers); > > diff --git a/libavcodec/vaapi_decode.h b/libavcodec/vaapi_decode.h > > index 6beda14e52..a41d7ff2ff 100644 > > --- a/libavcodec/vaapi_decode.h > > +++ b/libavcodec/vaapi_decode.h > > @@ -32,15 +32,12 @@ static inline VASurfaceID > > ff_vaapi_get_surface_id(AVFrame *pic) > > return (uintptr_t)pic->data[3]; > > } > > > > -enum { > > - MAX_PARAM_BUFFERS = 16, > > -}; > > - > > typedef struct VAAPIDecodePicture { > > VASurfaceID output_surface; > > > > int nb_param_buffers; > > - VABufferID param_buffers[MAX_PARAM_BUFFERS]; > > + VABufferID *param_buffers; > > Previously the array was zeroed at allocation but now it isn't. Can > you confirm that that isn't a problem? It is should not be a problem, all buffers visited and destroyed through nb_param_buffers which record if the buffer is valid. Thanks Fei > > > + int param_allocated; > > Maybe "nb_param_buffers_allocated" would be clearer. > > > > > int nb_slices; > > VABufferID *slice_buffers; > > Thanks, > > - Mark > _______________________________________________ > 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". _______________________________________________ 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".