From patchwork Mon Jul 8 15:13:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tong Wu X-Patchwork-Id: 50408 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp5856005vqv; Mon, 8 Jul 2024 08:24:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVbfh5i1eCRR7RtZZiXHfPN9RWbEY2lg//zrUPANYkhM7MiJM3bl4+uWrH8boD9ED5jowwQJCMHAQPVeXYw/oON0H7sF0QaFfKThg== X-Google-Smtp-Source: AGHT+IGjvkTjNmmev5Qcy47Xie00bXllkXiW7+egdxcZmvSaKcO4RHzhuwtjhtX3BrXKobVRo4RG X-Received: by 2002:a17:906:4556:b0:a77:b8d2:4566 with SMTP id a640c23a62f3a-a77ba72c927mr692475366b.77.1720452247229; Mon, 08 Jul 2024 08:24:07 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a780a9c84d4si3145466b.186.2024.07.08.08.24.06; Mon, 08 Jul 2024 08:24:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=YWjHXmTm; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C67ED68D8B4; Mon, 8 Jul 2024 18:14:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from AUS01-ME3-obe.outbound.protection.outlook.com (mail-me3aus01olkn2157.outbound.protection.outlook.com [40.92.63.157]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B656F68D85D for ; Mon, 8 Jul 2024 18:14:04 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NYlvG6qptZ86WWUE3CMM0jH7EBhVXF9v+jtJOGKYCK9hT4sySxpEpupmlO4LZAZuL1TgA98ydscJkQvQPLNRIMu4bHOBZTvuQhpaOifiNG/0qgGGIBs9U4rYwi6O6ONe96zUMiojyLz+R1LCPBd6qbDHRm4gGmmsvvX624HYSJtkdgthSQkmM5A0PALTrMxpf5axuZBu3/ivcT3Kn7ADUmOM2CkuK4sxQxf3ZacJGU/HZtCqVKyuylY7W7f9e/d56oog8Z0HLHjAkPMuic4+cjzm0DNTIbIH/krVwqUzRw7ID7ieyxWS87oNaB/PZqKhJk5+EQa72OtxJyrDU8k2QQ== 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=pKgBh9euvQrdkuzdf2Od3u6RVDeG9VBNqwjzZfgotB0=; b=a1Mxgy6WVHH6pkG2N7E3avgObXseid+cXbRQEK7CcZFd0SIu4fcgsJ8EFfoRVRqS926A3xdLV7Keva7J1dG5uwFmjYJGkVkkdotLX53RwebWmtUeAIU0fhdtBlIT7DaRIh4kaEAFJ7X9QKagTPa9s9bpNF40v7y4kLEMsrh6NGsFVmt2tomUAa9kdadm/uh+GA5aZcLG47L62ode6QijsQVefTqqlu0KXCBLpDQCG0jGL5cMsklF15q71IexHfAMWaOqDNav0MA6QOF5RqAC2z3phOAAa3w2f79/J1364QorZo9ppGK3uf0gSXtsqrCk7zU3nx4gH8VtXuwdoTTMAw== 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=pKgBh9euvQrdkuzdf2Od3u6RVDeG9VBNqwjzZfgotB0=; b=YWjHXmTmo2chF1J0liAN1zF69XMAZ+TooJojbcIIl8GtsXSDZs6m9ywJGcKT+zI34z7YkVFdT+CuDgjlFeKj1JQCyepElYIssBwJD6TDii1z1MgcjLwKk049dV2bKzA2c53ZJH3QDMR2Escz1aPPzhbOzE+wo8dW5BbRjWo6qGfSRII5xV28SL4uOuQaKKLyhclIglE7ObEDXMi1W66dPv4nf1MmsW+91HKOGWbB0H1d7fXQnu5TFbqznaogZhTOo6npPyK72Jd5bmSEaJVkD3rlXawiJOZ3Uuk+5gHr+u15kvBrcXlFBQ8l8lWdEdiYvpMnMYPNLxEQdL3ocg6v6g== Received: from SY7P282MB4502.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:27a::13) by ME3P282MB1090.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:8f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Mon, 8 Jul 2024 15:13:53 +0000 Received: from SY7P282MB4502.AUSP282.PROD.OUTLOOK.COM ([fe80::81f7:34e4:ff6f:239d]) by SY7P282MB4502.AUSP282.PROD.OUTLOOK.COM ([fe80::81f7:34e4:ff6f:239d%7]) with mapi id 15.20.7719.022; Mon, 8 Jul 2024 15:13:53 +0000 From: Tong Wu To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Jul 2024 23:13:23 +0800 Message-ID: X-Mailer: git-send-email 2.45.1.windows.1 In-Reply-To: <20240708151323.312-1-wutong1208@outlook.com> References: <20240708151323.312-1-wutong1208@outlook.com> X-TMN: [H8C3vGvFJwBi/EheRsfDeo1hiPLpYv/B] X-ClientProxiedBy: TYAPR03CA0007.apcprd03.prod.outlook.com (2603:1096:404:14::19) To SY7P282MB4502.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:27a::13) X-Microsoft-Original-Message-ID: <20240708151323.312-2-wutong1208@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SY7P282MB4502:EE_|ME3P282MB1090:EE_ X-MS-Office365-Filtering-Correlation-Id: 00103117-db98-460f-c533-08dc9f609456 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpXB0xcNeDVdJIgd0h0Wm5osI0utwFqGnc5eti/5vb5asT9lzql6BTuGFTGpl7aPkZKnTp0Brcb+4eKFYPF/znw4E5xyXG5j4xJvnjuEoz8EDPGzKdaLKBIo6CnjqPHgfAZrr88rNFnGiVv8lvRy0Px8FdgIdxus2k7HYN4KzeqfYFwOp9+IDWaekJaa3C0IMlNc9VxZ7VC5Zk/GvsfVxMoHtxTOoDCfId4edBGQFEd5DjH8DPV2UTM0zvlsDlp55D8L79uq77Tb4u8hvUbimQFlVFRWcHdNmZPaqXnCQMtX1b3ZO5ySLL6YbuJ6nG4+uZbGEh/2t5LzVFx/q5f5ZvFvNwVtIOuYnWfB9JTkHl6fs/+8dCMxzOD08QzzGGw0untSdDkmaw9uMPOAA4oYmeW3H4twczObT6IABdG6gtmBbgTLOcXHUnzVWmhsH9HBxJj5i/5Jd2ZNXFldbJk/J175FlpytWqJSqoNq4DkmyKaMxZLrCpEFUTXFb4mEgjHNkLZtXVJvm5ciphRDDHDlPv7C51sH0iy07PSOxmBvnZVKCEALc2xLxLADhklPQp4+PlNWp02KllsvMZ+JUbm7IUV8VvtKvtDns+DipqH32HB9l0t3Eb3HE4sV6hJLwknrYDcrJEPDjtzUjteXiugaHbcWaI3c8AzNKqDqkC+RbcahzVv2gP+yqQqCqXFknMJlNQPKF2oZw2Ot+v6TMkY+ktvBWA9IqLNRLTGYW0Vzfh+0zhv94G3Rhhu1cTX/akU7Y= X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|19110799003|461199028|3412199025|440099028|1710799026; X-Microsoft-Antispam-Message-Info: ZMPRwpX5uO8hcRI1/in0AqQ9kYcyc88fplcSIa5GwTvQ+N2L03g3JeStUJ0lhvF/FmWpEfYaxLA+z8xXx2rijRjNKMmEEsh3YWSg5hHmciiuAL3KBmcj+WtMyv6cO48nVKhmPNbHhHm/8hcXh/824PDLRHbQ7+M8lEw4kslsC16BYdwUuaNPrkZCp6yItqIs0pyEBBP7cl6fYJ0/k6MNFn0EPw5vBuXW3f7PVW3i7b0/hNH8m2ALucrfAlYMRiZfLqsxh/y5AaVX5XDW5dbV34ro64V7j8GvvzK2D3QvDbc7vaIUJrWXWAio7pkQldDW7i2781Au0fX01afauazAb2wAY3t7/xbABntMxrNbpyxBwfdRt125DQe+OLN84k6OzdY282CQdD9XggQO67H8WZ8JTTRIGQobBnHiqAeDS3P5OtOzMI/VB+w38p4E7NuIebEoWjiQ/HgqXF6nQS9n6rJjDKh6BQdOtXaQfu5dvqqsezg2x9JN1G+MKOKAUXosH0rA2u+Q5qj5cykBPbGaSTgNKK5PpJRt0X4R/u2bgM4MUCOwd0KAk1+UcAdR6LZGEYxE6N9WKNTk9SjGNn+c1IT+CxXcJ6EZdv0dojbHSVwHWMy56osMm+SOtceeKJgLq3r6vWm2CyTWgPis9KdlXeOF0aiIfF05zSErA+uRO0uWFLxxY83N/lcUco/WyA0O X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hnvV7vZpxL4Ft2DgIx8iDJRAKalcD8DI8NKGUcK3OeNNmKafqyV48mmVqEVGTcYBlysqy0WwHhNEgUAzJQiNSBzE8599RfQTKdMWh/F530vs9LG5XZq7oj7wa6P+GKp7yaZzhXcv5kU2x5Wd36TW2H18m8jZM698upd74Y4gYFmi3nCKTfa003vRLj83q2W5R31uqkOdfKM+aySPjQJsp0MgWBHhDvZQSFiRykBt1TT44Qr4c/mNfnhtaF+On3aLRWPBUeWRZlmddOhp7tQFvoJvIBpvvcZ4ZooNWgUkrRN4eB8TuV7AYhUlRAilBh60jqf8sXYrgG35PHLFOuQ4vg78b9j9XVvIUD/riYQqZOEc4ABgtBrj41IpxRTLAarnsUeh36Smf+R6tkJsSEkALKoS6JnLv2HzP+3FaqZWF22RNX683L73MI+sRk/O7RD/nNWQXYJRyA42raFNIzYETTeP+lNIf0v9ic/LYf2ad55/8/hdLeoSm1iGlqFBMfyAp/zdtYUrEzpr0DENyGGX9gYmlDU5LwDr+1JdQpTo0cYuKSrvXkIQJR9RlR38Tx0aZpQb7iuRoErXeFG2XGKIB9yjdan4yaiLp0IxPP6Ne7AN1HmFAnRXTvCFO7zdf+on/p1y/4ORQ9ddWmC43FaoO5ODmUmzIW1qqJ4hb3x0Ne8tvNabkrcJPEHNo+TgEgsBYsQJ4NWdNxGNJZWYa4XgCmWKdqPPUjyjFrIltJxuzjshIYBQYdkRDOA9UxOYzCc3PM/uh0xlgeiMeEFOLHyF7kg6FhlXtYKRnPTSMnQyePbEXJikG58W/4rSeXsAMzMJy87ZFGyVEAYimokKQcz0Mdq+FYK4Ra3ABSXBVNWE6V982tvRAgC9V/vEY9njIG4edd2JRUF7CpYMQzONFFxQR91/iYKfqe1U+6pmNdV7TyLKH6MBu3WH/cgzxidG+FCqG635BnhoKC96hpgbFKlsCyIRs6PXxjsQRkKmJk3Ao4ZpjAq6E5JB5/eKUcdxWUQXIuFT1irk8afxNL5c1akuFQMae3+xqyHTF46PnjiWYhT4xNqlmybh12t3uSEdlVgYjc8qBZOficKALxTTs3YHA82d3pijFYfwK+/gzxIHV4WM3FvBjvVgmlA/MZvatUzNX/fKu2qgSB2xRSM9SXugyvqGWwc5G8WYuKgwgoJHMYujuzOWO+cQQCyF5W7RVWiX5uiM2e7uQpoTZAcvx77RdPp/cTrvy5PveOE4pCtMYEc= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00103117-db98-460f-c533-08dc9f609456 X-MS-Exchange-CrossTenant-AuthSource: SY7P282MB4502.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2024 15:13:53.6159 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ME3P282MB1090 Subject: [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: Tong Wu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: hkBElak3pKTw 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;