From patchwork Sat Mar 30 03:15:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47668 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp2319428pzb; Fri, 29 Mar 2024 20:15:50 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUbWzQ7dAXznwt/32BfegMvK+f3JJMVG2PXlCLVZK161MNQeMM118zm/xCpuDyScMZkVZNVFgrDylyQW5hoIVUkV01qrxEtEUxg0A== X-Google-Smtp-Source: AGHT+IH+vHZxGcopmMXxvNciuCdPTxsrLWFVR+TLnuWq0WkCzlimIiQHDzsjQU/6Jiltbpo8SRjU X-Received: by 2002:a19:e04e:0:b0:513:c428:9daa with SMTP id g14-20020a19e04e000000b00513c4289daamr2336362lfj.0.1711768550070; Fri, 29 Mar 2024 20:15:50 -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 kv2-20020a17090778c200b00a48475a0ee1si2349442ejc.547.2024.03.29.20.15.49; Fri, 29 Mar 2024 20:15:50 -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=Uc9IfAzG; 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 4D36768D456; Sat, 30 Mar 2024 05:15:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2049.outbound.protection.outlook.com [40.92.89.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED08868D414 for ; Sat, 30 Mar 2024 05:15:26 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iKgCg6eqfN8CDWvekHiBehZ/eCui5mdmtqUXOjerxK2oS/I9MP7hvZL0suh/xwvWuqGYf5xZ6epbbOVuu3L8gX+iGh7ylvmObKXZ4B9qPJ9cwEd/HsRrNG1Tw81vM3xBrpr093bfIBaJYXLJBw3tyh9uvLLORbVZumEGPkRi3fBvNeZ+Dmh+yVhjq5uPG+diG/AjqOYIS2wU+2i2JDhELIoZvuVMLU5n4i1NvkJUd/Alg94hZ6+HsG1ZAEVWmWrgYYw1YGsdjgW+ZGcng3Do3+XYW+UYHuUpATOPUqoVfFOn3VN4Sot9ziXw3/HkS7WmpXa94j9v1YNzKDGdEbJ38g== 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=R+Ikoj+0tPTysPLdwJzhowHd4eyo7vC6XBiDDStPXjY=; b=Ewv7Rb7i/SMcmvDFNZmV0dB1R4GMYrCrih1GucgwMqTE7VdWfnVJ3HCHEC0nQx7XXUMPxov4wDIzBKrQLH4UV7U01OvEPleCjINhwWaoyUZbH4F6mUGPpBAXoB7yx/ma3drwbVK44P0YkXg8T3ci5EPc+wuptBI/plRt45kLRkwKyR20bS0A06rcsU9yO5SiI2CQghpk0+X8yPx0Tp8ZNLLHBdo2MVI9xCr5xOR+1cQupUUnUNmCzE2ukMMf5w+Q1o333xwMstqA3G3jO1WfNY9uRa9wRApCeL/iytBVF9DX8peGC3QFK06oAqkCHRlD+/c82n6H/sTH2HwLRFW8SQ== 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=R+Ikoj+0tPTysPLdwJzhowHd4eyo7vC6XBiDDStPXjY=; b=Uc9IfAzGYYxUJqcoB+uqpH+YdmpEa746xKtFk+eRUbxPznYimaDLpaTRIFovzE0o1ed5EpZTQOG0hZxk46v0k8DGaYIgBlpiW9Qvamatwq3wBiFELLnNFqZHd5qPwG5uz2RaIMvQapbo015r1goanrz3rOj2rYb1tmQNN8KHclVYTJC3XL09GsX9/tcpIEGhDagz9Fp18mMpq9baj487K0cC/n5xDm1l75HetLOQJBgihiXs303Vt4KbEmfqEedEWgRrYYa/f4EElDh7ffy+W9+7rWJaU8BNDUDM6/fbIzcuWRocrOjnOGzC4K9fKOOPWX2gYWEbjiFxo4xSI/7slA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0038.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:359::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.42; Sat, 30 Mar 2024 03:15:25 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.039; Sat, 30 Mar 2024 03:15:25 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 30 Mar 2024 04:15:12 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [2z3CO/wmNv7ePlWEyUvQIwu5Ehrr0r3Nu8YiDC0Ca7Y=] X-ClientProxiedBy: FR3P281CA0172.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a0::10) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240330031512.2615619-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0038:EE_ X-MS-Office365-Filtering-Correlation-Id: ee12a01c-dda7-4c1a-f4a8-08dc5067a4c4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WcGfStJypdR1bAMOGppifScP2bq5Yip/pyJ/UHxHXPmHuB7p8PewMDzodEVxw5EvkFdGMNcPQ3m/8A9V4Qokn+pPFv6ee+RAB5NsXUe5LSLf/7Qb8XH7kvrmcmy+P2ZFggD9RwfNTHXtLo9scbWewLTCXpeQyRvQjS6fNUdyi0xpglDLYoPGJYyImCai8IXGvbmUuiEqPlUeHR4SIcNUFibFyy+/l/JBUD6adnsY0EtODceXYNUOSiWrG6AJPKkwOo/Sx7QD24MDBq4u2sRuuldVUOksqxJhKN5YDZeDw+GiZtwcmmhEvpvH0gushGrjYWeP+owSFlEJwDVO0GEeRd5rqmM7/ojzVdde6hjEIRjEirMv6ZZ7c6NDQp35GDnzzW35I4R0vpswVzq6l6gn7DTkKv2bpxTj6BqkNT051KvOByirEOiGae1znCFbBZkLZQxYKPi/LF094f1pOZUriV/4kFy8ipVKrBUe8Sgq2O3A03EoOH+LRc+LY3hp81r7THYm0XemeeCo+6tYoHOV6DQ2Cfk8KdhQDCN9X00A+lcDQYnXbHu5+f3kDNSSuK+pxbDT3gP/VNLptIkbrrbNXlAJ8y2+gdVsjKRarxLdCSdBqCppbgQVQ5u+b31Az08K X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jeSmDGL+kpEas+PGSJmbidz+4v6Hvu+2Ri4bJbdG7OnnqRgmUy4zOSKIF4fESvnvCv2U+Afbq7x6qFi1M4lYjUGvy5/FRGGDEBelpo5qfD0+z7r95tlWkWXj2wIKf1mc988yvEiwKoJXtCfREVNSvZrV8YB3AqdFuw9XiRPQPWoH44vo5wujcVbFdxA9OaL+yLmzr7E5oLXUIiqudZ44FPK0N2drrJDoyyhpBMEET1kmrNLh5Yd28saINBEY+A8iE//vlVtH9gTVe4Dbueb8+15dANC6pyFLZtdLDCbLsTXcw1S7D2Ibd5IXnBKHWrxdNgZYnd1eBd8fpitA3f/T1pIJfSKc7np+DwSvDnPE4oeZWUK9IHUNCDMmgJLO8GQ6KYpqRmh1FydEcY1UwqmzqFxCfMjLJ6BXRxHlZazz0VP+asqeKbWPGKAbQaUXIFuL6HlWRDJlvyIiwPDIjB718xbn406BdbNtgE+0qhoMdjIIV3t7/PjeTVKw1D3NwO53ZBeueW7oEkCOWwezp8kPst0wcy5oSSKlePO90Cfp6m2i6VFG8Bm/xipVGr3M7//V5RzNUd9wEFwK9LJ19OBd/bOTBYtEoVr77rMZ9ugo78/d9CuUlLLpx7X3uaq6FcWgGuTMsCCTc10/5Y3UhYOarxMDtyOtGZCkrywom7KOctyjeuumxDxiPLNa0cT+iqg5BVYwjNwdUrCrBXNpR5+hVUzlagf85BHPXA7HfkxcUX+AuAHfb+WnVUe65+5gDZgksPdhBPXq5UbCOdy8jruPGJwlCq17XGxiKXmrrZYVDxd6e5se8zyzX1E/lBHqmBVe4kgIij0zW20VoKsUWJMKcLi1Z+l5fktvF2jwWTGQD5jJcqyz20zyx+e+HRFyDQagNP085+oeV2YMn4o0VQe0B9AKKLjHD3JO3j8dfH8l1hcYRiEUJglE4N4iio2GlGPUS5hzhUOqC7G4OSLKQi51mFvs/Y95xT7u+8hEqYv8CyBgf7TPL+TfaAbqEOYVAdBwaYgMYVQY3ijZ9GPh4S2HGoxwnZQTnAB9laJEViSQXqcAYmA2HW5WF6lBD+qQLBYGoPFrES0ra+AkEyUzLu7A4RwAPS/93JSL0y3guueIDBnTcj8wEXZrz+IDmU9oh3PHugQlzKPD1zxSzcY84sNvDwcJDN+KrPPza6O63CrmcAXAbVZ5zQexG/7vdUkHZK5mmU1aFx3uFPE3X6AHDfHQwT90hNN65Cpt1vrhaeLcskqoa1GIN/rRx4RC2ho6cBzADpnhykS0fC6lbUcg+qHLVA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee12a01c-dda7-4c1a-f4a8-08dc5067a4c4 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2024 03:15:25.7444 (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: AS8P250MB0038 Subject: [FFmpeg-devel] [PATCH 12/12] avcodec/vlc: Use union of uint8_t and uint16_t in VLC_MULTI_ELEM 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3uBC6EPEFoyZ It is more natural and simplifies writing these arrays. Signed-off-by: Andreas Rheinhardt --- libavcodec/bitstream_template.h | 2 +- libavcodec/vlc.c | 8 ++++---- libavcodec/vlc.h | 5 ++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/bitstream_template.h b/libavcodec/bitstream_template.h index c8e4a5131e..bbb8dfa555 100644 --- a/libavcodec/bitstream_template.h +++ b/libavcodec/bitstream_template.h @@ -542,7 +542,7 @@ static inline int BS_FUNC(read_vlc_multi)(BSCTX *bc, uint8_t dst[8], unsigned idx = BS_FUNC(peek)(bc, bits); int ret, nb_bits, code, n = Jtable[idx].len; if (Jtable[idx].num) { - AV_COPY64U(dst, Jtable[idx].val); + AV_COPY64U(dst, Jtable[idx].val8); ret = Jtable[idx].num; } else { code = table[idx].sym; diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index e01cc41689..e89866e869 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -440,8 +440,8 @@ static void add_level(VLC_MULTI_ELEM *table, const int is16bit, code = curcode + (buf[t].code >> curlen); newlimit = curlimit - l; l += curlen; - if (is16bit) AV_WN16(info.val+2*curlevel, sym); - else info.val[curlevel] = sym&0xFF; + if (is16bit) info.val16[curlevel] = sym; + else info.val8[curlevel] = sym&0xFF; if (curlevel) { // let's not add single entries uint32_t val = code >> (32 - numbits); @@ -500,9 +500,9 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, table[j].len = single->table[j].len; table[j].num = single->table[j].len > 0 ? 1 : 0; if (is16bit) - AV_WN16(table[j].val, single->table[j].sym); + table[j].val16[0] = single->table[j].sym; else - table[j].val[0] = single->table[j].sym; + table[j].val8[0] = single->table[j].sym; } add_level(table, is16bit, nb_codes, numbits, buf, diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h index 0cc106c499..bf7b0e65b4 100644 --- a/libavcodec/vlc.h +++ b/libavcodec/vlc.h @@ -40,7 +40,10 @@ typedef struct VLC { } VLC; typedef struct VLC_MULTI_ELEM { - uint8_t val[VLC_MULTI_MAX_SYMBOLS]; + union { + uint8_t val8[VLC_MULTI_MAX_SYMBOLS]; + uint16_t val16[VLC_MULTI_MAX_SYMBOLS / 2]; + }; int8_t len; // -31,32 uint8_t num; } VLC_MULTI_ELEM;