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 17BE648E7A for ; Mon, 29 Jul 2024 14:36:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3322268D60A; Mon, 29 Jul 2024 17:36:41 +0300 (EEST) Received: from AUS01-SY4-obe.outbound.protection.outlook.com (mail-sy4aus01olkn2187.outbound.protection.outlook.com [40.92.62.187]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 50D6368D47C for ; Mon, 29 Jul 2024 17:36:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K3fg9COsp1WoGdLG74Jfgow8/og53xnfmzxrrtfGmQCyWdQrm+RYZnr10C70bq8nBGDJeKktiv2CjLSwwbQaDSTyyTjkKirdKikc+eqvl4MUqZxN5XMS8SvLut8CsXsyiqMK8QGYcd5s7IIhujb/NGCToS+clpakwbF3BJ6UIy6FfWaCZHHQSHhPkMMHJuTHBZPCcYIS5vDeOkqeYeZNgI71PwuNlE78tXCCKJvGDzH9D4HCb65AADhskp6or1pjIuOCLjV1FY8gXbFmdMmjO7cSp+ygpsvcXCJSJ0qXzf8kgnxkugGfZP++oYoQz1HyDjNJDOiKaCk0ou5kpXTTfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=gmp3OjStXGU7pkfVNnF+iLWxkQPfZKlQ2hWxAkSVuxc=; b=DimBfUv9GN9NXF0bxhGfSKFeOOXkf9IN5Khg5ncCxjqFfztiLT2bQKw5I/XoRANm9R29FZftSnLuIX3+klsNPaU3SPgvu5cRb0KuCKKoDXqEl15p3u5XAeI0nvrZGIEihWLb5Gr6bWo7y8mGxriq08WoufwehXNb6LVrB+TzBNOXOy4+EALmrvxB1z1rNgtrYzhcKkdoh9WHQFTGsnSxUI/sjo/HI2e3Q8gxu6QBTZoBUx/p4KkxRzbe72esd1h37WiQbhTGMIX0pWP/ivc96NNKVONIElFRtBfkZI+TXIlXvYfVvkGKJ/msykTQ+3Nu+kwVWZ52eaaP8J1e0pCmrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gmp3OjStXGU7pkfVNnF+iLWxkQPfZKlQ2hWxAkSVuxc=; b=VWs4B+xBWfeeo7KdC1I26oa0KV2RAiliUT7mFq5IGG9EFeWX4jwPeTE7L227xKWi3+mbXgMMQ9gYx7b6vcS/GyQHr/m1OWHAezdLcuKzMAvC53+OorQOB3956qQIe/WzfZwqAfUzBhsIeVlOPiI+Gq2TSXNaVxj4jmB7JA2S442o0EJ3XkPlg4eEmw8cKgGerO8CwuOahzz2DHBbZqh7RcggWwKhHE0ixd+jVGsXHQHq9/m8M8m70y6GSYbVc0kVDtN4kn7dZ2Szqx0Jy8OL4IXaNPo16P/ikiRrkrEC6UPc5SnWCTMAaXqCawQt7FpDtxyattQO4jTcbrf8Y42Bvw== Received: from SY7P300MB0845.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:288::12) by SY0P300MB0744.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:280::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7807.27; Mon, 29 Jul 2024 14:36:27 +0000 Received: from SY7P300MB0845.AUSP300.PROD.OUTLOOK.COM ([fe80::eaec:d3ce:9584:3e10]) by SY7P300MB0845.AUSP300.PROD.OUTLOOK.COM ([fe80::eaec:d3ce:9584:3e10%3]) with mapi id 15.20.7807.026; Mon, 29 Jul 2024 14:36:27 +0000 From: Tong Wu To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH 2/2] lavc/d3d12va_encode: trim header alignment at output Thread-Index: AQHa4QaNEG+eOEo8kUmt5mBRPR5wQrINxtQw Date: Mon, 29 Jul 2024 14:36:27 +0000 Message-ID: References: <20240708151323.312-1-wutong1208@outlook.com> In-Reply-To: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [hFRjGdbcUOfGbab7d0PwHe3rXVOqMEyb3gpUvidIYxk=] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SY7P300MB0845:EE_|SY0P300MB0744:EE_ x-ms-office365-filtering-correlation-id: ff901886-b05c-45c3-110b-08dcafdbd475 x-microsoft-antispam: BCL:0; ARA:14566002|19110799003|8060799006|461199028|56899033|1602099012|4302099013|440099028|3412199025|102099032; x-microsoft-antispam-message-info: udZqfrwZdsKyGg19gSTgO6am7+i+YPBNfoUpmg7MPN6+bKmGW6lzjBeK3OEZmqfXTSKem/pKXfAHsdn3Ytf7MQNEa5KHviZV2EeKTiuRTUMvPpc23wyhtjodOQR/OnBtPoKrX32hVlG/Ydz9+ow4IqtcQ7niWWEZ2LFex5Cs4/R7mNH5+Hr+QXiJNKb7+U1S2f3shVftEsWtJ3fBi4ZapxHNzBXIDcKamisF6VqWHW3rcjAlWcgSvFo3cpuNJGCDmW/N8lyhZ2QD98pT7xYrRXjjVJ+iReUciftPhtwR6Pkvk2BD4iMxDCGOBu7FRWGZeUL/kv1B42meYTa6JiBhhvu4xPhf9VkaKYH77HAIJFj0QJ6GSiyPLxntVR3cRV70DiG/CqCyjiANwxxsPSg7hjr2GnKxA8dk8+C61A7Ec48nkWSwrxxgVkrn7xlOeqLFGPGytF1SW6PElR5foIuJZyseLhqRSWDS8bQEinNWosvrSCANgojb1gUFeU/jgRjuv1Xsocfkh0ZHUiT9pl/bqi8CRVIkeyqFxrgHMg0cok3gv9jERkPbrKW/k15seaNd+9GExx+J+bAY6b6pVKi+hK17BdTXu97sLHcIc3nPQqAD35bRBpyLRn5r0CLGI/6JapcEMKIEQPITXBxqYYBguJ2RVI8p/nLW1vxBiUrgpYdtS4muTnzsiJUdiC1JOUUE3W+RtSiY1ZcyH99THROKQoyAFjkFfgPKPFE2goATHUnEpOCT3wuhePcD3V0frKRx x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cExqaitZMVI1ZU1PV1pra0YxRE83NzlNY2l3d1FhVy8yQ1EzUEt2SXl5Rkdy?= =?utf-8?B?VVA4K0FsT3ZhQW9XSnZJTmdzRkQ2NUxlODZKWGl6VzZjVDF6NFJsZGVML3dn?= =?utf-8?B?TFJNRThHMitBeUh0QXlMcm5xT3lOU1ZScEVoTGgvS1NuR3hCOG5CcTgzbExz?= =?utf-8?B?V3VWY3dwZXZOUFNxWjYyZDBjTmJ3T0JoUzVRelUxWFU3aVViVTJTdmhGUG9L?= =?utf-8?B?WlNmWHVWb1hqM0xTb1ZDSVVWdDZyais3NTJNY1BNZ09hdDFxZUxrcjRxL1VY?= =?utf-8?B?Q2hnRHZONFpaMlo3TXF3MGtscGRwVldWUW1sa0xmOENZSHJnV3djMFg3Q0RY?= =?utf-8?B?eml0V2dJSWV3cTcveEtoQ2pOTi9BMnNKemRzSlJHeVc1Sm5DZzIwUDY1Kzh5?= =?utf-8?B?Q3FnUjZvWjgxWlBaYXZ3Z0JxRVdydXhOd1ZMT2pjajBFanBBbTV2ei9sSGNL?= =?utf-8?B?eGRMcVFWNnlhdVJWSzcxaTJ2a3FFWnFmdFZPcUVMaGpUSXVnZ1RvZnN4RUdT?= =?utf-8?B?TVYxRkV4aC9GRlZnQWo2WmFkYU5pcURTR1JXdmw0OFJlbGxqenYxVCtkNFkx?= =?utf-8?B?YkczYkRTSHN4d3lBZytzOFRVYU5SeGw4VkNXeXE0aFUyYjZ5OFNuSWZWK2pO?= =?utf-8?B?L0tkMUMrMlZaUkZQK2FXd3Zsdkp6SWdNM25YRzNJSkxrMGZ5ZkFVRitsbjE1?= =?utf-8?B?a3p6N05zY2dVRWQzbzM4dWFJbDZjZzdXbzRMak5NemhpR2pkblJ1UG50dWxk?= =?utf-8?B?MHNrSTNkcmI3NWl0MDhrbzlyaHp6OTVnWUVxSjBMT1JwSy9ZT2RHNktpME9v?= =?utf-8?B?SlZZQUwwQURqTy9CSnlsY2FtWHBFSWxwa2hYOC81TmxINWNLZ3FSRDJLS2pC?= =?utf-8?B?anlveDd3bEE2R3cvNGhVcmMzQ3J3czBkdHBQUlh5Rmw2K2hVWjhDTSt0djNT?= =?utf-8?B?a3dUR21vc2tEYWJ4UEt1RmRVTFZlTG1BaG5WSjdCbkNNMlBONzZkcUg4QmNz?= =?utf-8?B?MU1SdFduTjlQRHQwcXlhamtqQU1mSDgvcnBtMU1SMWpHZC92WHZBWEg2TERm?= =?utf-8?B?NEtRaG9tOHMycjByeTg0QlJqSm1ZcVJTU0ZWamZ4MktPRDFRbU9YallNcmZN?= =?utf-8?B?RDJPaVdhVlIyWm9HZG5EWUcvVDBlUlFaK1JSY1c4YjhWbG9qRTJGZ3hpQlhL?= =?utf-8?B?bzVwcmdPR2VsMTRDbk1mWk1EM3dBOXVnMDZPN2VvSFdmd2U2SzloY3BxOURT?= =?utf-8?B?aGtWU1U5RGhLYldFSWR2SFpuZUxiTEZ6QUE4eVpXQ0VwbVVHbFBsV2ZyemZq?= =?utf-8?B?VU1DYmF6OGI3S1F0c0dIcEZmZElEbHVDK2lhcUxhZG9PeFNsbitwSWdsd2Vo?= =?utf-8?B?c3JFYXo2MlVOaHJnbEw5SjkrRG4vUVJ2L2hGd2ZjUG1Oc3NmZnJxMWhJNGZK?= =?utf-8?B?RFZ2aUdIb1g3RWRFeTBEVmlFck0rTnRJNjJIaHVCS2hOMFNhc3ZkbGFNbE1j?= =?utf-8?B?UWZPdDVLVUgrS1VCMGdRYWxxeWRYbHVzbk4rS3VDREhFTW1jODVacEdWcE1Z?= =?utf-8?B?YUdsTUY2MmtZOUNwdDNNRUlKLytsU1RnSStlKy9Rc0s2K2Faa0F5MU9xa1dh?= =?utf-8?Q?TgxgczzaNVNjo1nie530HfDY8b5NuDhGTCPQSEXAS1yc=3D?= MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SY7P300MB0845.AUSP300.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: ff901886-b05c-45c3-110b-08dcafdbd475 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2024 14:36:27.6753 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY0P300MB0744 Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavc/d3d12va_encode: trim header alignment at output 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: Lynne 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: Lynne: >Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavc/d3d12va_encode: trim header >alignment at output > >On 28/07/2024 15:06, Tong Wu wrote: >> Tong Wu: >>> Subject: [FFmpeg-devel][PATCH 2/2] lavc/d3d12va_encode: trim header >>> alignment at output >>> >>> It is d3d12va's requirement that the FrameStartOffset must be aligned >>> as per hardware limitation. However, we could trim this alignment at >>> output to reduce coded size. A aligned_header_size is added to >D3D12VAEncodePicture. >>> >>> Signed-off-by: Tong Wu >>> --- >>> libavcodec/d3d12va_encode.c | 18 ++++++++++++------ >>> libavcodec/d3d12va_encode.h | 1 + >>> 2 files changed, 13 insertions(+), 6 deletions(-) >>> >>> diff --git a/libavcodec/d3d12va_encode.c >>> b/libavcodec/d3d12va_encode.c index >>> 9f7a42911e..9ee9da41e3 100644 >>> --- a/libavcodec/d3d12va_encode.c >>> +++ b/libavcodec/d3d12va_encode.c >>> @@ -308,9 +308,9 @@ static int d3d12va_encode_issue(AVCodecContext >*avctx, >>> } >>> >>> pic->header_size = (int)bit_len / 8; >>> - pic->header_size = pic->header_size % ctx- >>>> req.CompressedBitstreamBufferAccessAlignment ? >>> - FFALIGN(pic->header_size, ctx- >>>> req.CompressedBitstreamBufferAccessAlignment) : >>> - pic->header_size; >>> + pic->aligned_header_size = pic->header_size % ctx- >>>> req.CompressedBitstreamBufferAccessAlignment ? >>> + FFALIGN(pic->header_size, ctx- >>>> req.CompressedBitstreamBufferAccessAlignment) : >>> + pic->header_size; >>> >>> hr = ID3D12Resource_Map(pic->output_buffer, 0, NULL, (void **)&ptr); >>> if (FAILED(hr)) { >>> @@ -318,7 +318,7 @@ static int d3d12va_encode_issue(AVCodecContext >*avctx, >>> goto fail; >>> } >>> >>> - memcpy(ptr, data, pic->header_size); >>> + memcpy(ptr, data, pic->aligned_header_size); >>> ID3D12Resource_Unmap(pic->output_buffer, 0, NULL); >>> } >>> >>> @@ -344,10 +344,10 @@ static int d3d12va_encode_issue(AVCodecContext >>> *avctx, >>> >>> input_args.PictureControlDesc.PictureControlCodecData = pic->pic_ctl; >>> input_args.PictureControlDesc.ReferenceFrames = d3d12_refs; >>> - input_args.CurrentFrameBitstreamMetadataSize = pic->header_size; >>> + input_args.CurrentFrameBitstreamMetadataSize = pic- >>>> aligned_header_size; >>> >>> output_args.Bitstream.pBuffer = pic->output_buffer; >>> - output_args.Bitstream.FrameStartOffset = pic->header_size; >>> + output_args.Bitstream.FrameStartOffset = pic- >>>> aligned_header_size; >>> output_args.ReconstructedPicture.pReconstructedPicture = pic- >>>> recon_surface->texture; >>> output_args.ReconstructedPicture.ReconstructedPictureSubresource = 0; >>> output_args.EncoderOutputMetadata.pBuffer = pic- >>>> encoded_metadata; >>> @@ -663,6 +663,12 @@ static int >>> d3d12va_encode_get_coded_data(AVCodecContext *avctx, >>> goto end; >>> ptr = pkt->data; >>> >>> + memcpy(ptr, mapped_data, pic->header_size); >>> + >>> + ptr += pic->header_size; >>> + mapped_data += pic->aligned_header_size; >>> + total_size -= pic->header_size; >>> + >>> memcpy(ptr, mapped_data, total_size); >>> >>> ID3D12Resource_Unmap(pic->output_buffer, 0, NULL); diff --git >>> a/libavcodec/d3d12va_encode.h b/libavcodec/d3d12va_encode.h index >>> 1a0abc5bd0..51440428e4 100644 >>> --- a/libavcodec/d3d12va_encode.h >>> +++ b/libavcodec/d3d12va_encode.h >>> @@ -43,6 +43,7 @@ typedef struct D3D12VAEncodePicture { >>> FFHWBaseEncodePicture base; >>> >>> int header_size; >>> + int aligned_header_size; >>> >>> AVD3D12VAFrame *input_surface; >>> AVD3D12VAFrame *recon_surface; >>> -- >>> 2.45.1.windows.1 >> >> >> The first patch in this patchset has been merged earlier. Will merge this patch if >there's no more comment. >> >> -Tong >> >> >> >> _______________________________________________ >> 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". > >Somehow I missed that patch. You should've ping me when I pushed the first one. > >Pushed. >In Vulkan, we expose the raw packet we've just encoded by wrapping it as an >AVBufferRef, you should consider doing this. Thank you very much! There's already a AVBufferRef of output buffer in D3D12VAEncodePicture. I guess you might mean that. Thanks, Tong _______________________________________________ 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".