From patchwork Sun Jul 31 09:41:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37054 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp1872536pzb; Sun, 31 Jul 2022 02:41:56 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vsHnpoZ1H1zE9yeaxBTIj3ZZOSXcu02O4NpuynpZlbd94o5fJHaGWRX1vh7vkHgaTsL8Ty X-Received: by 2002:a05:6402:26d6:b0:43c:ff17:7508 with SMTP id x22-20020a05640226d600b0043cff177508mr11084352edd.26.1659260515957; Sun, 31 Jul 2022 02:41:55 -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 y2-20020a056402358200b0043be28d93adsi5357086edc.261.2022.07.31.02.41.55; Sun, 31 Jul 2022 02:41:55 -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=PQ3se3vy; 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 C6C4368BA7C; Sun, 31 Jul 2022 12:41:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075032.outbound.protection.outlook.com [40.92.75.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F114268BA50 for ; Sun, 31 Jul 2022 12:41:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pd0mLOpdv/wxJe2dQ7WHHJt6Lgrx+ZpCdQbNGzM7BS0ItBiBavhJNDQh5PgQsCUrxKyYy8ShYtgmg2FKCz8xolAOIdhRBpLIbw9a7qXQ8+At6BdZPnhEuy+/zPzj5Jw0217P5VmV2DUbmkqAgfc6lvCrzMABavTFFduwdOw6K9sqen0jXh3Dq2oqagW/T5Bd94a9hLZQY1bD1qrY62AAUgXrXQaZ5ZFalUmKcc7iXenWgoS5Kch5vi0do4jXY4K+3/fnJTjxOEPOFPUJUKVMZ9PMrBZ5zwjRGphzzL7HyaU4yhBvN80rXVypR0HFR70owZe11yOgjXzGpigbTG9kcw== 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=zZMlPKVT9l0h62yImTvcr1clCRSDHVUj4ywugI9pWw8=; b=NqqyFOEIBdMayNv97VOOAEFSDtPdXc67qQqNVbn8SbxjWeohciMJmmQB800KU8dNqFrqHNgBM8V9mgI9uBaq98fo04mWQ+EQ3FRfFYKwzQYCcOSppfjgVe0L2dhJ/1E9m6DYyDFyxfNM6g8AXD6QTMCoZXSig4XUdtBw/rDXC30xrF7lVuBUWMmfFB50M5Q2s7gYmtXlZMo0EiyeIWnirl1AXfXDhy/5Nd50zKWei4dAwfma207INPJpJZvHlYldhxi9/rXI/kpd+Hun59ajvqIUKBX8MU1Kzgdhc7baxs42w9cnNXpd7bSz+MuHBckT4Zw54vQavX1Su/lwOOuQBA== 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=zZMlPKVT9l0h62yImTvcr1clCRSDHVUj4ywugI9pWw8=; b=PQ3se3vyl2KcAmIhjnK/9Yz6uMhNfbmBdGji2JYv1lRW+cgUnJpfpntJFv3/Rv4boXuHOeCdk3nwHiCRm6m51N3viMyZpIyqYWECgfFUWdxxk+q1TGAiPX8MdvMmILo/cWvWpZIYUDIm/KrarNa7Bv/IaTsKNlIEYtxHIVrXKCrwALaRMmQ9t4ci8Ntsr5l8D0xM8SOjovMXU4TtudzG0eiquaag7rXhGifcLqCIvbj5A8AUVj3H0BJtQlWq+5in5qsHbbrBOZ3h1SPJmEWPP9t80OPeJeuKgwRSMY7kU9O5pO4/tFhZvurhhe7LX18ox9zlx4t4stmehzFfGviO+Q== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4574.eurprd01.prod.exchangelabs.com (2603:10a6:803:a4::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.10; Sun, 31 Jul 2022 09:41:31 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5482.014; Sun, 31 Jul 2022 09:41:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 Jul 2022 11:41:19 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [bAXtxhP2KAeYdmEHExqgnv9x4bv7aCXF] X-ClientProxiedBy: ZR0P278CA0035.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::22) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220731094119.1701898-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 392f9191-abee-4dfd-4dfe-08da72d8d94a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTYJKRSe9Ri/N60nt0LRYq+VxTgz/tJDI9VbUaa+t981rMnusnBFviJiluKqjbY2mpJH2Al7+gx/6vZbh/0RFNs87f8uw4mUPWe+nEKhIUJxKLlpe8OuKJaM8tTk6zVOa/fQrqTBWmAkcx4j815E5wI5GjCAxcY6J1lNf9G50Yl+QKa/bNGXGM2JFgDJ8VF2F1SX7R1TtA7FRnKiPxd2BJA9WyjyRvxTYqhSWxCw7UqPrS/Fr0YF1O0yOw8zg9dXvA6VdQ3Co6JQqoHaV0ri9YuE/gkCMD7xlErboSl8Y3QosP3tvdzVzHSBPTdy2+ujHU6kf6KPhPkUyd38VgfSiV2JjmLJYnCHwW9jFxUsYA5udqO9CidyRlF+VJZgWWAvZ7+vMyK79ru5+Z5OQA1YxT1/n8xu+lZVbpNWTABoHH6KrmTQ55QiZZ23K1YUdmtaPUnr93fzxxwyUJ71dgZqeNBlARh2fz2V2CFtTJHSj5JoDRna0EYQjgOcVHZfqVFRQ2muWO11oAfQ4mZQYMkAlsakYadhqWfjUJQSB27cWieGtsVXSTI2CsMvPN5aTZHgadyBa1mRLzcxSyKJ00DfUSxKgoE7hHQal7sUh3NZEmENfqV8Ox486f5MB6reNsN45m5EnyLqiXYiD7bYAu823Mt/Y17VglaynBJ/NwzLE4SirddMtyLkWNyJmm4JV2FCPxnXvPcOXcANcbP/wUKyu6SekMgcQA6RT6B4nxW4+TlE6TJ9HnGBY307ITuI79WpaE= X-MS-TrafficTypeDiagnostic: VI1PR01MB4574:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GVS2ca9NCghhE3PCwuE7Fyz5Q3DHxF6su3QU4N6OhryajOg+QrjL5X9Iw3RXJPK7sMxhFRLgtSPf2+CTE/GidvFYuqO13w+EZ2W0n2E3drglmFanKAoug8Y2wFZGfXi5qEZilNDcoS9AAHJzToI35O8d3BvsfOm8OCsOi27PJ2Hu+W276iS+eMYspqD5uSAdMO/9drnDkIbnzyvBkUg0NNRW1HX/7uMZ0E9E6kO0HCWcYiCi7A0yKAZvMSshIQH538db+ADKdV8hDR1O6lNrZcgvRim8vXOGnikkN1k3m+IJ8AdvPtw4PYZngP6J/uYEYveLSRzPbjvE0WgQG/i4CY3ooPPGqP9ckVmCG0XrVKnZfdRQaPcISqnoQ5j/7YLnfORlTgsdEbO/S6GTTUnMDNhQEEPn0uhxF+5LkSAiJQFJzVw1qbywjZiPLdLdBjd2e6BAf5UO3LeITngNa5QcsMM9jI9NHTlyLwJ+T8qGkFH5EHoBj71tBQ29MGoKV2vyT9qLAK7CanehTHLIMLE5uYHfzrIYnhl//9CiTpX7K5qxsU/qmj+t9tjrsrjpaD/BhhmR2FldZ0d+4SY0TcR6nmhxko+jAVKgS89RmSzBNa5csRmomMYiiXPFBFiIrfH2sb8JM+JxX6sErkRajRrjqQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wqPIXMgrpZDsJki8SSw2wc+GN6v2jnL0UBdfG4VewfsQ1R90lBOw4EYT026bd1K1HK318uXcZZyGt4sdErDVAmm0MfndEaeVK4vNRip/+giqvb+jQVt9NmbGrIhSagm9vdHHfiXiw6xLOmEKfCMt/bxxUrD9trWb7JZcWnmayXcNI2CvmF4/KO24p5ojLgisC+Ul2hMc2zDfqIU5SH0WM5mV47yXzOp7Bh+O1i0Uuhx5V1GV5vw+WQeRxEixlmZxWZwh1pP0VfMBaoKBoQtlUkOsenFFbuBQk5kL5OacbcAvR9DGCZlft9QZzRrsqRKmf08hWCKSvkuTDXpGHbi/RAv5yV0Tm/fmIsvJ2Jo4x3e19F6k6PoKTba6UpCfyqwZQQNGL0JKWzjIxF937m4pPTfDYy1dwsFhy5gKPOdT3H7vEyOjwgygP0TVGBbOhDX8RffRhbx41ntFCCMvPiDzrn/iCTBwyGHQEbjtWcrLoxiucHwCDnvn2Q0F0F1XMFvU99pttjP2w53k+fmvOry1z25PrCIJQNlRdADInTQVlcQOTLlqLyHYCGnAcB2T3yIJwKbweO0zRGVUJIN92NIZBa2ce5gXPkCjAIYMrU/xeDzvSE/07tT89eO8vQeNizzMk5hI6ERrJYWs/S4Vk9M571Ve1CxgfM4Wyt23xwkVDBAcJKESnNHDgLN0/ollKX0A1/p+JV05O+01GcBGVgX25KcauevSw7R4dLPKRZa1ZBfu1YtiiaKgUNy9HY7V+tyUvmF6hkBHgSwJ/H6QcrM7WeEt6a+9VvR2J2hltkUC+eiW+9ifKngtTgp7diQdhyKZtd1wSA8ttxDrjiZg6cPt2yL3rCz33rEni1bvzt+UtKBwcK6wRTF8eJKWgBf1yGLqdRiEY17C39U8JatPnoL4ZaLR4OugFNU8NH9a3qIgjEBSI5MzC7ZM/HbJX8qELkNF53RkbAVXsge09sKqCedVLUT8ypzXcyQzRTkfiXHgXgqeoSrJwSzoXfXekLfaeGjCKZqpk5DXGnhJG43rgwmca6Emgu8dK0F8CBThpAt4QIQnC5dUR8JPQ5uvS2osxool9aFKpFrO4n4AvxwTG8fjiVnkj8YQahFTx9gWAqf6fH9AkK8fhC7vLvxT9qo/j9lcANj66l5VfFsOqFCdi9atbQlqL4o04kX+x5Y9vsDQK0wSN42E7PgjV73FkN5aM7xaoGHPSsr7AcLs6Hno7DUjwD/fMJjDwYY+ye3gNzXoBw9T3Si7YbwkvPGtyKCPA1YO79DkLQGgxzHksaJKIWeFPZ3R2QYYWKEdQ1kYXohJ9Wg= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 392f9191-abee-4dfd-4dfe-08da72d8d94a X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2022 09:41:31.2874 (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: VI1PR01MB4574 Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/intrax8: Avoid indirection when accessing VLC table 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: GK+0Fha8rNQp To do so, store the pointer to the VLC table and not to the VLC. This is possible, because all the VLCs of the same type use the same number of bits. Also use a const VLCElem*, because the target is static and must therefore not be modified after its initialization. Signed-off-by: Andreas Rheinhardt --- libavcodec/intrax8.c | 24 ++++++++++++------------ libavcodec/intrax8.h | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c index b99e8590b1..e82cb8680e 100644 --- a/libavcodec/intrax8.c +++ b/libavcodec/intrax8.c @@ -91,9 +91,9 @@ static av_cold void x8_vlc_init(void) static void x8_reset_vlc_tables(IntraX8Context *w) { - memset(w->j_dc_vlc, 0, sizeof(w->j_dc_vlc)); - memset(w->j_ac_vlc, 0, sizeof(w->j_ac_vlc)); - w->j_orient_vlc = NULL; + memset(w->j_dc_vlc_table, 0, sizeof(w->j_dc_vlc_table)); + memset(w->j_ac_vlc_table, 0, sizeof(w->j_ac_vlc_table)); + w->j_orient_vlc_table = NULL; } static inline void x8_select_ac_table(IntraX8Context *const w, int mode) @@ -102,23 +102,23 @@ static inline void x8_select_ac_table(IntraX8Context *const w, int mode) av_assert2(mode < 4); - if (w->j_ac_vlc[mode]) + if (w->j_ac_vlc_table[mode]) return; table_index = get_bits(w->gb, 3); // 2 modes use same tables - w->j_ac_vlc[mode] = &j_ac_vlc[w->quant < 13][mode >> 1][table_index]; + w->j_ac_vlc_table[mode] = j_ac_vlc[w->quant < 13][mode >> 1][table_index].table; av_assert2(w->j_ac_vlc[mode]); } static inline int x8_get_orient_vlc(IntraX8Context *w) { - if (!w->j_orient_vlc) { + if (!w->j_orient_vlc_table) { int table_index = get_bits(w->gb, 1 + (w->quant < 13)); - w->j_orient_vlc = &j_orient_vlc[w->quant < 13][table_index]; + w->j_orient_vlc_table = j_orient_vlc[w->quant < 13][table_index].table; } - return get_vlc2(w->gb, w->j_orient_vlc->table, OR_VLC_BITS, OR_VLC_MTD); + return get_vlc2(w->gb, w->j_orient_vlc_table, OR_VLC_BITS, OR_VLC_MTD); } #define extra_bits(eb) (eb) // 3 bits @@ -174,7 +174,7 @@ static void x8_get_ac_rlf(IntraX8Context *const w, const int mode, int i, e; // x8_select_ac_table(w, mode); - i = get_vlc2(w->gb, w->j_ac_vlc[mode]->table, AC_VLC_BITS, AC_VLC_MTD); + i = get_vlc2(w->gb, w->j_ac_vlc_table[mode], AC_VLC_BITS, AC_VLC_MTD); if (i < 46) { // [0-45] int t, l; @@ -254,13 +254,13 @@ static int x8_get_dc_rlf(IntraX8Context *const w, const int mode, int i, e, c; av_assert2(mode < 3); - if (!w->j_dc_vlc[mode]) { + if (!w->j_dc_vlc_table[mode]) { int table_index = get_bits(w->gb, 3); // 4 modes, same table - w->j_dc_vlc[mode] = &j_dc_vlc[w->quant < 13][table_index]; + w->j_dc_vlc_table[mode] = j_dc_vlc[w->quant < 13][table_index].table; } - i = get_vlc2(w->gb, w->j_dc_vlc[mode]->table, DC_VLC_BITS, DC_VLC_MTD); + i = get_vlc2(w->gb, w->j_dc_vlc_table[mode], DC_VLC_BITS, DC_VLC_MTD); /* (i >= 17) { i -= 17; final =1; } */ c = i > 16; diff --git a/libavcodec/intrax8.h b/libavcodec/intrax8.h index 3ebbf73434..c994b14abe 100644 --- a/libavcodec/intrax8.h +++ b/libavcodec/intrax8.h @@ -27,9 +27,9 @@ #include "mpegpicture.h" typedef struct IntraX8Context { - VLC *j_ac_vlc[4]; // they point to the static j_mb_vlc - VLC *j_orient_vlc; - VLC *j_dc_vlc[3]; + const VLCElem *j_ac_vlc_table[4]; // they point to the static j_mb_vlc + const VLCElem *j_orient_vlc_table; + const VLCElem *j_dc_vlc_table[3]; int use_quant_matrix;