From patchwork Tue Sep 26 22:12:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43918 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2205900pzh; Tue, 26 Sep 2023 15:12:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHVHKcjE4vX/96LEqZPaYVGlpfLyNFrg6QtJUM9MAM6nKrmDNYrfWXDGK0lOpgAjn0z2VYx X-Received: by 2002:a05:600c:2207:b0:401:dc7e:b688 with SMTP id z7-20020a05600c220700b00401dc7eb688mr220507wml.6.1695766347608; Tue, 26 Sep 2023 15:12:27 -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 b8-20020aa7cd08000000b00532bfbec519si11904832edw.272.2023.09.26.15.12.27; Tue, 26 Sep 2023 15:12:27 -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=rl8aDI2S; 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 D380368CA65; Wed, 27 Sep 2023 01:12:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2073.outbound.protection.outlook.com [40.92.91.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3553B68B723 for ; Wed, 27 Sep 2023 01:12:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ggji3Z9y1n9+vRXsJyyrvAgW9axZer0AXRQNak2iV23g1oZFTq+kGB4HkM0ZpElXdFVytpmnOEB+o4xC9hcEVZjG6YTp5TOXVb588wp4u2V9FVlH+YhLGSa4ElCd3UBu6Z9Ppsl/QuvoJm2YrVoROpnQs8B17vFNlcg1b5MkDBZG4ffn5TnaPwyQPRDePtlipOvVtgONHjtVY6xJ3JR1NNdvnWv3bwoKa//k32HH5TQ7+18AglO3ZQp+wh+I+481fdvA5JBFGvEVQ2nQwuXPch7fEHM82voefAVvGWwlILFfQ6IIbzJd/F9drITHSF3Uz5ZTUzB1RX45Eh75QLwLoA== 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=M/2Pkicw9YTMatZtZDZFQfrNkNPeXk66zlOkV/i2HoU=; b=fq2mlDz2dFqCsbNvjTFjMfZs3CIIkjhxPjP+VMIr0Atl0KgBiqlcENOURP1ijyRG47R7pJMG3Jq1DNI/TIpAdUeh0wXLFmVKXHX1Ez7nL+LMnH/msH4vFsMlbIudcjNjfppE5TXjnIsrVnocRB7bGsohLKfulISkaaSmPco+82Tqa3gpV6vbHJzErswT5vx2AcVEqPhfY2uVohwUSE86fnIBb7Rg1lMtU3mmojIpI2qX1fSSIyrrpIlWjLSq2U/0t0QQAfm1seG9vPpzwcheBbpXYjqwD2DIlHVq/ZfUmPEe+tVHbh9h9Ec4eCZ9YO6klqLcrZ/Wy7N97U84MwDung== 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=M/2Pkicw9YTMatZtZDZFQfrNkNPeXk66zlOkV/i2HoU=; b=rl8aDI2SN8WF/dMrJ0V465qzfs5l06kSTMcRODBnhBtFD0bzFbaDOgI4/jyJAtTaj7OH1+xXPWwVYs+wG5i7PPUhphAR62mTBk4I67n7itqWzWig55pOJ1yrKESdvZ9ZpXyevcwCm1AsbPDKpzTKZFUxvKyJNUcvsZdYPiizBA93WVcANzQcrXU/HOKItahVP8V74ADtdbZZmjlyNDzvC6/1bjLICa2ir4PS12kV6nPMLfqhY4CFmoprGXGQHvxiHhaY3V0bvjhsoOh6B/k82A4RI7bB6WU6RUixcCm69eyVvTbUdMzaVLveHRa9Fj2Wjw6v6xAEK++PhyaeUf3PiQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0350.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:12:16 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:12:16 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:12:19 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [VWxOdWn9hzavxFjagPI0ydCFeWyWxRSO] X-ClientProxiedBy: ZR0P278CA0078.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221319.3711411-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0350:EE_ X-MS-Office365-Filtering-Correlation-Id: d6d9d1d8-2631-4422-6323-08dbbedda4a4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PN9/idqBeXcWdgceW4C9rnftJ5JJCQm0cZ69wBz2fejc2WEaoYeqqp5amhqpGRdZ+iwQuLhvdJ1w0VfZyVlEqL0R9ORXPmpmkt65fAGCfWPM/cPR6eEdcMTMOCyIdqXLuTkIKc/bs7qdEghe1eRC36Xt1uM+xjek6sjmlukXcJqA/07G2fZq8m9tw9GggasyuhIrdG26rHc1eXKE1Vv5Y8Cp74ybZ62m0XvwzTygdz/Yy+xAozOiE189Cm4mnzageYi+6Wc4ToJlDoGwDCd2Hhv5MoXD0ESMxmcE96L590wHUYYJiWqANrXbsP3sPS4boedqMQISaEwBWZCd++QhSXCA0tJsfQmmqLAQbULcWcdYaAu2LP5FCgzDm7fauxWqgVdPDr2/+/dbEMhsW5UHn5fMibzs6y+JQzl4/64gNIPHxZTzROH8XTfQmK8rav98pklhLvuC8uVJIB2DXwATJn/hDMn5UohDSScfAbbVdXrqpvGtMHfyB7vHBaQN0dDbNWNMGxn86BVaQkvFkQa+UoWGCxZtdd/ARzytAlzwQr7uiBxb6Ou3wDDgYVV93nXq0v/PqOYW2OrNPERobBooEmbOKSU+yPjFopYQHYmiKCtxFS/iwBORumOtsxfUvoH/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: caPm86nsSAv+slAiWNyoj7CqbeXc5cND0An1gqfSd8trncmwR6BNBqQgu9J6oqh9mMIOC5ZD3VjJWTqqPbsy5ou7l0yUw/EbMluwT6bYpw8Zy73UqrqPyD5otrygGs3jUl1AKiZ81sQHcMykFsSDIbn6yrKt464Y6+SL1/cYS4ZsNSpIKGl5Ki+WoVR3zEkukyK3CSMh4GBrIEMtuhxZjBEN0mlT3OBwm0QprmS7sPyOBQwvA1qn0fWgKbFlc+1sFQgBkFYCRNJ3WDI7RgEG0tVp2HdbZM56tRqDpe/3MdG0IQ4JQFBY1j6cAeRtdL/B1HE0CPbDWIuo1Lz3mzQowFVwoUhgEkDueU3wiWcGdqfeWWDk8LUQK/gN+v3sxekKUtILh+NS/e9z/r0DeapdcDtpUeEUj6rsH3q8daztYNI/W3PIsIRox9+GNUm6eDpSdQKhQWATbQjlI+Oeg6iaV/ThNN+xzvK9S6DkJo/H81GzGW8tGtvhgJaAnKwxdLOtguRh9PVAPvB+NtoNQ4/KsMimeytktk6YmNC7UZQR5pvAEEh9WSXMRQ1UhC2wWDsqFwD0wb9JCfYAtag1+R6j9c+Bvq+cnBqBwIp0vN+WFjSOuOr4jTyUhWa2M2MLeDO01TwXBPuCFbfpdm7KjvxnGexhMx7r67RYCFWmVKkem74v4rYSCdetr6Jl61KLRX6XMJop4U5XoqvAGifHlOQ1qwujCQ22dhS5OV8vzP6Y8t9yfZ91X9A41tjuAJ9sRh54TIa95YTVCgHb4pnXSibMH4D7VB/r30ns2pcsgiQA+RYsPQPj1H31XMMHhOlxsLx5ZRAOkoYLTTd401HBsTlVj3H5C8Jef3BoGh//m7+3vVQmyiuYebihG1qYRqjDbSRp7XI96znKM8v68/RWLo6V0Ga4qtzQKEdQzFq9BiKr+n/hhCKGIYirSgy3snQ3Xqxo/eeJamare7Wsv6FKEu5TTiqJzZOw1oOcit3jEAgp6r1oZu9Ni/5kWqd82NkSgcWxsa56/Td5wQ6gqByiYUfXi+cE3m+WBQzVf3Bk1KxoKzwSMcIh1TxtOfgOgNXy5fIXz45rVPd2MqnFxR4/VJkG7OvnaCOckgNVH8eCPALsPLUNbMJi+tsjUqiSKNkJh56hrp4T0BVNu0c6notRKbD35gu+I1zq1LHIM7oR2lvPrRBPuBg5hESg/8vZmLNGYezN+fx4s+Wr9TuOTtPVKBiSb9JQ8PfeGms5+l8eWNcRNIvO5QQPIL4UVBwlMu7Gsuw6 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6d9d1d8-2631-4422-6323-08dbbedda4a4 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:12:16.4721 (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: DU2P250MB0350 Subject: [FFmpeg-devel] [PATCH 01/61] avcodec/vlc: Add functions to init static VLCElem[] without VLC 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: TLACGVVYzql+ For lots of static VLCs, the number of bits is not read from VLC.bits, but rather a compile-constant that is hardcoded at the callsite of get_vlc2(). Only VLC.table is ever used and not using it directly is just an unnecessary indirection. This commit adds helper functions and macros to avoid the VLC structure when initializing VLC tables; there are 2x2 functions: Two choices for init_sparse or from_lengths and two choices for "overlong" initialization (as used when multiple VLCs are initialized that share the same underlying table). Signed-off-by: Andreas Rheinhardt --- libavcodec/vlc.c | 68 +++++++++++++++++++++++++++++++ libavcodec/vlc.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c index 21b9fffe27..b5de0bd24e 100644 --- a/libavcodec/vlc.c +++ b/libavcodec/vlc.c @@ -350,6 +350,74 @@ fail: return AVERROR_INVALIDDATA; } +av_cold void ff_vlc_init_table_from_lengths(VLCElem table[], int table_size, + int nb_bits, int nb_codes, + const int8_t *lens, int lens_wrap, + const void *symbols, int symbols_wrap, int symbols_size, + int offset, int flags) +{ + VLC vlc = { .table = table, .table_allocated = table_size }; + + ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, lens, lens_wrap, + symbols, symbols_wrap, symbols_size, + offset, flags | VLC_INIT_USE_STATIC, NULL); +} + +av_cold const VLCElem *ff_vlc_init_tables_from_lengths(VLCInitState *state, + int nb_bits, int nb_codes, + const int8_t *lens, int lens_wrap, + const void *symbols, int symbols_wrap, int symbols_size, + int offset, int flags) +{ + VLC vlc = { .table = state->table, .table_allocated = state->size }; + + ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, lens, lens_wrap, + symbols, symbols_wrap, symbols_size, + offset, flags | VLC_INIT_STATIC_OVERLONG, NULL); + + state->table += vlc.table_size; + state->size -= vlc.table_size; + + return vlc.table; +} + +av_cold void ff_vlc_init_table_sparse(VLCElem table[], int table_size, + int nb_bits, int nb_codes, + const void *bits, int bits_wrap, int bits_size, + const void *codes, int codes_wrap, int codes_size, + const void *symbols, int symbols_wrap, int symbols_size, + int flags) +{ + VLC vlc = { .table = table, .table_allocated = table_size }; + + ff_vlc_init_sparse(&vlc, nb_bits, nb_codes, + bits, bits_wrap, bits_size, + codes, codes_wrap, codes_size, + symbols, symbols_wrap, symbols_size, + flags | VLC_INIT_USE_STATIC); +} + +av_cold const VLCElem *ff_vlc_init_tables_sparse(VLCInitState *state, + int nb_bits, int nb_codes, + const void *bits, int bits_wrap, int bits_size, + const void *codes, int codes_wrap, int codes_size, + const void *symbols, int symbols_wrap, int symbols_size, + int flags) +{ + VLC vlc = { .table = state->table, .table_allocated = state->size }; + + ff_vlc_init_sparse(&vlc, nb_bits, nb_codes, + bits, bits_wrap, bits_size, + codes, codes_wrap, codes_size, + symbols, symbols_wrap, symbols_size, + flags | VLC_INIT_STATIC_OVERLONG); + + state->table += vlc.table_size; + state->size -= vlc.table_size; + + return vlc.table; +} + static void add_level(VLC_MULTI_ELEM *table, const int nb_elems, const int num, const int numbits, const VLCcode *buf, diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h index 3f7c033a78..679666801a 100644 --- a/libavcodec/vlc.h +++ b/libavcodec/vlc.h @@ -19,8 +19,11 @@ #ifndef AVCODEC_VLC_H #define AVCODEC_VLC_H +#include #include +#include "libavutil/macros.h" + #define VLC_MULTI_MAX_SYMBOLS 6 // When changing this, be sure to also update tableprint_vlc.h accordingly. @@ -223,4 +226,103 @@ void ff_vlc_free(VLC *vlc); NULL); \ } while (0) +/** + * For static VLCs, the number of bits can often be hardcoded + * at each get_vlc2() callsite. Then using a full VLC would be uneconomical, + * because only VLC.table would ever be accessed after initialization. + * The following functions provide wrappers around the relevant ff_vlc_init_* + * functions suitable for said task. + * + * The ff_vlc_init_tables_* functions are intended to be used for initializing + * a series of VLCs. The user initializes a VLCInitState with the details + * about the underlying array of VLCElem; it is automatically updated by + * the ff_vlc_init_tables_* functions (i.e. table is incremented and size + * decremented by the number of elements of the current table). + * The VLC_INIT_STATIC_OVERLONG flag is also automatically added. + * These functions return a pointer to the table just initialized, + * potentially to be used in arrays of pointer to VLC tables. + * + * The ff_vlc_init_table_* functions are intended to be used for initializing + * a single VLC table, given by table and table_size. The VLC_INIT_USE_STATIC + * flag is automatically added. + */ + +typedef struct VLCInitState { + VLCElem *table; ///< points to where the next VLC table will be placed + unsigned size; ///< remaining number of elements in table +} VLCInitState; + +#define VLC_INIT_STATE(_table) { .table = (_table), .size = FF_ARRAY_ELEMS(_table) } + +void ff_vlc_init_table_from_lengths(VLCElem table[], int table_size, + int nb_bits, int nb_codes, + const int8_t *lens, int lens_wrap, + const void *symbols, int symbols_wrap, int symbols_size, + int offset, int flags); + +const VLCElem *ff_vlc_init_tables_from_lengths(VLCInitState *state, + int nb_bits, int nb_codes, + const int8_t *lens, int lens_wrap, + const void *symbols, int symbols_wrap, int symbols_size, + int offset, int flags); + +void ff_vlc_init_table_sparse(VLCElem table[], int table_size, + int nb_bits, int nb_codes, + const void *bits, int bits_wrap, int bits_size, + const void *codes, int codes_wrap, int codes_size, + const void *symbols, int symbols_wrap, int symbols_size, + int flags); + +const VLCElem *ff_vlc_init_tables_sparse(VLCInitState *state, + int nb_bits, int nb_codes, + const void *bits, int bits_wrap, int bits_size, + const void *codes, int codes_wrap, int codes_size, + const void *symbols, int symbols_wrap, int symbols_size, + int flags); + +static inline +const VLCElem *ff_vlc_init_tables(VLCInitState *state, + int nb_bits, int nb_codes, + const void *bits, int bits_wrap, int bits_size, + const void *codes, int codes_wrap, int codes_size, + int flags) +{ + return ff_vlc_init_tables_sparse(state, nb_bits, nb_codes, + bits, bits_wrap, bits_size, + codes, codes_wrap, codes_size, + NULL, 0, 0, flags); +} + +#define VLC_INIT_STATIC_SPARSE_TABLE(vlc_table, nb_bits, nb_codes, \ + bits, bits_wrap, bits_size, \ + codes, codes_wrap, codes_size, \ + symbols, symbols_wrap, symbols_size, \ + flags) \ + ff_vlc_init_table_sparse(vlc_table, FF_ARRAY_ELEMS(vlc_table), \ + (nb_bits), (nb_codes), \ + (bits), (bits_wrap), (bits_size), \ + (codes), (codes_wrap), (codes_size), \ + (symbols), (symbols_wrap), (symbols_size), \ + (flags)) + +#define VLC_INIT_STATIC_TABLE(vlc_table, nb_bits, nb_codes, \ + bits, bits_wrap, bits_size, \ + codes, codes_wrap, codes_size, \ + flags) \ + ff_vlc_init_table_sparse(vlc_table, FF_ARRAY_ELEMS(vlc_table), \ + (nb_bits), (nb_codes), \ + (bits), (bits_wrap), (bits_size), \ + (codes), (codes_wrap), (codes_size), \ + NULL, 0, 0, (flags)) + +#define VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vlc_table, nb_bits, nb_codes, \ + lens, lens_wrap, \ + syms, syms_wrap, syms_size, \ + offset, flags) \ + ff_vlc_init_table_from_lengths(vlc_table, FF_ARRAY_ELEMS(vlc_table), \ + (nb_bits), (nb_codes), \ + (lens), (lens_wrap), \ + (syms), (syms_wrap), (syms_size), \ + (offset), (flags)) + #endif /* AVCODEC_VLC_H */ From patchwork Tue Sep 26 22:16:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43919 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2207899pzh; Tue, 26 Sep 2023 15:16:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHCBXnOUsPv0T6oOnvLrAH6tSOObcC+6JyKOMeXnv6dAp0qT/Na2VWe8l4yz2XOl/kTnwDy X-Received: by 2002:a50:ee8d:0:b0:522:2d1b:5a38 with SMTP id f13-20020a50ee8d000000b005222d1b5a38mr285559edr.10.1695766600048; Tue, 26 Sep 2023 15:16:40 -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 r8-20020aa7cfc8000000b00530bfea3104si11081992edy.266.2023.09.26.15.16.33; Tue, 26 Sep 2023 15:16:40 -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="d/yvKm3z"; 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 7763668CA66; Wed, 27 Sep 2023 01:16:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2A45F68C8DA for ; Wed, 27 Sep 2023 01:16:25 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PDyLwwAjbRIdcP+qdpePIEFu0hivo0CpIUvsSH1hvYNV28DiAWlbOleEqaF/cWbYrpW00RDPpTFCK7Ku7SFjApw8JA6WYJJhTf8EdGrmGaXMOCS3+Ljv5bJsVZ52KBta0Xh0d33HzyeQR6UZh5M/H32ltE6JYnjbxIKaHaQzifczMsTUZPnU8v9zOOTktjjXAHct8LQkQCXsanWpYN2CR8yJCaImwusGO2H0iJDHSyAH4b7YUg2dGNUIT465ZVmHeG4Di5GFQ1BIBVkEnT+mJeSg78SnEWgbfZBSe7pGkRT/4wD9axWHrl1XtK5OC2k7KjT94Euww0vSEXmhIeuCsw== 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=wJLDgjMLTokeHkckqzo4yYPO32diihUdkZYjhmJw6oQ=; b=FnvoBPtcCLo02VkIlJ26qtw4PALmimrlNET1ARlB/BIwhuDcTGCGam1MH1pBm/XiDGN+YQZ3EY8fMTd7m0icxP3wDanj4P2OxQMjzG6IjD0EBYPnPpjr+fJadpKfx+1UdIvNgsWVuckC362e5D0f79es7fO+q4rYyMgkTED2fL5a0ZXr6Jl5cLuFK5Nqxa3cp9mH9a/PDxK7s253DIH20FlihOkVBkulvMRqBWeP1I+C303ZD1g4JRFSxKbO9Qfp6a8sROnj84DzX0F6LjfIgAAXkghuU9xmTY4kXj3toAt2yxlvZpq5NH85iKuexuDBc7Kict8WMU2KIIzlp1Maew== 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=wJLDgjMLTokeHkckqzo4yYPO32diihUdkZYjhmJw6oQ=; b=d/yvKm3z8jZM7RBr3myJGE9KFNHTB1elnD2djgzuCDBPMI8sVCdNGqnbqWus9Qw5RHKVG43BDmPObCYmFyXEiFfHXI5BY5ZwXKPMSqx0+AuZDgzRR4QXGNPaRH3QpaMTHCxOLuI16kRUt366Nx0+ClE00Qo/1pkYBNgqzPVWIkRsrhOaNKLenhgknMXaXp8qyCM3rCfuFD8WdDyj4ppfuHh6qjROmVunze/bshT5Zsu2WRegwypRDj3++EQ+xEzLEh8W9C09SEtQjKOYmvlX/cKOHRJNEc6bb5+K3blVeCrGHPfj1PgzmTyZnFaXadihyefvjHw0FFrv9ALMcVOEdw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:23 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:23 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:33 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [CI11ZyYy2+SkMlGFODCJdwZ5/KD5SQmZ] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 96e1be6e-e90d-4a51-d1b8-08dbbede37d6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3Gxc65e57i7IQapYTSSochAO3aT9giZfdRWmK/eRf8DT7JwwOYLlh6cXS5lJCBdVJwMPfuX0NDsU76oCKIs/h2YRjGpAeyI6+HBk5kMkjiI3yxJv2PdRf1nPqeXeKS6CXZ2Lp5FbUcqpnPik6XS0HB6Hz2USBhHQPdPnQa+UqoIsQUOuwPDq01sbFiSsJQgeqYhaunnqQDWX4aa4/xxuANAnB2ueqGUPrGVPsaN0U6IvckvDpxe53gTKnrd0+mWGvh9aoduaOymC9XvnMXeF+m0CCp1aPGz2wHmIV+eCtlM1h9e9+tBMd/hpELFn+Zumu+Mf42OFZIWQBivB1+OgwBoiwNIGAtByap0uFFyPVuxr7EUhMyL/eRNczuBFhy6/AIF9vxGP7B9rayW6cLpY5rM+D0mlJKdXEPrtFMM5RYt502U8zAWZnZj3TGA05gHOO0DG6CqM8fbbwaEhBGd+W5if9l8AeqJWgp6xyRgjl750w57INZHN9OADgzF8OQW+XY/9x/nXAs4vYdkxk3ywUiajKYsn2pBtKieenmWKyUnY5FbjzgntOIBuxQEBwUmBjAdwscxMjTuNk4GdtkfBWhSvyzdHZE48wQHIOQuaXaw1UgoJsf4SMG95NYbOJgLy X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Pwwa1d1gtx/3T+wGFIlLKxIvyrHO0qRIqAc++Om4Nc18loEkzw48XVPaBFKM/vHCk11OC47/EZUpIeRiLEm6OpSICS9DxKgnJcUtIbDBFDJwabbnbwB/ARo3ffMOYH64BYSC4l77KKflFoy7UkgAtkg5xeI9ZA6isJeOL46blrXIAq699+MONdqGDNw02j047OK61qofIpTA0osAs4XU3rP81xU/mAfEYd300rN+yMTzMzLLLYnw2iLdKHCe65rQjzBw9OAp2gdllFYiviv91u/9NRpnWaDCcEe+awDhxj3JUJxd/WfibhI5eguj9Sz1/UCjN0TNhl957ArLU6IpyhzpqZf2mnAYVWnn9yhhPgyqNI4uhRN6FAt+/k9NfniMqg086f6NAryuE3Xzvria/VVvY5zVxym752a+gCn09fKhb9eQK8U/X8uLEwj1bLiao4gZlCJReRaS9/Iti+RmvHVkB3WE2f51cisWMYF3QDHH+INeV59uiBFhsFcpo3YHtEd4esW3XAaxfOHxQY6bUcusrFNmQSyD1jBn9S2un0ah+A25+q66JCXdTQyg0HH6AJOEf3ZHTEI2WeT9cE+hOOGfx4GOpRNot4FDNNmQG6klwYhVugV7U7dUqOHQOM4tX8m3qATHCshe7f577FsoTz44PPZV3KAkNnh0dAYZORoD9Rp2ELjroGIA7ZvLN9HIgsJaykL1yVIgRwVD4hrVYYMATDyuWZYFbJpfXc7EiFPhlWjMUwHXm4P0sFfLE8AJ2ZVBdrkGHJcRLgFuZsjAopXzUVwuLZ4wWfXo7armTmMfEyqLNE84+/ZeHvFShN1HtviHEIjGYyrakgWiLNKU1cNxYnQiVfDdHSlRDz5famiXh6nWUovUKXu+e/4JPT8pIFXw7QgQhUd4JGNHWzRy2hPUyejEkTdnnmrJPfWCChkgrkh8RJ5svm/Es/7j+ZiPwq1CNaWqNpCEQbMEPHZtozyCYDOEKsJVMta1Dwiso+66fiDCU0YQgAYpY64NfsiZgjVYsmsNUMeYBc4DozvbsQMHywEw61acmZB8GVRzaWCLx4ePOFRHQ6svWIer8J79drg34RhaCjx2vNGzXHvBHeDyAmgZoZx8P1ou3AdhBghDWoEytiVlkPUQ07SxNbVnw70Cw5Nb7Qk8sqby5vZDf7P+mixPdB9O/d+SuzgFVWnbTOBnTthgaSpoa8NiHPxsGRaUhpB9UWaHNLx/3X2FLokajfutUYFG1clZgIJ0WZTajjp+Pkrzg8LrXPv5wF/1 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96e1be6e-e90d-4a51-d1b8-08dbbede37d6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:23.4382 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 02/61] avcodec/vp3: Make VLC tables static where possible 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: tVY8CAV9AVVk This is especially important for frame-threaded decoders like this one, because up until now each thread had an identical copy of all these VLC tables. Signed-off-by: Andreas Rheinhardt --- libavcodec/vp3.c | 162 +++++++++++++++++++++++------------------------ 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 98dabfc907..9199f53397 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -38,6 +38,7 @@ #include "libavutil/emms.h" #include "libavutil/imgutils.h" #include "libavutil/mem_internal.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "codec_internal.h" @@ -158,6 +159,18 @@ static const uint8_t vp4_pred_block_type_map[8] = { [MODE_INTER_FOURMV] = VP4_DC_INTER, }; +static VLCElem superblock_run_length_vlc[88]; /* version < 2 */ +static VLCElem fragment_run_length_vlc[56]; /* version < 2 */ +static VLCElem motion_vector_vlc[112]; /* version < 2 */ + +// The VP4 tables reuse this vlc. +static VLCElem mode_code_vlc[18 + 2084 * CONFIG_VP4_DECODER]; + +#if CONFIG_VP4_DECODER +static const VLCElem *vp4_mv_vlc_table[2][7]; /* version >= 2 */ +static const VLCElem *block_pattern_vlc[2]; /* version >= 2 */ +#endif + typedef struct { int dc; int type; @@ -280,13 +293,6 @@ typedef struct Vp3DecodeContext { the others are four groups of 16 VLCs each for ac coefficients. */ VLC coeff_vlc[5 * 16]; - VLC superblock_run_length_vlc; /* version < 2 */ - VLC fragment_run_length_vlc; /* version < 2 */ - VLC block_pattern_vlc[2]; /* version >= 2*/ - VLC mode_code_vlc; - VLC motion_vector_vlc; /* version < 2 */ - VLC vp4_mv_vlc[2][7]; /* version >=2 */ - /* these arrays need to be on 16-byte boundaries since SSE2 operations * index into them */ DECLARE_ALIGNED(16, int16_t, qmat)[3][2][3][64]; ///< qmat[qpi][is_inter][plane] @@ -362,17 +368,6 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx) for (int i = 0; i < FF_ARRAY_ELEMS(s->coeff_vlc); i++) ff_vlc_free(&s->coeff_vlc[i]); - ff_vlc_free(&s->superblock_run_length_vlc); - ff_vlc_free(&s->fragment_run_length_vlc); - ff_vlc_free(&s->mode_code_vlc); - ff_vlc_free(&s->motion_vector_vlc); - - for (int j = 0; j < 2; j++) - for (int i = 0; i < 7; i++) - ff_vlc_free(&s->vp4_mv_vlc[j][i]); - - for (int i = 0; i < 2; i++) - ff_vlc_free(&s->block_pattern_vlc[i]); return 0; } @@ -493,7 +488,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb) else bit ^= 1; - current_run = get_vlc2(gb, s->superblock_run_length_vlc.table, + current_run = get_vlc2(gb, superblock_run_length_vlc, SUPERBLOCK_VLC_BITS, 2); if (current_run == 34) current_run += get_bits(gb, 12); @@ -527,7 +522,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb) else bit ^= 1; - current_run = get_vlc2(gb, s->superblock_run_length_vlc.table, + current_run = get_vlc2(gb, superblock_run_length_vlc, SUPERBLOCK_VLC_BITS, 2); if (current_run == 34) current_run += get_bits(gb, 12); @@ -607,7 +602,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb) * that cares about the fragment coding runs */ if (current_run-- == 0) { bit ^= 1; - current_run = get_vlc2(gb, s->fragment_run_length_vlc.table, 5, 2); + current_run = get_vlc2(gb, fragment_run_length_vlc, 5, 2); } coded = bit; } @@ -684,9 +679,9 @@ static int vp4_get_mb_count(Vp3DecodeContext *s, GetBitContext *gb) return v; } -static int vp4_get_block_pattern(Vp3DecodeContext *s, GetBitContext *gb, int *next_block_pattern_table) +static int vp4_get_block_pattern(GetBitContext *gb, int *next_block_pattern_table) { - int v = get_vlc2(gb, s->block_pattern_vlc[*next_block_pattern_table].table, 3, 2); + int v = get_vlc2(gb, block_pattern_vlc[*next_block_pattern_table], 3, 2); *next_block_pattern_table = vp4_block_pattern_table_selector[v]; return v + 1; } @@ -758,7 +753,7 @@ static int vp4_unpack_macroblocks(Vp3DecodeContext *s, GetBitContext *gb) if (mb_coded == SB_FULLY_CODED) pattern = 0xF; else if (mb_coded == SB_PARTIALLY_CODED) - pattern = vp4_get_block_pattern(s, gb, &next_block_pattern_table); + pattern = vp4_get_block_pattern(gb, &next_block_pattern_table); else pattern = 0; @@ -845,7 +840,7 @@ static int unpack_modes(Vp3DecodeContext *s, GetBitContext *gb) if (scheme == 7) coding_mode = get_bits(gb, 3); else - coding_mode = alphabet[get_vlc2(gb, s->mode_code_vlc.table, 3, 3)]; + coding_mode = alphabet[get_vlc2(gb, mode_code_vlc, 3, 3)]; s->macroblock_coding[current_macroblock] = coding_mode; for (k = 0; k < 4; k++) { @@ -886,11 +881,15 @@ static int unpack_modes(Vp3DecodeContext *s, GetBitContext *gb) return 0; } -static int vp4_get_mv(Vp3DecodeContext *s, GetBitContext *gb, int axis, int last_motion) +static int vp4_get_mv(GetBitContext *gb, int axis, int last_motion) { - int v = get_vlc2(gb, s->vp4_mv_vlc[axis][vp4_mv_table_selector[FFABS(last_motion)]].table, +#if CONFIG_VP4_DECODER + int v = get_vlc2(gb, vp4_mv_vlc_table[axis][vp4_mv_table_selector[FFABS(last_motion)]], VP4_MV_VLC_BITS, 2); return last_motion < 0 ? -v : v; +#else + return 0; +#endif } /* @@ -938,23 +937,23 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb) switch (s->macroblock_coding[current_macroblock]) { case MODE_GOLDEN_MV: if (coding_mode == 2) { /* VP4 */ - last_gold_motion_x = motion_x[0] = vp4_get_mv(s, gb, 0, last_gold_motion_x); - last_gold_motion_y = motion_y[0] = vp4_get_mv(s, gb, 1, last_gold_motion_y); + last_gold_motion_x = motion_x[0] = vp4_get_mv(gb, 0, last_gold_motion_x); + last_gold_motion_y = motion_y[0] = vp4_get_mv(gb, 1, last_gold_motion_y); break; } /* otherwise fall through */ case MODE_INTER_PLUS_MV: /* all 6 fragments use the same motion vector */ if (coding_mode == 0) { - motion_x[0] = get_vlc2(gb, s->motion_vector_vlc.table, + motion_x[0] = get_vlc2(gb, motion_vector_vlc, VP3_MV_VLC_BITS, 2); - motion_y[0] = get_vlc2(gb, s->motion_vector_vlc.table, + motion_y[0] = get_vlc2(gb, motion_vector_vlc, VP3_MV_VLC_BITS, 2); } else if (coding_mode == 1) { motion_x[0] = fixed_motion_vector_table[get_bits(gb, 6)]; motion_y[0] = fixed_motion_vector_table[get_bits(gb, 6)]; } else { /* VP4 */ - motion_x[0] = vp4_get_mv(s, gb, 0, last_motion_x); - motion_y[0] = vp4_get_mv(s, gb, 1, last_motion_y); + motion_x[0] = vp4_get_mv(gb, 0, last_motion_x); + motion_y[0] = vp4_get_mv(gb, 1, last_motion_y); } /* vector maintenance, only on MODE_INTER_PLUS_MV */ @@ -977,16 +976,16 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb) current_fragment = BLOCK_Y * s->fragment_width[0] + BLOCK_X; if (s->all_fragments[current_fragment].coding_method != MODE_COPY) { if (coding_mode == 0) { - motion_x[k] = get_vlc2(gb, s->motion_vector_vlc.table, + motion_x[k] = get_vlc2(gb, motion_vector_vlc, VP3_MV_VLC_BITS, 2); - motion_y[k] = get_vlc2(gb, s->motion_vector_vlc.table, + motion_y[k] = get_vlc2(gb, motion_vector_vlc, VP3_MV_VLC_BITS, 2); } else if (coding_mode == 1) { motion_x[k] = fixed_motion_vector_table[get_bits(gb, 6)]; motion_y[k] = fixed_motion_vector_table[get_bits(gb, 6)]; } else { /* VP4 */ - motion_x[k] = vp4_get_mv(s, gb, 0, prior_last_motion_x); - motion_y[k] = vp4_get_mv(s, gb, 1, prior_last_motion_y); + motion_x[k] = vp4_get_mv(gb, 0, prior_last_motion_x); + motion_y[k] = vp4_get_mv(gb, 1, prior_last_motion_y); } last_motion_x = motion_x[k]; last_motion_y = motion_y[k]; @@ -1111,7 +1110,7 @@ static int unpack_block_qpis(Vp3DecodeContext *s, GetBitContext *gb) else bit ^= 1; - run_length = get_vlc2(gb, s->superblock_run_length_vlc.table, + run_length = get_vlc2(gb, superblock_run_length_vlc, SUPERBLOCK_VLC_BITS, 2); if (run_length == 34) run_length += get_bits(gb, 12); @@ -2258,6 +2257,48 @@ static void render_slice(Vp3DecodeContext *s, int slice) s->height - 16)); } +static av_cold void init_tables_once(void) +{ + VLCInitState state = VLC_INIT_STATE(mode_code_vlc); + + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(superblock_run_length_vlc, + SUPERBLOCK_VLC_BITS, 34, + superblock_run_length_vlc_lens, 1, + NULL, 0, 0, 1, 0); + + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(fragment_run_length_vlc, 5, 30, + fragment_run_length_vlc_len, 1, + NULL, 0, 0, 0, 0); + + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(motion_vector_vlc, VP3_MV_VLC_BITS, 63, + &motion_vector_vlc_table[0][1], 2, + &motion_vector_vlc_table[0][0], 2, 1, + -31, 0); + + ff_vlc_init_tables_from_lengths(&state, 3, 8, + mode_code_vlc_len, 1, + NULL, 0, 0, 0, 0); + +#if CONFIG_VP4_DECODER + for (int j = 0; j < 2; j++) + for (int i = 0; i < 7; i++) { + vp4_mv_vlc_table[j][i] = + ff_vlc_init_tables_from_lengths(&state, VP4_MV_VLC_BITS, 63, + &vp4_mv_vlc[j][i][0][1], 2, + &vp4_mv_vlc[j][i][0][0], 2, 1, + -31, 0); + } + + /* version >= 2 */ + for (int i = 0; i < 2; i++) { + block_pattern_vlc[i] = + ff_vlc_init_tables(&state, 3, 14, + &vp4_block_pattern_vlc[i][0][1], 2, 1, + &vp4_block_pattern_vlc[i][0][0], 2, 1, 0); + } +#endif +} + /// Allocate tables for per-frame data in Vp3DecodeContext static av_cold int allocate_tables(AVCodecContext *avctx) { @@ -2316,6 +2357,7 @@ static av_cold int init_frames(Vp3DecodeContext *s) static av_cold int vp3_decode_init(AVCodecContext *avctx) { + static AVOnce init_static_once = AV_ONCE_INIT; Vp3DecodeContext *s = avctx->priv_data; int ret; int c_width; @@ -2445,49 +2487,7 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) } } - ret = ff_vlc_init_from_lengths(&s->superblock_run_length_vlc, SUPERBLOCK_VLC_BITS, 34, - superblock_run_length_vlc_lens, 1, - NULL, 0, 0, 1, 0, avctx); - if (ret < 0) - return ret; - - ret = ff_vlc_init_from_lengths(&s->fragment_run_length_vlc, 5, 30, - fragment_run_length_vlc_len, 1, - NULL, 0, 0, 0, 0, avctx); - if (ret < 0) - return ret; - - ret = ff_vlc_init_from_lengths(&s->mode_code_vlc, 3, 8, - mode_code_vlc_len, 1, - NULL, 0, 0, 0, 0, avctx); - if (ret < 0) - return ret; - - ret = ff_vlc_init_from_lengths(&s->motion_vector_vlc, VP3_MV_VLC_BITS, 63, - &motion_vector_vlc_table[0][1], 2, - &motion_vector_vlc_table[0][0], 2, 1, - -31, 0, avctx); - if (ret < 0) - return ret; - -#if CONFIG_VP4_DECODER - for (int j = 0; j < 2; j++) - for (int i = 0; i < 7; i++) { - ret = ff_vlc_init_from_lengths(&s->vp4_mv_vlc[j][i], VP4_MV_VLC_BITS, 63, - &vp4_mv_vlc[j][i][0][1], 2, - &vp4_mv_vlc[j][i][0][0], 2, 1, -31, - 0, avctx); - if (ret < 0) - return ret; - } - - /* version >= 2 */ - for (int i = 0; i < 2; i++) - if ((ret = vlc_init(&s->block_pattern_vlc[i], 3, 14, - &vp4_block_pattern_vlc[i][0][1], 2, 1, - &vp4_block_pattern_vlc[i][0][0], 2, 1, 0)) < 0) - return ret; -#endif + ff_thread_once(&init_static_once, init_tables_once); return allocate_tables(avctx); } From patchwork Tue Sep 26 22:16:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43921 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2207925pzh; Tue, 26 Sep 2023 15:16:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IERLSlDmCIc2bq/2WawPE+9i7nmZgRLxz6pmQGSzq0pkLfMf6Y/ljOGe+KN+9+D8ynNUWBI X-Received: by 2002:a17:907:7842:b0:9ad:9225:ced2 with SMTP id lb2-20020a170907784200b009ad9225ced2mr33312ejc.62.1695766602811; Tue, 26 Sep 2023 15:16:42 -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 gh16-20020a170906e09000b009886470de61si10632313ejb.857.2023.09.26.15.16.42; Tue, 26 Sep 2023 15:16:42 -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=KU4pyXHT; 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 79DD668CA70; Wed, 27 Sep 2023 01:16:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DB1B68C9FF for ; Wed, 27 Sep 2023 01:16:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VdffXnY+RrFu4FnaHzHvj1dAK7biGgrQ5iv2yj+cBmRg48Fg3q0f4BbBiVVYBK67f0qUqqsxGatiYgaJsC1k7798G2OodGiUxYe2L357s+bk+7HnsMGq7HR0RAnOtXLZCD9uhJaxxHPPt2G5j0dXyzL5nCczwR45rCn6QPXJmeymUBxEV6cCnIz6A6bhbNQbZ+NfuL9z2HrYglronpJYrcEjmzR/mS9hv96MAvr9rBbegSdTQPkm2DF0Y1Et9oUebAM7sCY/xUmCH0TPTfF5tgVrEPdNGNe6PM1UKiULp/BR/AN96cq8Ztsue6E0lUdnYwBtBrkrxmD5dqmWIui52Q== 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=FlY6b7g5TDLJxhIyVlEK5PG6rejNik9DIDwnQ9fQo3w=; b=bCa/NNhl9AiE6hYVlFXdPIwdqGGFpXJtmkd1oIsbRr4G5BO2r6f3eNbvxcQhKP/M6+27Xti0Ro8QTuEq5jWIHRe4hQtSteqDoNm/gxR+ZveKWTYCj9njQLvcXYUj4rykbYeZZ4hlycRq7JHKFo4UuOUzGOFGUUYhSOFwb6uVnZuqBDZkg4MCmRiuUP1cdCnJZJtM5QEcIJsernQ4M7hBtlcCT2/ZadlD+QVgOg5sQ+Zy9U278O776XmZYnc5o7P5W3L5pnOiwKvVZDsV7DNCN+qLHCNllTfSXz/w9yMI2CteYBZYfuybrDOGRGtXtDcWt1SFcE7oC/jCgXIRhGNYeA== 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=FlY6b7g5TDLJxhIyVlEK5PG6rejNik9DIDwnQ9fQo3w=; b=KU4pyXHTNgpNDih3NOgedFa/TYNI7QgvTmhxiuVVdKDdYGEgysKIiLzA2Uh6j93P2IYeP8wRt/kvuGOB4/E4mVRNTrJ4wS2Mmfl9EaCylFC2IcxZylsYD2t7igOjxx1IqcLO1ByDzV7qCYHDyamPduK1QQJ5mu9sWviDj/JDv9nmU8kBrF3BijkDAsVVgAdXFgSX51ZWYLN+uEi6D1hbN+9ymH3FieDA0eIeVxwgYdfcZGX2iz2oBs2qScowe92Rs5BrpC62vPIX5B9AtR4Ar2mhvnyIgqwz/H+i8yL6so5/b8w8wTcePhNWbNQ5+fyFPFaf7aEjPvpbsWLkJP6WBQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:29 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:34 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [t2+LXwcu1EcxeLrX5/MbG0mw4Zb0qnJI] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: f8e38b49-1ed8-41f3-e778-08dbbede3b35 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hhPBVa/4Fk/3PHTv9R26NJk9sdozisTiuVIwGmmhkCqb/jWSrzRC7YGfNayZlu7YmadTpoIq7RZYYe5/EtxVvhJt2QZuX0/sY1hIpwZH8Ii/myTyYfWF4GXv6Sy9OPLfNo5YVWhZvaN4SugtGSEeQwSOWe5MsDzF5o5bnuvwRnyW9DCBfSWNxeLJktEqP2h6VDLM4jktoGbA4UfNv4TWA2pEvuc0XG2pGD2u3JH8/8cwVoILk6IXjIF1pmdzZZPNTVAmSiEz42nW0vlitSSmHcLO2KRwkifaeBNnGrTb4kPbisP2Dc3XBnUgyT0uo7lM5dY02aT1Nda4Ai23or8Slf4j9HYzN/Ll1B1oCtnQIs2xxpdnqBhsgxLTFzZBW79WFWquLJq1CWvt7OnMAokWjeoL37rzfyeFfTKBT2IGj3nyv8638XFn5DAhUOV76HsBU59f/pzh7KtsTHPZPxOKekrIbYJp9izjzfAFIInYZ4QfhSzabUDUUaPf2T7LZRxZ63c/Vz6SwRdMiH+mihMBCdfrlCqUDqTyrmfLg3Z3/j1k0AI2vRbAYavB04jB4UpmJezY19CDkZZZrE5E/1Ek3kRnFM6N/RLC3WI1WoeSb8dzOBXDKlgo8DXWHuvHSKgC X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PTVMVhVEzGTqMaFSssZxLBPU04edo5lqidqWS1LIbxSYUpXvOvN7BhoiMnxb7lJZe5X5Hs6nzNdf/RHeBN4SuOa7/1xjSiaTRjegmmAIDoZr2sxKPzUq4aAiq3cR5DjE3M4bMVJ22aT9XLfIClU+p+sOkjvwdOF4C6396zPCB7uFVfhkW2omRRpw2IhKiyuh070WhFpWdDrsgPP1OYmsveVyVSTcgJPY6tdZBIBUnV3bRfiBHK6sdLpFtUwXTMIb0+RClnmTDQGU1UPI/V90hhQgQ1wFqRCZ9Kq6EUpr6KbQ6vwlPrjXofWtnDOnv4jzUX2JdJiarJ2NcSfMft3m21M79vKpq02JLke9CmlnEphbON61BQoY2eamOKyndPUYP+82CXCOD86Q6pVJ5VDkIeweC1fZw3Gic2icQiOFQHTFnb9G8aSZqWolTe+YX8DrOdANnpxHF6E4C5A4p5I+MbZRxVq/bS9OBbltY+3VXs5o31G25YUFuFv45hpd6Ag1/o/SKlRMN5ipA44VhInUP6mUjSJYbEivP5KSBogypSaUWQl/vowqJFL1IVe9SQkwWqkUSklzMFYptDqKy9iH+35/ObHX5nu2b9l2K0FG43UvYBJtD3pVmynz4tuWFN+JEizRYrzC1Z4RwmTOLwIAasYP8ZmpidosfNe1NapELb64AxpkGg3dgODQSvGklnT1tDapyonoNhxpAExskoiOYeLOTfmlPw7UEq334ppgybEOqCMFwMJQoGRToK3Z9JX+R1QTF4r+ZooCOGMYOR4pj6h303KZvpNSK7Yjc+DV/dETP+2FSD+OMGguztuNwLlwzzF5KVBUFdsb2ngs6F5NsQY/5DFJd/4mnWwCaEYGfETYOYzJHgeee6eYBmj5puNSSj2ycTqRvgAky3NQq9MtbXbP54R1IT2lkYmKOy4TD50tSE6/XKXMEgfWYMbvS2vyuYGBLnoQzbtD3/kuLSG18W4o5oz9g4sR5A8ysI28U1x5tBNNrFBSwmLNWEaqUqaNus+xMoe9D52XU6ZLzQiiqbLFJqLJuDXpDsX6Ubv7L9AIwIaY8kouWSwsgCptxgyyN6hPip9G92fL4bIy+/NyPaYdle5BJ+beVoZrUuOZcLdiQZP8d2gGapjJbupwkXWrJZQQuTdpmC+a7dOSmjj4Ygg3ZeQhnIEbxXcp/ubBzY7F3CVNSoXIkcFZ2RMVtW7CBdehDwdLS3gVqrTrX+yu4rmHGZNOOtyMzOmwntgyp8SV3og6DF3VGw6lMcwOjo62 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8e38b49-1ed8-41f3-e778-08dbbede3b35 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:29.0677 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 03/61] avcodec/vp3: Increase some VLC tables 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: mW8n1LOM+eQE These are quite small and therefore force reloads that can be avoided by modest increases in the number of bits used. Signed-off-by: Andreas Rheinhardt --- libavcodec/vp3.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 9199f53397..0463909f2f 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -164,7 +164,7 @@ static VLCElem fragment_run_length_vlc[56]; /* version < 2 */ static VLCElem motion_vector_vlc[112]; /* version < 2 */ // The VP4 tables reuse this vlc. -static VLCElem mode_code_vlc[18 + 2084 * CONFIG_VP4_DECODER]; +static VLCElem mode_code_vlc[24 + 2108 * CONFIG_VP4_DECODER]; #if CONFIG_VP4_DECODER static const VLCElem *vp4_mv_vlc_table[2][7]; /* version >= 2 */ @@ -681,7 +681,7 @@ static int vp4_get_mb_count(Vp3DecodeContext *s, GetBitContext *gb) static int vp4_get_block_pattern(GetBitContext *gb, int *next_block_pattern_table) { - int v = get_vlc2(gb, block_pattern_vlc[*next_block_pattern_table], 3, 2); + int v = get_vlc2(gb, block_pattern_vlc[*next_block_pattern_table], 5, 1); *next_block_pattern_table = vp4_block_pattern_table_selector[v]; return v + 1; } @@ -840,7 +840,7 @@ static int unpack_modes(Vp3DecodeContext *s, GetBitContext *gb) if (scheme == 7) coding_mode = get_bits(gb, 3); else - coding_mode = alphabet[get_vlc2(gb, mode_code_vlc, 3, 3)]; + coding_mode = alphabet[get_vlc2(gb, mode_code_vlc, 4, 2)]; s->macroblock_coding[current_macroblock] = coding_mode; for (k = 0; k < 4; k++) { @@ -2275,7 +2275,7 @@ static av_cold void init_tables_once(void) &motion_vector_vlc_table[0][0], 2, 1, -31, 0); - ff_vlc_init_tables_from_lengths(&state, 3, 8, + ff_vlc_init_tables_from_lengths(&state, 4, 8, mode_code_vlc_len, 1, NULL, 0, 0, 0, 0); @@ -2292,7 +2292,7 @@ static av_cold void init_tables_once(void) /* version >= 2 */ for (int i = 0; i < 2; i++) { block_pattern_vlc[i] = - ff_vlc_init_tables(&state, 3, 14, + ff_vlc_init_tables(&state, 5, 14, &vp4_block_pattern_vlc[i][0][1], 2, 1, &vp4_block_pattern_vlc[i][0][0], 2, 1, 0); } From patchwork Tue Sep 26 22:16:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43922 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208007pzh; Tue, 26 Sep 2023 15:16:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTPZ4tXKXtE5nBXujYRDBJ6R8hZOENIlm0vj/EcKQARp8CsncMM2bNbdAfxVDMeikmw9tG X-Received: by 2002:ac2:5b5a:0:b0:502:d85b:5de with SMTP id i26-20020ac25b5a000000b00502d85b05demr42749lfp.68.1695766612006; Tue, 26 Sep 2023 15:16:52 -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 f20-20020a170906391400b009a1b857e3b1si12006465eje.304.2023.09.26.15.16.51; Tue, 26 Sep 2023 15:16:51 -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=oZj6D+sJ; 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 7F11F68CA77; Wed, 27 Sep 2023 01:16:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88E6168CA72 for ; Wed, 27 Sep 2023 01:16:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/VrifMcqDzWpJFJwYSQNZAvWyhGMm4AL8vdHd/i1wYSTXRLXXEj7E71VKL0obDAOnzdCtRsk2NFSQLJppShAHmeoGE5/f6G2U6doNJ4oQZsZ7+ptLcrxeidzIZNX4Gyxte71OcUOEg0xR9EHW3refRTAff4hCi83Ua40GX0RE1loi3J7GEWgbtfH4x6TrI5W68kEjL5oUoKPO1BTUD47W3JdwA5pZjAG4JiQR0y1l3bcaTuaflYqAJnTcnvpBbOZU6mpUkj13Tz/1Im2ow90rTTTHze6U6HS3lkdjK7v6a0KibBZygG9koUnYBQBlISRBg5IvGnmLlxMDeVwvI3lg== 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=mtev+j0+2Sjr6nvxMHZA7UWGBcG8aZlE9zPgkXaZQno=; b=EJUUmYWy9w5Lme3vuKW/3nIc/n0DJMEMP1R4XwYCH1G7qWsLTwe5tidS3cBMK4vBA275jCrZX9wBXs32mCAB2agTjBgShoIGJC7uGHvZ52eEX9D36JS7xTjNcSoZoBiBBp2+N0gwlSNKv1lXs8kE1S6raTMKKOYoUt+c6KuB1USDQ2wmNTX2YKcvQt9iFck+YvHzZpAQep+vvCCB6Io65eP/wLbyHnnik9SUW015vuWcm//pZIYrtJsIQ6Y53/FmPMm3cFgi8Su2Z/0xiWwr/QhPZs4ijggnUKuKnGlpmH/Hz8/kRe8+fOhJtbgKPlEieB8UEhYfLYk9l4NymzzQxQ== 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=mtev+j0+2Sjr6nvxMHZA7UWGBcG8aZlE9zPgkXaZQno=; b=oZj6D+sJkPS1owIacJxDV/opAXSbbJa/TJxnqJK+VD104NH7COBupgdKfkWQ7DCVusavhRm17ABGiGBcmBz5yZs9HppDue5x8ERukTu+Wy3EVzk/YNNOtTMpVCdD7rL9DJGHY+XDKZ1MjrLXu5E3mRnXkeYezluxdQ+omjaqHBvUlnZGQbmMFQcA+1iIbMFHWyQrutzVy+Uky/mTByCP9Qvu+ckDHgdRljyt64qM1tSqDi4g5Vx8QUbEyq2loqCrIAy7YPhdYiSKd0O9HdgP05JxxAWRFuibapSYgAXA+foqSsc6dguYdQRgem8mGhSqSESbdDRbcCS7DCXcIWHf7w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:35 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [u8LB35T3k9OtI6AtcSBROFy6tQX8MImg] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 68e854df-1048-4d92-89ba-08dbbede3e60 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BRo4w9oT9ors7XRZ6r7jS/Kj815fBVr7R9WZDp2IKwQOoST5alv+jjdB7PZJTmXKdsDJ3dgafRuZMIBMEKrPv6crrbPUIZ3WHFJwAw3z+LTkkLXHV2kCe2DTqGdg2wa1jAXH7XgkU7x+uhnW26cdte7Say1GG/aduuEd3PhGuD997sx1X+4uD262i+jX8TgRhKuSncONPZXMUfpSP/p3AUDvIW1gzP87Ba2Q+2/+5Nl9SDmssupmmRsxeel627PmGndoeqJjxmPAmvNBOisIN3IN4P9tOaVI3rDk77qGxkpGciKyYVi9f1aTa1A3wx8IZ8RVow9IR4b4VbmwDv9T/ww2dQq2jAp0lUxLMkRruBJebclgci/ihRQ9ex+PPLS+iC9NKh2db0EUjG5A2Pzap3ZgCwnZ8GA8NuxyiUsEf8rH2b0dzdo5etFYTwJi08nFYyNe6wLHbnRDnZK+NeGXHVtdpI/1E1CRrlS93GhEkn1s9t4Y1gV3HtuRSEqjCFf/MfEnd8duLHGOG3WXyp4FDjln3tyBTZa6dJR/nIUOqSmP8VEH0dNrj5a02puTzLHDumjghGsEvaSJGe9Jz0vYyDCf4JrYoeL6c4jSsz6g1c= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: riQoGG3ZTS30tEAQ0RHHUqvqdid7/K8+lK7wiupHy65YjB/HzZkIiTawqs89dheMM5duEWElfeD7+VNKgaCo5/8qjRvFxaYGqSrZv0ZcPf+qSExdcUwYfHfoR9lyoba3vHFvbK4zp4iGnk7qGES94/xvtCFX5Gz9ICQ07ELUA+qqEaRkFU/C4o0X85DvI5v2e6GN6BEXkeJtydZ0oHnQNgLuyltDuQNOkgnb1ksuLqVUEzkpr7WSp+LpyaJePR+HAkGciQJp+SPwNStc6iUNtVcD0+scZgCLGR3xZllT5YGqVSwsCaPUIoe9UoAAHF2TzwTS2IyqJsJ8d3OS7Q9EoLla4sQ1sEBuKsmPqMpKWOaEic+A4QeAlHJgFRtSiVIJISA3mrj5XGRA+f7Qu4z0VxI9dH84CbAcCt8xryR/+HgB06qj3IDp0oIiecP5bUWXxiPADhMooRS82jeMsq4LuppPe/hXIYS0go9NgpwYv8sOdPgSLh2NF4KXgu5Tepfaehp5WQXHJIU/4HdTMQCCaSRioGEYhSUqBeCJYIELW1ul1i0B+C9FtPnhcKF1kP35YQQt/o//Z/aDUfOZ7vw/II+ESLpwoQ+vlJSBI4wd1haWw4NccE+w4HVNKJnqjI6lbsOSVp2LQbNdSnTl2COR4hsW1dgi9hNWPp4DqCZx93hMDYhNs0qIuXoURHkoF9hoIHconzJiVpYNMr0Q3CzUY+eKPhDtzVegm8fhOsjsDTubGM6GtTrYUx1zRbS8pVau2mIbvK0eqcyKr6UFdQ6PCrwqV3OyyFwT5GUHuXky+cgcKuspbgV92aGH1jLVWDn4vKqXGAXaknIffbjR1aputG59XTxzWxA0DcjkYctJtgE3ktmXiLTatY0H00GY6nVb5Q5IVoqp9c3UnubIXmGYCukRJEtCDF8xP1S+vobifH9/UARwwfYc3f0ewWX9GS0yHECLgrLcxcRE/w0a/MASCLDv4vRQSZR5uIDW5EofBnTtuPM0Q7Q0ElNPGJ5L4niPguRg6PayxVTQB044DoACYf2WTTbcXcbXPHov5DgTZXtGcPVQz2ZS0mkAt8nGkZNyp7Ytwft/DV3iJZaze6SIoHXB5Vz3oVBXLaLk0iW/0snB7kD0yGMchEtsmQ51SbZn+WsoYUY7eFc53xIDC+tffP5uBQ2/KSi5kb/YHiZ0Gr6TVcMvhKUHj0jwb61Vi2ikxZbH2l11i/48q0Hv8tEma6dCfh+GuHqZu1bvAJuWbADwKkR4jMjRtquWbEyNK3U4 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68e854df-1048-4d92-89ba-08dbbede3e60 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:34.4655 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 04/61] avcodec/h264_cavlc: Avoid superfluous VLC structures 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: H/0YekVn2H39 Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_cavlc.c | 190 +++++++++++++++++----------------------- 1 file changed, 80 insertions(+), 110 deletions(-) diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c index a06b775422..dc22955626 100644 --- a/libavcodec/h264_cavlc.c +++ b/libavcodec/h264_cavlc.c @@ -234,38 +234,6 @@ static const uint8_t run_bits[7][16]={ {7,6,5,4,3,2,1,1,1,1,1,1,1,1,1}, }; -static VLC coeff_token_vlc[4]; -static VLCElem coeff_token_vlc_tables[520+332+280+256]; -static const int coeff_token_vlc_tables_size[4]={520,332,280,256}; - -static VLC chroma_dc_coeff_token_vlc; -static VLCElem chroma_dc_coeff_token_vlc_table[256]; -static const int chroma_dc_coeff_token_vlc_table_size = 256; - -static VLC chroma422_dc_coeff_token_vlc; -static VLCElem chroma422_dc_coeff_token_vlc_table[8192]; -static const int chroma422_dc_coeff_token_vlc_table_size = 8192; - -static VLC total_zeros_vlc[15+1]; -static VLCElem total_zeros_vlc_tables[15][512]; -static const int total_zeros_vlc_tables_size = 512; - -static VLC chroma_dc_total_zeros_vlc[3+1]; -static VLCElem chroma_dc_total_zeros_vlc_tables[3][8]; -static const int chroma_dc_total_zeros_vlc_tables_size = 8; - -static VLC chroma422_dc_total_zeros_vlc[7+1]; -static VLCElem chroma422_dc_total_zeros_vlc_tables[7][32]; -static const int chroma422_dc_total_zeros_vlc_tables_size = 32; - -static VLC run_vlc[6+1]; -static VLCElem run_vlc_tables[6][8]; -static const int run_vlc_tables_size = 8; - -static VLC run7_vlc; -static VLCElem run7_vlc_table[96]; -static const int run7_vlc_table_size = 96; - #define LEVEL_TAB_BITS 8 static int8_t cavlc_level_tab[7][1<>2; }else{ if(n >= LUMA_DC_BLOCK_INDEX){ total_coeff= pred_non_zero_count(h, sl, (n - LUMA_DC_BLOCK_INDEX)*16); - coeff_token= get_vlc2(gb, coeff_token_vlc[ coeff_token_table_index[total_coeff] ].table, COEFF_TOKEN_VLC_BITS, 2); + coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; }else{ total_coeff= pred_non_zero_count(h, sl, n); - coeff_token= get_vlc2(gb, coeff_token_vlc[ coeff_token_table_index[total_coeff] ].table, COEFF_TOKEN_VLC_BITS, 2); + coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; } } @@ -563,13 +532,14 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, else{ if (max_coeff <= 8) { if (max_coeff == 4) - zeros_left = get_vlc2(gb, chroma_dc_total_zeros_vlc[total_coeff].table, + zeros_left = get_vlc2(gb, chroma_dc_total_zeros_vlc[total_coeff], CHROMA_DC_TOTAL_ZEROS_VLC_BITS, 1); else - zeros_left = get_vlc2(gb, chroma422_dc_total_zeros_vlc[total_coeff].table, + zeros_left = get_vlc2(gb, chroma422_dc_total_zeros_vlc[total_coeff], CHROMA422_DC_TOTAL_ZEROS_VLC_BITS, 1); } else { - zeros_left= get_vlc2(gb, total_zeros_vlc[ total_coeff ].table, TOTAL_ZEROS_VLC_BITS, 1); + zeros_left = get_vlc2(gb, total_zeros_vlc[total_coeff], + TOTAL_ZEROS_VLC_BITS, 1); } } @@ -579,9 +549,9 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, ((type*)block)[*scantable] = level[0]; \ for(i=1;i 0;i++) { \ if(zeros_left < 7) \ - run_before= get_vlc2(gb, run_vlc[zeros_left].table, RUN_VLC_BITS, 1); \ + run_before = get_vlc2(gb, run_vlc[zeros_left], RUN_VLC_BITS, 1); \ else \ - run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ + run_before = get_vlc2(gb, run7_vlc_table, RUN7_VLC_BITS, 2); \ zeros_left -= run_before; \ scantable -= 1 + run_before; \ ((type*)block)[*scantable]= level[i]; \ @@ -594,9 +564,9 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, ((type*)block)[*scantable] = ((int)(level[0] * qmul[*scantable] + 32))>>6; \ for(i=1;i 0;i++) { \ if(zeros_left < 7) \ - run_before= get_vlc2(gb, run_vlc[zeros_left].table, RUN_VLC_BITS, 1); \ + run_before = get_vlc2(gb, run_vlc[zeros_left], RUN_VLC_BITS, 1); \ else \ - run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ + run_before = get_vlc2(gb, run7_vlc_table, RUN7_VLC_BITS, 2); \ zeros_left -= run_before; \ scantable -= 1 + run_before; \ ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \ From patchwork Tue Sep 26 22:16:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43923 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208094pzh; Tue, 26 Sep 2023 15:17:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH0Ms47tKCjDhrVEomvgWNBVWeCfpcTUms4F4M5RthGbqkMsPGsBibRlOb24CO92FfVrm1I X-Received: by 2002:adf:f405:0:b0:31f:f99c:6009 with SMTP id g5-20020adff405000000b0031ff99c6009mr21333wro.22.1695766621297; Tue, 26 Sep 2023 15:17:01 -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 qk8-20020a170906d9c800b0099cd6660994si13462332ejb.116.2023.09.26.15.17.01; Tue, 26 Sep 2023 15:17:01 -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=YTeymnd8; 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 A2AB368CA71; Wed, 27 Sep 2023 01:16:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B252568CA79 for ; Wed, 27 Sep 2023 01:16:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OnkMVVUN+LZbLpO2aV/fTkega6sNo0INKVBmM+8bOa5zJxL7vhceYZe/a+d5AfTF3a2VMz3qTeQCResuBlA0d6VeLKgBzQMKh3iBtaLU1kd7NbeTnzKkbGg3MuaZKRJ1atzYkGt8PPwphi6hJu5kA7SgLGAbWtqd1yxCTliNSdXIMBNkiaM9oaNdjFOrWfnfgwbNVcx5k54O7X7P18pp0Z47Gthin48CQ2a2vJW+xzb5uepZ6NiHBRILZYzSYrp0pEYYynpclnpIvb7OClpFnuKcrkSSK7g7JmDDFqiWN08ygekgNUM0Ln/pkPEKiKJ8PzTUE0HLcDcKwPybuKSGkQ== 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=LxyiMmGWUVg/4YUsuu0KduhMI23e9kOhMBFBaiTqDHE=; b=cal9HEOYF51MomzTw1EUJd+7QmDxYaICjlWuWA6FXEaR4+s+YGo1JCH3m+HhTXj9zNsKdWbMaLZEk0xp7bA72I04+gUHNBS7g2+nx507/07k+t+U3wQReqx2pvH4cfV5+8Cfpq2aDln13Tw61Q5+23A1F/6lBHgXCX9kZqX95Mb34gvq0uoVzjDOPxheujCCB7R8EgBb4tIrJyZhSOE6/zNl8u8PYyVilOmAzkihfQwIS+zH8f03IadYILAGkNqNB0W/wCK7Vf/6OTj4B25S3RjW19xK0A9iw4weIvccu30uMSQZgWNScY4QKSh8t527opyMMeHjLjNja13WXILV9A== 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=LxyiMmGWUVg/4YUsuu0KduhMI23e9kOhMBFBaiTqDHE=; b=YTeymnd8yw3jM3FVSvHVh1CvfNFxE6WhvCPAg8rYrU5t7bMTVuV7U488e6JWva/SPNq8sZn0g1Ko52KE5rJFd6zrzDtkWlR/0rOOGyLKmnctsZFqSQiowMz5k6cgVjLXKYy/XzcXlRdLOdhzj7DY7uMH2TshSfjsWtNBXDfE2G72Y3uS8Z0tmUG1QQ3hPZQTzD1iZHxTcrvUh+rwftZf7a3KiCKoT6CltlsxqEJXk7ufTMF4IQB9hDDjHB6JBKnbebFidpiG9aP4ybqChB4gdbrhMrKg+HPMKlT+lriMNuXekid+HoiIZUEAOOIVNNj8QsOJkVGW4dW5kW2z19dNAA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:36 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:36 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [2+RjaVtz9uZaWePM2zXxeUigV3KGLmTd] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 7bb991c7-af82-4959-8eef-08dbbede3fa9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rJv5533e3VulS0j3r2OpGYyyRWM2k3VnD8pdkkmilUWQ93WAsW1goKHauqCfmfO+r6nEEKL0GpcdcUHVndFvpyxp1IYoGRg5+EQU/ni+24Xb4IuQHB9QUv2EeQmc6Xco486cu/ILi5DpcKr3t+xgDUhBOpFvYPBfrSCygW+gPftebsPojzxKuIkXxAQ6Nj0GIqu9Ubisp23tHTcxafE27xejKTcDJLTUXx95erpM11FHM+T96Cz/5KRmW3uXUfnTSNGy/CxLD2yXE72klkfFEOHh/MPulmwFdsyvFIBqskEq0jyyXxuxR2egGkZqauH16leJ8XAahGNIB+Lz+x1XvrvyK8V/T3D66djGnDgbbybVkUud6WOuTNHZc+VuY2w4dMdYOX0CvmbiA+OkHrDfCprbB776ElUX6YGKHqVMGyP5oBEUEJXOP82rbsRsS8Fc1sCnIRc0kZXIKREPUuid0m/Mwe1PUae2AgNk5QiaPF5mbSyqLtmya9Bw3hltYJFqO7zXIVfg8TQ7JqMz0CUQEuuHXOulG+JRdd2nj1/zkC9nXQVsCrtmgAf9KaolHcqBPUvm1PVuT1bf3rDqQggRKjx6UGZp1bzP35VZDWRNfYwR2nx1d802iRvp19wPmF3k X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pxivUsruwTZtqDQV8CLfsjflI+EBAJjmxI2xJ8wHulPJIxJwA5MMSqbE//qc7lVVuXzDkNRU/JQIXXPUs8/R7WxBqkEGgUMM+LNyjd+5B1gfYK24QBNAfNaB4rxEUI4IuWXyZtYk5mtJWseBALxEMIYPQPZ0Eg9y6+z43Iwv60SEDTAxKgvFt9tavwN2eGuIEsUStbr1RMHpKdotcw1XLcWfJLhvhJJY+yFCr4eU7kCgsesClwWxMqaQ8U17Q+NGWjOdegE+5zYKj+/GnM28V1zZw4uE265dWu+rUG2vXNrJwRG2RPuAoiHimyXo/kUAkD6bEuKokzv5Iu5JVw8He0R3MDP/KygM9qWKnwVNIqqPoaP8mqOP0ZcetwK9umuoeX7V4CxaWymeQvGRDFpMgvQLL7ycNGkIHZDmi/nGtxXS1lkNqBZ7RTrPCfJBnvTfKDMIF6XG5FBQYfmJalTkD6gPqNA913vnvUBuBPvlhynRC0Xg0R8gM7enmuzWZMmcm8DVkxVxfJUpcYyswCIOuW7KaIpFr3PT9uSI2Tw8I+pS7aS6G16X9f+ppitj+OYt97RVsuhW3dekETGMjCYxvpYJ5RRGiOQP8SeqgQJWKV6+OB4A7P5/W361dqTiUz4KPsMTyffFTvMFTfCJeXx1IC4zIPBhEtCDUU2QJmG0YgchbFiDtdbjaQ1xEwkmD0eG6c9eCE8LdgCfdNhmdUUuv70kf4Bf0DUoR9a4Q1+XNgYcrA2uxj/XpdbTj1JZd72hzuuYEUTuDz9lCy9j7mfjmgkwUaL6MUT7EpgwL5shfTAGSRG+RiY4XxMJmDOSz0OfmrcUw80+cirID7HbkbUhzgRm50IojPmovyl+IL3AanC6wMYXeUCHsCa1OZdwFp+XBle/IIHWKnW4fb5FtesHDytRUPYlOF2FvOWmLRm9mLBQ1sQ8sPcXKz1O/OnP8x2RZf84x+00cH7iRekNX9Tjzs2NCfssgxCwEjFpXkKOfFPzgge9O6Hs2eAdlooYjBRG+H8tuOB9IIMJK9EOzqeP6qv6C3cVn/yX7KE/Ksw5gDst+kqexY5vLqw/rQfvZ/Zsh8fGApOH+vzFzHyZt88Ce3UUDPjXDgPpvueXvjHheVUzvrxDjSflUf6ot12C5woXb1f2YwKL39DgrAtBL5zHj2BxYVsXNEz1DZkFWmpjjtfuq3Nk0BhcOQMGxe4sDHT6cnBWj4lv0izi13E8T0H2wyqyXXsz4iiHWJgivJKesoZaM3s+CVBWx2qUsgq85+oi X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bb991c7-af82-4959-8eef-08dbbede3fa9 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:36.5637 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 05/61] avcodec/h264_cavlc: Avoid indirection for coefficient table VLCs 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: mjdzg3X62dqL Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_cavlc.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c index dc22955626..f17e30e853 100644 --- a/libavcodec/h264_cavlc.c +++ b/libavcodec/h264_cavlc.c @@ -246,7 +246,8 @@ static int8_t cavlc_level_tab[7][1<= LUMA_DC_BLOCK_INDEX){ total_coeff= pred_non_zero_count(h, sl, (n - LUMA_DC_BLOCK_INDEX)*16); - coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; }else{ total_coeff= pred_non_zero_count(h, sl, n); - coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; } From patchwork Tue Sep 26 22:16:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43924 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208166pzh; Tue, 26 Sep 2023 15:17:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHYC0ZydeNDF/9lx2AvZr+oYPmjzlVwMTiQKUuiXAvnnkNxcQ2bPxxaTHsUvlBrFRuQ2+OX X-Received: by 2002:a19:5e5e:0:b0:503:18c3:d874 with SMTP id z30-20020a195e5e000000b0050318c3d874mr56457lfi.45.1695766630460; Tue, 26 Sep 2023 15:17:10 -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 d3-20020aa7ce03000000b00530bf1ba02asi12308473edv.554.2023.09.26.15.17.10; Tue, 26 Sep 2023 15:17:10 -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=H9NZXR2W; 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 A5FFF68CA79; Wed, 27 Sep 2023 01:16:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EB91768CA79 for ; Wed, 27 Sep 2023 01:16:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d1Kxjl5YlOXfj7p7oj0WzqJCm8UK/T2gWaozBMiR+vF2OyDUpJ3jAY23AJ5bCQ+6qYGq3urrBILEnggYGkVa1sLKtkFGlfHMOOGbZrEt6o8iov+UL7cM2asar4Dwrcbc5pJ4yIIy6LSWjTxhgwBS8LMxUcITfixxaD8JyOld4yZl6R4lEYL57GZqX4MeasEREALUmBjm3ARjGT0fv9lqnkCBwHlWciAZ+kp5WW3pf5nVbe8BGzsaSBH2V10lAzQpjL59/mojvmLiB5caVeicwQwWmGt2OSPV+qqNhJL3PWqVDHUqOlmEf0NZ6ghv7DEGpJEupOaPrx4HZaXXItjIoQ== 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=tj3XnuVrma/8uf9ZI0ItQeXyebCb+lAMFOQTbi3ai04=; b=beMQItcmzTrYBr55NN/6kLceQzc2bFJXVaBN3/m+I2IH051j3FggrgkTk/K5w4Eul2qTn4DJ6WKaaOUfFSMk2RM8Sw+Y/lMLsMmf9cov8CGlsBnPc4tw3z/z02yIZRQOp9MqXl+g4uM+3jG7b7YuiaXVtBFsP1olLSFnG0SKKzaPTMfyyKTogbz6WBtRX1tf3T/Ovb6UwSNdqWs4kUFCfFQ7F94/uz1VkBk9JyyV76IOqEeX+paOMX+n9xnPajwTXOiPy+9HSbsrVU4mlK0nrdV4V/VzThqJp7Xo3BJ2mXPUUuUCMg/h43cb73xeC4+SIG4BnYFHFJJ6uVYWe0weMA== 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=tj3XnuVrma/8uf9ZI0ItQeXyebCb+lAMFOQTbi3ai04=; b=H9NZXR2WLqqtRJThsrrqhDclcu+b04DHunUGAiZ0emeU7xpfqqX6l5tfUoB/DlTGQy2sZFcRL2HE1L8+YAw13GC3B2QIlvIBJRvXXRQY2tGscr3csV1VrtJ1p49Kd4yfOdLRhBs6XOn34easBgTknmTutuIhiT4JcPblR8lIg6M6TtWFOlQc1MIoO0JSXeQaMepFYlttqQ6EAHDl/+kcoEdLYzIX79RJI/QnCvSYEbkpPlnO3RiSvPQEIqwt62cKdcLz6TfcKGm8OduedAOWx+LG89AUbQllsPqw5vy2JjdXO4n3ZPZgK7nx/TDbid+1bpxNW4C4GdPoqXp9bJEG0w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:39 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:37 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [96JiD/3OkU0xlfYBPFjCCQim/5Jb/k0W] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 72cdc123-3462-4560-1a01-08dbbede4159 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: klGTUDX/6E7yDHICKrnkPL6jNJJqdCf6XWayvxViJhHoI/wSQa696SGfXX6EjtVRkfYStbBcBvjwxd0dQy8FzrPyPorjZQ7OI+f2nmovrtkZGq/3c7ALHW9Tr4UJOsTvdkh5pkdnfwgQ7zwgqBQ1rqBhj7bM/zt8h9pT2uIDQskp2AoInjhtWhHG9SHzexgJyi/EEtEAMk33a13FGitad0N7lyytaGe3k7VO/kdj9GRNfNTA7P3kZjOH5NeAZNsRKL4adwyylbQF6rcagz1ujfDZiD+Z++xl4+LU7JhMCijHIzrWMoZKoII+YH2fIAVakkKIt/ECRqV/EmVzakOXJZNZPIkwd5ILGvbnCBFV9kaJUBWfUllhbaLZDFOO360rsA12ADpAf6GFgikJ68+c1LDXn2hPodUJM4MDmAVnSFBYHHoRmDszVtAFCqSx4bmyandfif26Aq8YY4L0PcrXl84cn/ljiaXNWhqOmKZqXDsLX1JeGANiPdfZ108d4xamzeGYL4v50zD3+57XfWllqCycgok/WlEGnUsAHzoDWRj/AB3Qnvhaerbfk85/jU0/A+FvpViOfzJ6jMcL/56q21eYmjOvxWSfU1x2k0aR4B7vmn6y3kNWfPxdSdR49qYq X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: b391ALK7q+b98g+aWK1THGJbVqP6GmdJiTvEAS4SzAZRgOven3P5V+j1MFc5PyWDdPM33OwSPVfg4yPqlFpac2oZBqMsy2ZR7KQTKwXNKaluWa1gPU/O3b707MgJiPoPASRlRNqsmWnBJQ3RWQD6d1uWeWWEPQACvS70aDXgdUlL8yiq9ns7cZfaBfChjJUhUFy9dG8edSxCM/DgR9wiS3TrFGqOPD8b5TR7zEbyphBmYCs3P8hLRCXryrPU1WWl7bJ58Pnhluoi+aHpmZZjhk97LiAF1cXjf+haDBphNqGW5yxw71e9k6N3xTR0u+Wj3ClRPsni+nwNIlakGnwc3Xo7ZG/dmxRF61cIHvzTkpBqLW3EEXk7zFJX2/KaEgBuH6NsQTCd12XvblCf+PmBiL4YNxVk2kIViOC0y/j3X4kt9sxdMbvjvOn6rx6SEo1lYXC8bNkE+0bvOKD0Qf4h/DB+9V5cIDJ/H7RCnNCDzy14j67gOBYPT74iDR45tEPVe7Booe0mQPeLvgJQnDMobUmUgkuP5z9alxgc1fNpYgLJ7JQ4z6DEySs6Nv6vS19Vn6shX40tKeVH9Lb0j7gUoI31G57JtVRoX+Vxh6AaUeOcm4UmfHWp6t18l/jVVudbCrvca+P5aImUdMn2u60m7PKYBjcSCOwITybjEZdGXyoEZcqgngBsqEd+pR2D+FWjn29dftZhtG9oaimOFytghBH5mfWs1REoFWCO34wkrMzjR1umdkElBbUqshOONO0PNnwy5nfjc9AmEd2yx8nZ7PclfRdinJPaYOUhY6Z+PN5Uq8EKApcEq0kgiP82BfGkVL0Bept2/NResugG9erAYr+YoWgcCBp8dvCoiy9iT0/CUxISrX978Z6JW+qsH8lAOB8H4qhFOl2BXCfZ/XVCz7iPdybUsufFg3zLMz8LhsxJeAMOM0LC3ZghbOhdIeHVfxVQrz9imoegozIn/2ndApaXKw8nYjxUF02gLv7t9ZLPnt3D+JhCfxJ2GJZxfeFLHO1cZUdjoRWbwX/tGDQX5c/7py3hfrVB3bZ8W9N5qm9RaFU+lusXV1TNMcWbzKjU2zQ1gI0uSc1FNrHJ9ySyUuwsNQpPsldyq3Vqb30M3gffKNt1Y/YZD8dzZMZbJm6cCCdQUXT5hf9O2pZTNi7WRGKS2I4DqAdXW0Upmst5Mh0FOygPXdJxWn9NLLAbBYlBNN/O40jWhWeGlB0eCuAGs/c5x6FSzN0zRFgtNvlUkOoQF6DahkIf1hCtzoH0GjzR X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72cdc123-3462-4560-1a01-08dbbede4159 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:39.3668 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 06/61] avcodec/h264_cavlc: Remove code duplication 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: hZk5w9xR1ZPi Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_cavlc.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c index f17e30e853..19f067afb4 100644 --- a/libavcodec/h264_cavlc.c +++ b/libavcodec/h264_cavlc.c @@ -419,20 +419,13 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, else coeff_token = get_vlc2(gb, chroma422_dc_coeff_token_vlc_table, CHROMA422_DC_COEFF_TOKEN_VLC_BITS, 1); - total_coeff= coeff_token>>2; }else{ - if(n >= LUMA_DC_BLOCK_INDEX){ - total_coeff= pred_non_zero_count(h, sl, (n - LUMA_DC_BLOCK_INDEX)*16); - coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], - COEFF_TOKEN_VLC_BITS, 2); - total_coeff= coeff_token>>2; - }else{ - total_coeff= pred_non_zero_count(h, sl, n); - coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], - COEFF_TOKEN_VLC_BITS, 2); - total_coeff= coeff_token>>2; - } + total_coeff = pred_non_zero_count(h, sl, n >= LUMA_DC_BLOCK_INDEX ? + (n - LUMA_DC_BLOCK_INDEX) * 16 : n); + coeff_token = get_vlc2(gb, coeff_token_vlc[total_coeff], + COEFF_TOKEN_VLC_BITS, 2); } + total_coeff = coeff_token >> 2; sl->non_zero_count_cache[scan8[n]] = total_coeff; //FIXME set last_non_zero? From patchwork Tue Sep 26 22:16:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43925 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208248pzh; Tue, 26 Sep 2023 15:17:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGySYMj8A8AdODt4Nj+cXU+OVGkLjjpy5nCcjXp/e7vLWRFW9U3UMQiFWH05Qbg65ECSDPF X-Received: by 2002:a17:906:51c9:b0:9aa:e08:9fb7 with SMTP id v9-20020a17090651c900b009aa0e089fb7mr24542ejk.76.1695766639082; Tue, 26 Sep 2023 15:17:19 -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 y12-20020a170906070c00b009a5e1811764si11945599ejb.267.2023.09.26.15.17.18; Tue, 26 Sep 2023 15:17:19 -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=K3fCOFD7; 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 AD40968CA88; Wed, 27 Sep 2023 01:16:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31F1168CA75 for ; Wed, 27 Sep 2023 01:16:46 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T708YeqMhI43p60zSRd6K1dcw0NVC3soiNnRB8q/fTh6WfF0BKpWls2uun1mA2fiAQ6RXd0UTrxeJLXbdk1kNN0NlFJlivaK7OlN1+xFAAszhMCuVdygcUHJKwKkU4NSrFPmmnembMuOfZWHao/auVB0G5+XVrp0NK26Jsdlg4xOCXsKJhE4dK1ZNVPcBzkf7fnc9X9oo2jDy87psuWTDfamCNx0SsdBNPXFM1R6R8OyQRJuPvwUwhUSIBZKxeP6k8f8SxOuvHeqXWPpM/EPEH1eCi5c3nZ+nHCDNq+f+sPQVplyMdH9Nv/ZMJedZkE6S23mj3cIwSkqnUo3N/Ck4w== 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=Z1X+5PalUAUcXgYRJkSn6QnTljVD2cmeNuschIkkmGE=; b=MewblLs/I7tvwqIxqSrUS8aRMCUuM5csf+2r1AD2an/svLI5f6Rbxr4/whND3pnstV8Jr0NaDzQpKmsSLOPasSPL+E2jIw1am7pEsJDYY0UNGF8wvq40YemtjUEfIMZ8ZPhmKOXTlZW1BO/SdWO2aIdbViR9PI4z+SaMfo2KhGtFtGXM7LUjKeiwgcDmrcudvH/ln+bl7zS6KEqf9ncH8uCXwIY3WMmUEPaLac1SfMIjMNZoFoWtchEbxtZi2OhZVbejv6mz7gUFYslzsV70RPckhtiwP000Kn66pIFWg3tUGVyAJWhqMXVugTsnLtBEX7KDGpQ1flLGhf8Sh2dwbA== 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=Z1X+5PalUAUcXgYRJkSn6QnTljVD2cmeNuschIkkmGE=; b=K3fCOFD7N1NWz5RcsWKU6tCiJAKdW0py2s21UEW+S748bOVzEz5OJQHFmKYGyFehpc/J3JD49JlpsYa0lc+mbqXyE5TbX48BSRbtd82e2yCcajv2t360oYg0s2+opjYdREcHo0tz3ZefWzHP1GVAE/L13y2uqdg7QXl/9Z7tc7RjWvL5vDZwJPTZAeOMLJvvOIvLVIRtG5q3ZSGbkAtxG3nPgFblvnfon+YwXZlS57Ey1Z/5BzkQ59v9Q61e/N9GODLUI3vDNmFgAgdQYdWTOfdJlFUWaYKHW4wxEudYXhIrU/FuMCNVTTaY0WmaRDNZ9NkXUMRRa8+gx+hd7J646w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:44 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:38 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [r49u8lqO/Ewtl0kHnIi0hC9Wk+I7NDVF] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 24e97a14-a558-4828-6f2e-08dbbede4456 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sDy3TTcP+SrJYCtUHPjPzQZ2pXGdB8kDPPh2D72MzwP01TVWAJg66UfUpeG05Xj5GusC5FMYMss7g9UNyBIwhjxOkdpjehHV1jLxEZ3XEIXet5nFo24VjNLt0rl4joPzVw59I9/0ZLddUUTSiRmE1NcTWzQwrRmV5hoheHnal7ErHWvcX2fn7HznRj7fsofE6FLsLbKvp5WqoHqs3A+5rcyOzvBYGPB0+5A6flyInOpImnUDQWMLdoz2ZflDbO+of1/P0zkE1we8OeVzr3Gx5tLrXq9YKDEKjjarx39Wh9yfZkT6RfD/gPmp3EaRhKju0KL8Fmyo4vULgy0FwXaLJq0Nw7EyHpgTvAtQbHnj+r2M0F0fx7v//0h0tf6XUlLEfVX5KEXDTY7mTXOnnz4MPEFrByrx2s8NgQr30YXCXOB6stNoCQzSgDfHvMtCgGRqtKS60LbYOWAem2JqxszkPdDrxFpAr4OUDYzCP/Uf9kMZ3qcMTJ95NurUDydYWqIwybV9GUQXPWM8JFkdI4GbIzZ4LMYRhBj8gmlOwizWbAjaG8GjaMqJ7IG1MrAWsZZoMgFnUb40g8vZYAk6/bNZJkSo3aGzW+GD0pE+bBQ/tcIo/g4p5FmmOalpVOg2/js6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: s/2EW2wKHVvALH3gMI2bpbCHuaDxUk1+F7IHMocBbjIjmGBnlWkboFTSLXc99C19tIddwIMyaJyCR8JDQXFnzxH4hytlvijemdjyzc2sDwlWl70zjuxjjL3+NBVSptKA+xB9x72jRP3Mnl26LmifFCWXH9CkhkOosYNxFarHf/mNnk0+Bvxe6dLbbvG8Inpqu6+eiphBj0VM4KbsXOn3/v8B6Tg6nyd/6+7PbccwLBeJgxS0E2NYSsbpezVEHlUEJOo886rq5jQY4EF/4lnIGkY+ONiipqDzIa8UC6vAMEA2w7+2z41cNZjSgzhPLzyrYqTR+5/M+HwEmvi61VH/JWRxRtu/mCfsqp4eybHIsFgRyVcK+4/++T18Q6pYSFMT/3sBHXPaUObEbTQzqPE7L30OAqVRaWxdxjpME3DqtPXWpIvVR6ttg1LRGiXs0f23gFiuJFy0bcR3/DMAw8CVlvpVnWMd7+0wQZf1pDmyQo0x0zIANR4hMElr7m6ZuSHYOISp2b+94Yy49/MAN3OijWf/FZGfOYBDN4FpgWSU/rj90kgvPbHUKHGDH+aKtAEk7kAJQdHfTlZbOko5KA2wvB0yR8LhtKa8vIFfjhBat3IdmdtxuL4INbqR1JwKIOQOCihpVxpZr4k4rjLQAmvtiVNwUzWVdltYxqZ2LOkJD4j+DOGBXjm8sML/fFg5bWF6NwOAtDormhjlUmO1t92rgleX/N4afOoXQi6nhVvd0eGQ2WSZmxAO8pupzKtLWKf0aT9gko/rUIBS40oxS/VH1Ye3ljUxKpBT5cDKNe4toPnmga54YtwLtzeFQytTGCf2lbTQPHoJNy7dsWpqwMW+ZGVeXPg/YoxzAIHkCQ4zX2T3Rg6tA+WVc6ZopS6ZuKHIUogZANf0hJHPjrrX8CPPZD7jwUGSHU9jF3D9hSAnr3f8jGx+AdV5pzdUUuw/zEs6W6a8gr3xzwc8lPacH+wXJswnJzODiqy5B/b+NrPzHU59A65BskARxSzCzXEYdaEywkOcWD5nMJ4WiPWTreTsK7kh2W1t+sJbSTtghX5GYwrHTLG2w+svHeL2YAoLua2vJza8vpa8BtWGhEOUfqXtBEdWLgqQ14e1Hgb7yV+A7j9Vw4wwgz4M7ZoQZ2xyYoLUz0uJQlfbt6WombiW4d1cUjVyr2QMMhvmgPjj+T+0/XnEIVsfDA1NUwTPQc0VBq6sqPgzMLOnk7pepI4oRhzngfjUykFNJyKsvBUOutskSm02+365BNKAoz9Vq79J/7rZ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24e97a14-a558-4828-6f2e-08dbbede4456 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:44.3877 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 07/61] avcodec/asvdec: Avoid superfluous VLC structures 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: 7ECyypwALwT2 Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/asvdec.c | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/libavcodec/asvdec.c b/libavcodec/asvdec.c index 7ad4faebf9..568881ccd2 100644 --- a/libavcodec/asvdec.c +++ b/libavcodec/asvdec.c @@ -45,11 +45,11 @@ #define ASV1_LEVEL_VLC_BITS 4 #define ASV2_LEVEL_VLC_BITS 10 -static VLC ccp_vlc; -static VLC level_vlc; -static VLC dc_ccp_vlc; -static VLC ac_ccp_vlc; -static VLC asv2_level_vlc; +static VLCElem ccp_vlc[32]; +static VLCElem level_vlc[16]; +static VLCElem dc_ccp_vlc[16]; +static VLCElem ac_ccp_vlc[64]; +static VLCElem asv2_level_vlc[1024]; typedef struct ASVDecContext { ASVCommonContext c; @@ -67,26 +67,26 @@ typedef struct ASVDecContext { static av_cold void init_vlcs(void) { - VLC_INIT_STATIC(&ccp_vlc, CCP_VLC_BITS, 17, - &ff_asv_ccp_tab[0][1], 2, 1, - &ff_asv_ccp_tab[0][0], 2, 1, 32); - VLC_INIT_LE_STATIC(&dc_ccp_vlc, DC_CCP_VLC_BITS, 8, - &ff_asv_dc_ccp_tab[0][1], 2, 1, - &ff_asv_dc_ccp_tab[0][0], 2, 1, 16); - VLC_INIT_LE_STATIC(&ac_ccp_vlc, AC_CCP_VLC_BITS, 16, - &ff_asv_ac_ccp_tab[0][1], 2, 1, - &ff_asv_ac_ccp_tab[0][0], 2, 1, 64); - VLC_INIT_STATIC(&level_vlc, ASV1_LEVEL_VLC_BITS, 7, - &ff_asv_level_tab[0][1], 2, 1, - &ff_asv_level_tab[0][0], 2, 1, 16); - VLC_INIT_LE_STATIC(&asv2_level_vlc, ASV2_LEVEL_VLC_BITS, 63, - &ff_asv2_level_tab[0][1], 4, 2, - &ff_asv2_level_tab[0][0], 4, 2, 1024); + VLC_INIT_STATIC_TABLE(ccp_vlc, CCP_VLC_BITS, 17, + &ff_asv_ccp_tab[0][1], 2, 1, + &ff_asv_ccp_tab[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(dc_ccp_vlc, DC_CCP_VLC_BITS, 8, + &ff_asv_dc_ccp_tab[0][1], 2, 1, + &ff_asv_dc_ccp_tab[0][0], 2, 1, VLC_INIT_LE); + VLC_INIT_STATIC_TABLE(ac_ccp_vlc, AC_CCP_VLC_BITS, 16, + &ff_asv_ac_ccp_tab[0][1], 2, 1, + &ff_asv_ac_ccp_tab[0][0], 2, 1, VLC_INIT_LE); + VLC_INIT_STATIC_TABLE(level_vlc, ASV1_LEVEL_VLC_BITS, 7, + &ff_asv_level_tab[0][1], 2, 1, + &ff_asv_level_tab[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(asv2_level_vlc, ASV2_LEVEL_VLC_BITS, 63, + &ff_asv2_level_tab[0][1], 4, 2, + &ff_asv2_level_tab[0][0], 4, 2, VLC_INIT_LE); } static inline int asv1_get_level(GetBitContext *gb) { - int code = get_vlc2(gb, level_vlc.table, ASV1_LEVEL_VLC_BITS, 1); + int code = get_vlc2(gb, level_vlc, ASV1_LEVEL_VLC_BITS, 1); if (code == 3) return get_sbits(gb, 8); @@ -115,7 +115,7 @@ static inline int asv2_get_vlc2(GetBitContext *gb, const VLCElem *table, int bit static inline int asv2_get_level(GetBitContext *gb) { - int code = asv2_get_vlc2(gb, asv2_level_vlc.table, ASV2_LEVEL_VLC_BITS); + int code = asv2_get_vlc2(gb, asv2_level_vlc, ASV2_LEVEL_VLC_BITS); if (code == 31) return (int8_t) get_bits_le(gb, 8); @@ -130,7 +130,7 @@ static inline int asv1_decode_block(ASVDecContext *a, int16_t block[64]) block[0] = 8 * get_bits(&a->gb, 8); for (i = 0; i < 11; i++) { - const int ccp = get_vlc2(&a->gb, ccp_vlc.table, CCP_VLC_BITS, 1); + const int ccp = get_vlc2(&a->gb, ccp_vlc, CCP_VLC_BITS, 1); if (ccp) { if (ccp == 16) @@ -162,7 +162,7 @@ static inline int asv2_decode_block(ASVDecContext *a, int16_t block[64]) block[0] = 8 * get_bits_le(&a->gb, 8); - ccp = asv2_get_vlc2(&a->gb, dc_ccp_vlc.table, DC_CCP_VLC_BITS); + ccp = asv2_get_vlc2(&a->gb, dc_ccp_vlc, DC_CCP_VLC_BITS); if (ccp) { if (ccp & 4) block[a->permutated_scantable[1]] = (asv2_get_level(&a->gb) * a->intra_matrix[1]) >> 4; @@ -173,7 +173,7 @@ static inline int asv2_decode_block(ASVDecContext *a, int16_t block[64]) } for (i = 1; i < count + 1; i++) { - const int ccp = asv2_get_vlc2(&a->gb, ac_ccp_vlc.table, AC_CCP_VLC_BITS); + const int ccp = asv2_get_vlc2(&a->gb, ac_ccp_vlc, AC_CCP_VLC_BITS); if (ccp) { if (ccp & 8) From patchwork Tue Sep 26 22:16:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43926 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208317pzh; Tue, 26 Sep 2023 15:17:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHmy8Z7cZzpxRFsVA7aqWsi0UImr+KCNnXhMkwbphtaD2Sxf1K5aA0Zg5OvEeWbQF6A/hwL X-Received: by 2002:a05:6512:370a:b0:500:9b7d:ee3c with SMTP id z10-20020a056512370a00b005009b7dee3cmr80108lfr.7.1695766647896; Tue, 26 Sep 2023 15:17:27 -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 f13-20020a056402068d00b00534301403c9si4561100edy.237.2023.09.26.15.17.27; Tue, 26 Sep 2023 15:17:27 -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=N8kJ91v+; 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 CE03968CA8C; Wed, 27 Sep 2023 01:16:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2052.outbound.protection.outlook.com [40.92.73.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 151B968CA7B for ; Wed, 27 Sep 2023 01:16:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mNI1/7SYbzhr+xwYMJ0CX1j9J1qYqRJVAq/wXY9ElUUeOvbbs9Agish30LTuLHcscvgxOHkk+xGqpaKWK+9FIzE5nV4jCB6CJaaBk1iRgSjErovMg3vtZMQKmYUY/PCtlWbEp/TuAiesqBqupcduwTmgz+EXlKF3qni2SE0/zVSn4CxspHadQobdtHSFMiFBzaxIf1y5tXYqTDWklI9NBmD/8eCq2cV6e/y60dZT6wfTeXP8OAVWcDBqEsxp+2zda7vr59Y6v2UfAZHnPoydqtC3EVP+I67zDn43xtrfuZAFUpSKgrcbtBhcSUy+82nLSxPHJOG8gBtUUMHgSp5LWQ== 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=lzx37RvwII8WkFli7/jcAr7dpmHpyece4lIadCG4NU0=; b=kPRiWHxeJUP7K53n2gbFI5aon1Wdk8siIwT3kN89ttKv562AleDPMqSQF/vvONqQ5uJDMovlfR9OLMcmavvh4W5TmI+fRaaKq2sENvyPUQp2W3IaCoLlFrJ8KjGezJjp/4NAPzY8aVldnm5IGmJW6/V0E4RVDzL6NxUsocez1KgHVz0DaK2QdOzcNEaetjYg5+314U0bswqT9z8t8ggsF/er89cHoQgGObvfWYNvjjhkPo/9MCHkRH0RdV8PbDa74Dijl+BNm73qkyidOLEOGHOAYwfVc5bw/bQc8wqUZImpEeg+Owed3Ggwuld08n9nyJkD7HCJ2us6jFO1LL/u1Q== 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=lzx37RvwII8WkFli7/jcAr7dpmHpyece4lIadCG4NU0=; b=N8kJ91v+d1NG6Bq/q8riLHyqG5ZefxNG0JFZL8c190NqMYT/X+nNCrx9FZf6pJ+qxrebM54td/mtneLB1aCiRCpoWSdf2IZb2AyOrG3s4tbxTpfAaDFt6sshrbdckwkavalsXobXabhfthmP+9J4TqTF4D4V/oxH5h9Z+DnhkLPneMaaUfATOGby77/0U//POtMRz3GSey9wPv9g1b2XQV21C5EP16XaVsHJByKIO+z9765Zz6xa3gNNkS4LvzGYn6tHlAL2/crBFXDBKMRj9LQeouudXyZq3Mmp7ujzsY7hZgK2uq58zBhkwgcsLu5yWxUDGgrveoevDtfE96pcbQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:46 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:46 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:39 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [r3JuzOxbGcNdRx0zcHMfyDZE5dfldWCl] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: b374fe0e-823a-4b13-b1b9-08dbbede459a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2nzX4zC1y1sErx8HLO5pRlvGXUA53krpvUepE0867+KUvZwEv6DmRQODV+BsutJlnENxB9fs1C+IggcZJYRSyBTbcj0Aff+ATzKt187o/FOTwwhck6OGNrFHgpZEBftMaFlDZlBIs3Np1YKDyg8UnIil5cUssjflzojr8rppQGraznDRcPzujJzjMr3RLd4B7/SH36/i+MpOP76gJfbY6CHjeijJCBxJ9eqKWH8B/7U6xEYjvURn2ngAsjPfXcQ2kJwJSGDmzfL73gIBIHLKNgCWFK6uLprVVPDu8EWIaFTANqL/0gQWCg3Xzkgx8YRFYRXFfRh2FG56WKFBlFiaonMS7vUqABx4da0lXMChmi/z4NSlmfj1oiTA3IOpmT7hLVf4FrNvgXV14X5kj+CSF2tMhqVUKSoKBxfM+pxbsKgR3rAUnd7CvPt2WJxinEGAA4Lnbz24f7bEhelS88GFoGEh4dqJfEYEUBm2jKKpUAKU/OT6LOWOdlZzTVRcoCFhMlCC8o0EHuu9G78t5VEhSpS+hiremis6C7X8GNpP54iTPy0KmAbD0gzPGE5wz8GmWKrj/RmWO80VmHza7TxhzXqI7vzlVHbqfVnNB14RFfANfC9GledvARHF9LpIBTcV X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Wi0UajiuDLL3PxuPLnsGGH5I6wK2usJ8BkercZNCPUIVesg4zBKZ+/UPWJtpRY2lLTJOTE8JQr2YXTE+JJTTy6c8BXmejO7rvqWhc24PpxjYl9BC3BEgdRCwLOtTdpLUhL18FC/pBQwFLoepMPbiEtjVB+ZGrcbiZ7cxO4RVC40RCJTxvpc/wiM3OUexG1KzEyYM7u8rD/sMkgm1sQTJ7FAdiIdHwueivh8/Y2kLgcrKTVqzGgJQyfum/4jsGA1gzoAVic/T8UVYo/Md/Ggxi5hswGgTgmtBVkVMqks4Da9q7DaDOBigPgDCnQTZqY8BKMke+RhTigEfm99VpMSWq6oYq6X+D8pzI+tCjEtpdcO9TgLeqTQ7tYiAaowJv5ILWNegGEUD9mf4Ij7AJ/YqQes/7Gb0jiBY0oMrodSCo/NMzG34Zzhpv0rN8sBB0sNprG+g3jj3gQJh/MscZTH6s3w/5vYh0IdrnoRoUN+FVr9t2Az3WjM/qPcMXMPyasL9ofBtFfL0mccQCPrjXot3eJqXGNPj3qo6q7JBJ3CpMQtqioseN4esHOnD/OL31dMsC87o1/FSTfwg+ZeOoNOwVz4DDgu1g5P3T75OTTB/ZOw01u5qbOm0pXNHI0l05okqodh/S9VaB8tRHBFAI+z403r2z8Oz055KBKYTf8rfHWTLs7pM+QsRlCTqAirv0lqKWL3Jzs7tNv+c3LWgYO+o6PI5q9VZYOJiHq24QBqYkja0T1HSS3n3pVfbD4cXiGvfGVEQngKpWB5/c0/m9bUSX5p5sGcYBlst51dZIH6kLeAHfPgkSAPREqENQw62QmGS7YGtZolSQJPL2tvbMt6om0lI461isRPi5ufUfFnLa3DTuhi9YvGvmr8H2nR5Zw1hf2GmeW4xPvloiFN5aSXA+uXP1xMmvpqztmMFtZcyfSmAM/qW9pCRnymQVaVoiQVIH5VJ7WQtWqEslu6iyBovEo/ytfldb9hzij47Z4COxhQQTa764osHPdPSF6pEYPt6zvK3B+wIQ2RuWQkKK7k44Qlvk6Hy6wl7GjsaEySCmCNTYLRCxKSo25GXpTurIvXAUqELxwPGpB1bTfjU2o9qg/FOc/DTFwImJuwsBeUMzIMqfi2kIT4tqH6zyOB7oKFgtTyJO8dIT3f1wrBuk02F6/zm5gaqDSI3/xXZtU6NcCr3EZPDkeclSJiU4NRvE/bTyCELtucz+tod0S6KPvkpKx+EeHm8DX5dCT9O08yEH9MwNoi3+tBl2osKMzH7VKir X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b374fe0e-823a-4b13-b1b9-08dbbede459a X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:46.5353 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 08/61] avcodec/faxcompr: Avoid superfluous VLC structures 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: Nteecylfp/gK Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/faxcompr.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c index 62729fe90f..41a1eec081 100644 --- a/libavcodec/faxcompr.c +++ b/libavcodec/faxcompr.c @@ -95,28 +95,24 @@ static const uint8_t ccitt_group3_2d_lens[11] = { 4, 3, 7, 6, 3, 1, 3, 6, 7, 7, 9 }; -static VLC ccitt_vlc[2], ccitt_group3_2d_vlc; +// Also contains the other VLC tables pointed to by ccitt_vlc +static VLCElem ccitt_group3_2d_vlc[512 + 528 + 648]; +static const VLCElem *ccitt_vlc[2]; static av_cold void ccitt_unpack_init(void) { - static VLCElem code_table1[528]; - static VLCElem code_table2[648]; + VLCInitState state = VLC_INIT_STATE(ccitt_group3_2d_vlc); int i; - ccitt_vlc[0].table = code_table1; - ccitt_vlc[0].table_allocated = 528; - ccitt_vlc[1].table = code_table2; - ccitt_vlc[1].table_allocated = 648; + ff_vlc_init_tables(&state, 9, 11, + ccitt_group3_2d_lens, 1, 1, + ccitt_group3_2d_bits, 1, 1, 0); for (i = 0; i < 2; i++) { - ff_vlc_init_sparse(&ccitt_vlc[i], 9, CCITT_SYMS, - ccitt_codes_lens[i], 1, 1, - ccitt_codes_bits[i], 1, 1, - ccitt_syms, 2, 2, - VLC_INIT_USE_STATIC); + ccitt_vlc[i] = ff_vlc_init_tables_sparse(&state, 9, CCITT_SYMS, + ccitt_codes_lens[i], 1, 1, + ccitt_codes_bits[i], 1, 1, + ccitt_syms, 2, 2, 0); } - VLC_INIT_STATIC(&ccitt_group3_2d_vlc, 9, 11, - ccitt_group3_2d_lens, 1, 1, - ccitt_group3_2d_bits, 1, 1, 512); } av_cold void ff_ccitt_unpack_init(void) @@ -213,7 +209,7 @@ static int decode_group3_1d_line(AVCodecContext *avctx, GetBitContext *gb, for (;;) { if (get_bits_left(gb) <= 0) return AVERROR_INVALIDDATA; - t = get_vlc2(gb, ccitt_vlc[mode].table, 9, 2); + t = get_vlc2(gb, ccitt_vlc[mode], 9, 2); run += t; if (t < 64) { *runs++ = run; @@ -261,7 +257,7 @@ static int decode_group3_2d_line(AVCodecContext *avctx, GetBitContext *gb, int cmode; if (get_bits_left(gb) <= 0) return AVERROR_INVALIDDATA; - cmode = get_vlc2(gb, ccitt_group3_2d_vlc.table, 9, 1); + cmode = get_vlc2(gb, ccitt_group3_2d_vlc, 9, 1); if (cmode == -1) { av_log(avctx, AV_LOG_ERROR, "Incorrect mode VLC\n"); return AVERROR_INVALIDDATA; @@ -285,7 +281,7 @@ static int decode_group3_2d_line(AVCodecContext *avctx, GetBitContext *gb, for (;;) { if (get_bits_left(gb) <= 0) return AVERROR_INVALIDDATA; - t = get_vlc2(gb, ccitt_vlc[mode].table, 9, 2); + t = get_vlc2(gb, ccitt_vlc[mode], 9, 2); if (t == -1) { av_log(avctx, AV_LOG_ERROR, "Incorrect code\n"); return AVERROR_INVALIDDATA; From patchwork Tue Sep 26 22:16:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43927 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208399pzh; Tue, 26 Sep 2023 15:17:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+u/u0LH+slzCyaU4mOjSSnUPosrA8gVksNmb/R14UDSXZ+vw57bHNoqf17hmMsQcE2yYu X-Received: by 2002:aa7:d3ca:0:b0:533:2327:1eed with SMTP id o10-20020aa7d3ca000000b0053323271eedmr321606edr.24.1695766657226; Tue, 26 Sep 2023 15:17:37 -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 k21-20020aa7d8d5000000b005346d97acf7si1602707eds.225.2023.09.26.15.17.36; Tue, 26 Sep 2023 15:17:37 -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=XSjmRG6N; 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 CCFE168C9FF; Wed, 27 Sep 2023 01:16:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2059.outbound.protection.outlook.com [40.92.90.59]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9DBB068CA83 for ; Wed, 27 Sep 2023 01:16:53 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nc0imneX7BaqZqO4Dwgs6kiefrlQziwhTpzOtPZ6ngxLggIfu0sOHM1sE4kiy3fAm6fSySKpdW+KSO4N7sVTgQ5x6mx5AvQJ5By4k4peMEwGvrgMzT4SlmTvB7V5xZTu0c7Pi13/K7sBOYXwuFs4dn2Se5Pj/B4QB3bx3o4ehq3bsWdWWAURV7lgJkNhaQfKKrNdd8ZJMhrL3zt64e1YKRiwAvimoV8xYPpdWy2K4mv1z+zreLNcv5HW/b6pwunNw941GA1DqflfUGHWxMk9IpgbN7jzOMDxDhKHslWpEuIEDFQqs1VHJYxzsmZXWj/L0ZeUefc0J9ed0DN1pK4cBA== 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=byAvG6IbNcbACSyfeuHHrhJQMWlIvnE+sHdhA0gekWA=; b=JPInP4oAab85pKh5yJdDwL8RpMN+RsqHFwCOfhDld2PZ6WGdhGCpDJAldYyI5/4BfeAQ5+UY2Oh4HQRB0VdwnsSRHvS8Zmnjk166CZWHIXAeXAowocaV5kNFxf92vjSswvirJmYGazLixNPmli3egYY0hpFWSPxI4Qi6TtgBe6IacC06+8WETwq7jvTHBdtDm0HjHmN/40UE+9ZUgFP5/qYRl+1HpeQeP/uxUpZOcNn3JSOBa5YaBrnhQGSEmCjT5FSIFGAabKEcsHviHG5on2InhOcNlx6vjl0w3MT3M18wFKAoYbzcURP8v8MzdMa9daCEa3aGynXYgAUHayxCDA== 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=byAvG6IbNcbACSyfeuHHrhJQMWlIvnE+sHdhA0gekWA=; b=XSjmRG6NFxtTHvzZwg0J44tUT8fskfMeOxbwappdkhinkYenlL+UBzkaRoFP1GUpESjD5Ht/kndB0NOJpb9RB/MFC9jPDc7tjkYaZo6vFoffl1KWfqNxxDBMmTQnV5TOzFt8bXwMLPrqOjNVT76IHXggJYrgXZYcp+EJydaDiXuDLGrzauXsSGc4nvkTVYVcILQgFBv1XNdthWbzMggUDo5fC55BoW7HM/GvpCK40zYysvmghAGggEyYpjdusxrEjsTpOw+eZST4nSnAyGB8olfQ1IYMakpn/4brhAhzQt2au9UR45WpaYxPviJxvtkZz1B9gXE7iJMNU6LYEuOWNA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:52 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:40 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [3bLRai27YvIpT+nHkoQc+kjgpjbovIQ4] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c7b85b5-7972-4456-9eb2-08dbbede48f2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rxhtxNsKkwcvz6emByHOo7MtEycbrIl41p76luSpHeYJqJ7J7lysW6DWYrT7R3i54MP13j6pIJ4bPzX7CKo50g+kReskj/Cek7hBeBKVMR0EGnHMptjpQUOSu8E353OaHk4dTZD1mm14O34/FkiPnJ01ZodZYJ8zhxPd1yZRvlET1sIIyUxa/4xjY4k5nDa70/638C1553ziGOZKNkdK/NygU3g7JTow0IaJSnq99DjkSIHSvSh/KgcysdBGN8eJOZiz1HOjKGld9ZqsJecfQdCysex6f5JyxyO2H2g/e6D3ukiZCb/8Tqdug3oDmzSgFKmFG/NSeIKg/UG8d7NbmMV0rpTFD2BsNKvoWfabF3Mnl5zYVftQ6lGPTzqGpnLv3mz01zwoRUXfr3V27LIiGTbefUb2NLBzzsLFlCZkhKVMV9HSRzFHnQBz9dx/TJT0I82WYZRZnzNkxH7RvkThhVJgSTxc+Sf2Os5O5Se3OzkaoEFi5IXBqg1tFkCHQbOqJgLpybNMvgNLFFVbmYJ515rUthQim8xRDkB+gmWXikjrGOewu5rWCwbdDnu8BjGRH8oQKnkZTKqH/kfBpcm407Of0RWYchqBuxdRGSleQw3QHobQlKJXwcLhcJC6JURi X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sJtNIh6G1U/GHd+Bqgl53WrPVLn0CnK1I9xYFXDBtdGyqg3l1CGXw4IzyakewpJ7qYFVxiiEkULPZOhFxAE2M0IAnPVdfXUMiybGay7+CXdp594SQ/mezY7eTv+TEy/XSwsaZA3Smagn/8bL5vgDf2bPGV7ICJSDGHgPJswYjA8PPtyOKiv/+NvhB26wF9iiNuHvC/07sg4ryuMvzXXKoPkVpRhZ+HvNfSOAKJNFip0mw47YhGWxvTLUgdFXHzqBdnLF4J2DNcr/SVvOTlsuewWL6Z4droSexdUwWyNWov/KZmr5rWPKpZ1MpPd6nEJjWkwM84RKOZyDQqj20U27X2/aC9OeiziC4euhEc+kXdYp2ROTA1e+XsYVH4OCHCtepLIHmxS2WkrTf0+Mfk0WpHyVazsAGW7EID7egqefgDGK4a8YMVO7rGA0vWBQtm6oQFNUwsTELxIOANU79Ol3Z7MXj5nrqpGfkXfNdo+nrlxkyZkBQwFbrjI4088gzuR/LVXuu06PTGu85eiUOCzz3jFvjohb3/aKs5SEfrD5Tkvxz/4kzjBE5hxlPDD5BTfm84rpJPxfXteynBM4UGniK+yRc30fS2QW4Bllp8qDbw08FmKTdz1elEjGs+gSzvfpA78rCMTOnl/WtGXd/UZvXLlmAlJkkC13bfWjfmUGsgjgpqfVZ50mBianNFYIT0Zc5nkxzpGEzI9mc67i5ignlKZ8ln+0GgHGBQMnZGOPiweiY8fRGptJgEgpgSJjsJTQGw97XLHOEMusJzX+eHTSPQuKO7UBB6Ep3LJaHMYbyHWAbAtFVVF06K2SwKQ806ED7r82GK9wBs2PspNOBxH+V/GgpPEgyP7H+3j22a+Z2G9gGshwk3fOeYJRSFZgo2P+m0TVUmsC4suGy3z7QFwSwcG4VOvzeoPTFJC5gM0ZKX2dQqwV9QwE2ZAgJpO5q+Foh6Mr3GX5qO/Fw1rlDZYQ0nV1AE422A4lItacFQRpaX3s1pLdkRRSDseK0HMt35u82rqTXdrJeHdNyctkAV/QUaN6bU2dYz2AM23j+oLtMUMocrF+LywknxglTmwHWvJf6pmxReV/Xh4dGe24fFs2Fu5DM4ZUneOQI8QQGJ1JIPmCYxhWE8ZWf5mKdDkYxuH1qlYxnVRsZ2sGLI6SjsOFRmiJX36v+uLRCSgM0dWyR+1lMR+p1D5fjSeScL0RklBcTyNa/EH5Z0chnL3/GKwODimtFkZoBid/5QSyu8kgyVm1J5tkUa+Nitf09D/r/TKj X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c7b85b5-7972-4456-9eb2-08dbbede48f2 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:52.1500 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 09/61] avcodec/h261dec: Avoid superfluous VLC structures 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: H+fpRBsrCqtP Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index c41b96c3c7..6eb69c1120 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -44,10 +44,10 @@ #define MBA_STUFFING 33 #define MBA_STARTCODE 34 -static VLC h261_mba_vlc; -static VLC h261_mtype_vlc; -static VLC h261_mv_vlc; -static VLC h261_cbp_vlc; +static VLCElem h261_mba_vlc[540]; +static VLCElem h261_mtype_vlc[80]; +static VLCElem h261_mv_vlc[144]; +static VLCElem h261_cbp_vlc[512]; typedef struct H261DecContext { MpegEncContext s; @@ -64,18 +64,18 @@ typedef struct H261DecContext { static av_cold void h261_decode_init_static(void) { - VLC_INIT_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35, - ff_h261_mba_bits, 1, 1, - ff_h261_mba_code, 1, 1, 540); - VLC_INIT_STATIC(&h261_mtype_vlc, H261_MTYPE_VLC_BITS, 10, - ff_h261_mtype_bits, 1, 1, - ff_h261_mtype_code, 1, 1, 80); - VLC_INIT_STATIC(&h261_mv_vlc, H261_MV_VLC_BITS, 17, - &ff_h261_mv_tab[0][1], 2, 1, - &ff_h261_mv_tab[0][0], 2, 1, 144); - VLC_INIT_STATIC(&h261_cbp_vlc, H261_CBP_VLC_BITS, 63, - &ff_h261_cbp_tab[0][1], 2, 1, - &ff_h261_cbp_tab[0][0], 2, 1, 512); + VLC_INIT_STATIC_TABLE(h261_mba_vlc, H261_MBA_VLC_BITS, 35, + ff_h261_mba_bits, 1, 1, + ff_h261_mba_code, 1, 1, 0); + VLC_INIT_STATIC_TABLE(h261_mtype_vlc, H261_MTYPE_VLC_BITS, 10, + ff_h261_mtype_bits, 1, 1, + ff_h261_mtype_code, 1, 1, 0); + VLC_INIT_STATIC_TABLE(h261_mv_vlc, H261_MV_VLC_BITS, 17, + &ff_h261_mv_tab[0][1], 2, 1, + &ff_h261_mv_tab[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(h261_cbp_vlc, H261_CBP_VLC_BITS, 63, + &ff_h261_cbp_tab[0][1], 2, 1, + &ff_h261_cbp_tab[0][0], 2, 1, 0); INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552); } @@ -254,7 +254,7 @@ static const int mvmap[17] = { static int decode_mv_component(GetBitContext *gb, int v) { - int mv_diff = get_vlc2(gb, h261_mv_vlc.table, H261_MV_VLC_BITS, 2); + int mv_diff = get_vlc2(gb, h261_mv_vlc, H261_MV_VLC_BITS, 2); /* check if mv_diff is valid */ if (mv_diff < 0) @@ -379,7 +379,7 @@ static int h261_decode_mb(H261DecContext *h) cbp = 63; // Read mba do { - h->mba_diff = get_vlc2(&s->gb, h261_mba_vlc.table, + h->mba_diff = get_vlc2(&s->gb, h261_mba_vlc, H261_MBA_VLC_BITS, 2); /* Check for slice end */ @@ -410,7 +410,7 @@ static int h261_decode_mb(H261DecContext *h) h261_init_dest(s); // Read mtype - com->mtype = get_vlc2(&s->gb, h261_mtype_vlc.table, H261_MTYPE_VLC_BITS, 2); + com->mtype = get_vlc2(&s->gb, h261_mtype_vlc, H261_MTYPE_VLC_BITS, 2); if (com->mtype < 0) { av_log(s->avctx, AV_LOG_ERROR, "Invalid mtype index %d\n", com->mtype); @@ -450,7 +450,7 @@ static int h261_decode_mb(H261DecContext *h) // Read cbp if (HAS_CBP(com->mtype)) - cbp = get_vlc2(&s->gb, h261_cbp_vlc.table, H261_CBP_VLC_BITS, 1) + 1; + cbp = get_vlc2(&s->gb, h261_cbp_vlc, H261_CBP_VLC_BITS, 1) + 1; if (s->mb_intra) { s->current_picture.mb_type[xy] = MB_TYPE_INTRA; From patchwork Tue Sep 26 22:16:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43920 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208475pzh; Tue, 26 Sep 2023 15:17:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHd34wJH3J88krOY32S3LXpfIIFt00sQ1FQutmKCgs7Xwa1DFkk9y5aUKcl9JHT37B1DH0T X-Received: by 2002:adf:fc4f:0:b0:321:6865:a8be with SMTP id e15-20020adffc4f000000b003216865a8bemr9383wrs.62.1695766665934; Tue, 26 Sep 2023 15:17:45 -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 dx26-20020a170906a85a00b0099de25aa629si11959459ejb.681.2023.09.26.15.17.45; Tue, 26 Sep 2023 15:17:45 -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=bNbSX52h; 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 CD87068CA9C; Wed, 27 Sep 2023 01:16:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2084.outbound.protection.outlook.com [40.92.90.84]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 07C6668CA8B for ; Wed, 27 Sep 2023 01:16:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hqN2L7xtJJXT9tuXaAzCqkbMtUZwxWo9CYkLa8cQ1I3xuK+T11peCvLgcgUGlDKu7JpHTRnHph1LEjPmJ9aGMW3nUNAdBZ7yaG2vTTjzdaf19p4D0h24QPnlcZxCE7CL9KZs96KWbHhjUfoinf5ZWogh2X4l9x7WnUF12On2jOwUwa9kzqefZR3w5kmwV6cyU+InNL+FgkbJNT9BSZqfvZd620vddGbeLMsx8xIFYgd2Itiq0JKg1HA5tw5ararSXaYesAdIDK/M2RvNOIduKsVWPRWkfeRY9VjCczxVpfhle0+FJIW6squnDQiZNz5iITbxav/YLfbn79nb5wFpDA== 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=a8YXlk6L8QPYfFMBL30yXzZrCV5WALmjkr+PYmA6M4E=; b=hYzb1/xYQvsN94Hcd9GK/q0N5mqI1ESGrSghrFMT3xawAo7hwUT9xBw0GoOCGPJcOs6L9cuTCpY3s7KdhDgiJs6LkZ57jsuymEnzxNZOVB7pE6vVFEwX2c1IbZ7goL49idbOM132D4hruJStVfYfCvJ3YAKKMH8Yt32dVYKSDmWbjXfSozPl94WDt6k79dcGbORoWYljB0yo1ootl+zeeNOZKB4N+gKbilvlJJk2PQwE6PH/ePXeeyUj1pG22Qe9VEzZ5SK9Cm6iRfNZMDooyux9klemMyfuWMxK3tEvmIZ8OaYV2XBK5a7e2weKU/49BBPbmV5ZL7/Ac+OjobkGXg== 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=a8YXlk6L8QPYfFMBL30yXzZrCV5WALmjkr+PYmA6M4E=; b=bNbSX52hkRM6ZxLV4TxlSnl+pIU/9qznxA+0z29kr4jai4BGG/UqwmNgXbk6ZLRQsDdxE8J8hoLjntza4b44tISVeziAa/fUhklHOvuvJc1N5N1nTSFOsZDqNiTIYM75pqMLxwrWlhKPsQvPkl0HqHTdwno49H+PcOhvtMsgMFhNJrn9LspDkov3p3ljtp7ORMzwe4Gs+0J0u/NBM1XNd1/Qz0nbNFw1Afhx/jOwYTvtPJk0t+a+JeJvL8ZmKLWLhwvDmFCw1hlc+6PW+UR2+nXRI9g9OJFUkCHgLPaweoVleICDUMofKZCfRPEQx5Tqoa0oi9Un0rPlqUQ47Yp7QA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:55 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:41 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [P/nfPkxAGtsFaRHpSiytIewTVEac4qgm] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 26cd52e1-e782-4eeb-398c-08dbbede4af3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OS8GvmMDrRfYmiJKCML8Acy3vtexX2aJJ7x7UdTzrnbE/XryyFG5T11Jp/d/NgPo/nOuo9VCVI+azOB/eKB1ey2UoXEi8Fi52Z7zAhNANYlBn6AG/Wr0cMeLCv7FXso3rGjeHfHK2b0o64Mk2ydUksJGi8NrSVer7jMihnE6VofKbC1IXAat38oOQSP6f3dyYLfOsvJchIlBC/KEd1dXecuWUa7DYZtfhdYP7OMStbo7w/9+WzALuzFC2BTKGZMAtfWQPVnx0Wp1EV2qvmBisTjTfsXyuFGlYePDnQtgyyst0BJeOK95uC7frFtHCUfT8dm/rVbC4/7u6jFJJ7MP4gHtL2SeMkCqEB8LE2k6xsQAFmt2O2ir6AiCNm4zEhLdkbjzE4540lMAZXr8H3lH8UsQqdv0wApw5Vq1Hregutm77/aYVJcUXxX9nKjybuE4xe4kTm1+zbdUIpgV8OlpBFOggwvs7HwHyeFHuPP/Te8Fb/HMlIKt7NccW9OkcjIZ/7Nc+rT+o3WwoG76lcB257OxtN2oHkZHa9nX12YWiS/Qi2jeG/FxfAJNYrYYgU9eLJuOS8+cX/mo2GILHCm5Uczc/P7Sd0+SSVUpQujq79q8Zi9WyzVob6/EEtCzCX0F X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /sUC32vBnGQNnewTowGg9Yox6X8tfMRftw0lC4tWKOE6owdxas/eF95X/tP6RwrqLuCcyJq9I1/307M9ADSDljSULhQ63n+nTb/7WSqjk9kEMAVktnvdr+xbdEmC64EkXZbnD+CbLz5+yyXGYhG8OqnjrmTL8BijI/TB/up+Fh3tJEcX0lhuMfz+ruY85/wyLB4V+8U7gkiz9UPRKmg4fKmw0em1/Qouf0STTmelY3O7RrweFRkirIpG4st4Kqhpr6B61BoWA12CNNux5SqnlXa5vOxRymraWoZRNhyHEewTQvB5SbzPgNxBEoanc6WFuZ/mWjI31O3ghfgm+c5vUdAf6D3r2KBD/9OSCyMTmhv6DbGgxG3cJ7M20KMWAEUMCIui+V0ZvjiJNCDcNwYsc/FFVsdQW7LCRyezXXMtfEtzE0vJwWMIgCj2ygyijlQHGTjoJ6J3FvB7EszZh6ioS3VVE2QbmF23gQzGt4RNzkjduCKXgL3zdomFDEluPTkPqgrT/NzFvJnZtiVuaIciMkBEEBnjZmlwMD+wFdZKS4m44Pu8NXPcNcU+5pAyzA8FWJYv3BiyPQFLhr9b2neqEyinWaWQHUTWF9JvgJRooPfNMdUy9exjO3aTS/YKITQXEGZclSy1aR/h9B9eNfdbLE/+RPMzzCxWz8P37N7d6jnrX4SwIzwg23x6vVBHM/ZKVfnTg2FnKLV0ipBrYpLbP9eRFPYgapUnuAORYIjpBYl1/11BHds/CVX40m7Bov5C8IgB8cwI13g2uDVApN4G4ziQHKgLo498LuS0VeBYKb2MdiciIV93B2LGgxC4oadDP3KlUwWNtCYn0VVrxM9cPQhe1frfQCnmujhoRiMmFuOo7KKBbNZBDqoOTwXtlFmP4snjL+CeixsdEN6sDDPYtIIJYo1EQtY/3uKuFVAc5pEQNUo1JBhsR73Nz6DWMSB6527pdqW/BGyr5EYIkzELfD5X9LBPLKiA54xNdyD6vQVSf/I+obX8xrG/tEUyPCPeEyrT7MBstzqrSuvBWxsvZFebUY2oTkqvgt7Zi1H2cOx8MP6fCXTequ8kblZPd78eQTTqMVMQKZbWQoqSS4Bl3R2Jasc0i7MizHwkyCbov2b2GDZuIj3Qzvkn1VxRu9fym8SSg+obL3eTUp3twprAnpa+hiSA2Ut/4QJ8JOdA6RV5rR/DTT75a7O7cwK5Rzu3cno75v24u7zyFy2MKGSd6Jq/wjJOfe1S47wJViflIWVoxmc8NW4ZuS6LpFQRW/yH X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26cd52e1-e782-4eeb-398c-08dbbede4af3 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:55.4957 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 10/61] avcodec/ituh263dec: Avoid superfluous VLC structures 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: gWrpLoLJzumf Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/h263dec.h | 8 ++--- libavcodec/ituh263dec.c | 68 +++++++++++++++++++------------------- libavcodec/mpeg4videodec.c | 18 +++++----- libavcodec/msmpeg4dec.c | 12 +++---- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/libavcodec/h263dec.h b/libavcodec/h263dec.h index 9f1db72903..06ff7c1c48 100644 --- a/libavcodec/h263dec.h +++ b/libavcodec/h263dec.h @@ -33,10 +33,10 @@ #define CBPY_VLC_BITS 6 #define TEX_VLC_BITS 9 -extern VLC ff_h263_intra_MCBPC_vlc; -extern VLC ff_h263_inter_MCBPC_vlc; -extern VLC ff_h263_cbpy_vlc; -extern VLC ff_h263_mv_vlc; +extern VLCElem ff_h263_intra_MCBPC_vlc[]; +extern VLCElem ff_h263_inter_MCBPC_vlc[]; +extern VLCElem ff_h263_cbpy_vlc[]; +extern VLCElem ff_h263_mv_vlc[]; extern const enum AVPixelFormat ff_h263_hwaccel_pixfmt_list_420[]; diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index f9c8476ecd..81b456405f 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -99,38 +99,38 @@ void ff_h263_show_pict_info(MpegEncContext *s){ /***********************************************/ /* decoding */ -VLC ff_h263_intra_MCBPC_vlc; -VLC ff_h263_inter_MCBPC_vlc; -VLC ff_h263_cbpy_vlc; -VLC ff_h263_mv_vlc; -static VLC h263_mbtype_b_vlc; -static VLC cbpc_b_vlc; +VLCElem ff_h263_intra_MCBPC_vlc[72]; +VLCElem ff_h263_inter_MCBPC_vlc[198]; +VLCElem ff_h263_cbpy_vlc[64]; +VLCElem ff_h263_mv_vlc[538]; +static VLCElem h263_mbtype_b_vlc[80]; +static VLCElem cbpc_b_vlc[8]; /* init vlcs */ static av_cold void h263_decode_init_vlc(void) { - VLC_INIT_STATIC(&ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 9, - ff_h263_intra_MCBPC_bits, 1, 1, - ff_h263_intra_MCBPC_code, 1, 1, 72); - VLC_INIT_STATIC(&ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 28, - ff_h263_inter_MCBPC_bits, 1, 1, - ff_h263_inter_MCBPC_code, 1, 1, 198); - VLC_INIT_STATIC(&ff_h263_cbpy_vlc, CBPY_VLC_BITS, 16, - &ff_h263_cbpy_tab[0][1], 2, 1, - &ff_h263_cbpy_tab[0][0], 2, 1, 64); - VLC_INIT_STATIC(&ff_h263_mv_vlc, H263_MV_VLC_BITS, 33, - &ff_mvtab[0][1], 2, 1, - &ff_mvtab[0][0], 2, 1, 538); + VLC_INIT_STATIC_TABLE(ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 9, + ff_h263_intra_MCBPC_bits, 1, 1, + ff_h263_intra_MCBPC_code, 1, 1, 0); + VLC_INIT_STATIC_TABLE(ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 28, + ff_h263_inter_MCBPC_bits, 1, 1, + ff_h263_inter_MCBPC_code, 1, 1, 0); + VLC_INIT_STATIC_TABLE(ff_h263_cbpy_vlc, CBPY_VLC_BITS, 16, + &ff_h263_cbpy_tab[0][1], 2, 1, + &ff_h263_cbpy_tab[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(ff_h263_mv_vlc, H263_MV_VLC_BITS, 33, + &ff_mvtab[0][1], 2, 1, + &ff_mvtab[0][0], 2, 1, 0); ff_h263_init_rl_inter(); VLC_INIT_RL(ff_h263_rl_inter, 554); INIT_FIRST_VLC_RL(ff_rl_intra_aic, 554); - VLC_INIT_STATIC(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, - &ff_h263_mbtype_b_tab[0][1], 2, 1, - &ff_h263_mbtype_b_tab[0][0], 2, 1, 80); - VLC_INIT_STATIC(&cbpc_b_vlc, CBPC_B_VLC_BITS, 4, - &ff_cbpc_b_tab[0][1], 2, 1, - &ff_cbpc_b_tab[0][0], 2, 1, 8); + VLC_INIT_STATIC_TABLE(h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, + &ff_h263_mbtype_b_tab[0][1], 2, 1, + &ff_h263_mbtype_b_tab[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(cbpc_b_vlc, CBPC_B_VLC_BITS, 4, + &ff_cbpc_b_tab[0][1], 2, 1, + &ff_cbpc_b_tab[0][0], 2, 1, 0); } av_cold void ff_h263_decode_init_vlc(void) @@ -273,7 +273,7 @@ int ff_h263_resync(MpegEncContext *s){ int ff_h263_decode_motion(MpegEncContext * s, int pred, int f_code) { int code, val, sign, shift; - code = get_vlc2(&s->gb, ff_h263_mv_vlc.table, H263_MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_h263_mv_vlc, H263_MV_VLC_BITS, 2); if (code == 0) return pred; @@ -366,13 +366,13 @@ static void preview_obmc(MpegEncContext *s){ s->current_picture.mb_type[xy] = MB_TYPE_SKIP | MB_TYPE_16x16 | MB_TYPE_L0; goto end; } - cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); }while(cbpc == 20); if(cbpc & 4){ s->current_picture.mb_type[xy] = MB_TYPE_INTRA; }else{ - get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpc & 8) { if(s->modified_quant){ if(get_bits1(&s->gb)) skip_bits(&s->gb, 1); @@ -809,7 +809,7 @@ int ff_h263_decode_mb(MpegEncContext *s, s->mb_skipped = !(s->obmc | s->loop_filter); goto end; } - cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); if (cbpc < 0){ av_log(s->avctx, AV_LOG_ERROR, "cbpc damaged at %d %d\n", s->mb_x, s->mb_y); return SLICE_ERROR; @@ -824,7 +824,7 @@ int ff_h263_decode_mb(MpegEncContext *s, if(s->pb_frame && get_bits1(&s->gb)) pb_mv_count = h263_get_modb(&s->gb, s->pb_frame, &cbpb); - cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, "cbpy damaged at %d %d\n", s->mb_x, s->mb_y); @@ -905,7 +905,7 @@ int ff_h263_decode_mb(MpegEncContext *s, mot_val1[1 ]= mot_val1[3 ]= mot_val1[1+2*stride]= mot_val1[3+2*stride]= 0; do{ - mb_type= get_vlc2(&s->gb, h263_mbtype_b_vlc.table, H263_MBTYPE_B_VLC_BITS, 2); + mb_type= get_vlc2(&s->gb, h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 2); if (mb_type < 0){ av_log(s->avctx, AV_LOG_ERROR, "b mb_type damaged at %d %d\n", s->mb_x, s->mb_y); return SLICE_ERROR; @@ -917,13 +917,13 @@ int ff_h263_decode_mb(MpegEncContext *s, s->mb_intra = IS_INTRA(mb_type); if(HAS_CBP(mb_type)){ s->bdsp.clear_blocks(s->block[0]); - cbpc = get_vlc2(&s->gb, cbpc_b_vlc.table, CBPC_B_VLC_BITS, 1); + cbpc = get_vlc2(&s->gb, cbpc_b_vlc, CBPC_B_VLC_BITS, 1); if(s->mb_intra){ dquant = IS_QUANT(mb_type); goto intra; } - cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0){ av_log(s->avctx, AV_LOG_ERROR, "b cbpy damaged at %d %d\n", s->mb_x, s->mb_y); @@ -1009,7 +1009,7 @@ int ff_h263_decode_mb(MpegEncContext *s, s->current_picture.mb_type[xy] = mb_type; } else { /* I-Frame */ do{ - cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 2); if (cbpc < 0){ av_log(s->avctx, AV_LOG_ERROR, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y); return SLICE_ERROR; @@ -1034,7 +1034,7 @@ intra: if(s->pb_frame && get_bits1(&s->gb)) pb_mv_count = h263_get_modb(&s->gb, s->pb_frame, &cbpb); - cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if(cbpy<0){ av_log(s->avctx, AV_LOG_ERROR, "I cbpy damaged at %d %d\n", s->mb_x, s->mb_y); return SLICE_ERROR; diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index a8dd57bf6b..51a2c7fe35 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -960,7 +960,7 @@ static int mpeg4_decode_partition_a(Mpeg4DecContext *ctx) if (show_bits(&s->gb, 19) == DC_MARKER) return mb_num - 1; - cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 2); if (cbpc < 0) { av_log(s->avctx, AV_LOG_ERROR, "mcbpc corrupted at %d %d\n", s->mb_x, s->mb_y); @@ -1032,7 +1032,7 @@ try_again: continue; } - cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); if (cbpc < 0) { av_log(s->avctx, AV_LOG_ERROR, "mcbpc corrupted at %d %d\n", s->mb_x, s->mb_y); @@ -1147,7 +1147,7 @@ static int mpeg4_decode_partition_b(MpegEncContext *s, int mb_count) if (s->pict_type == AV_PICTURE_TYPE_I) { int ac_pred = get_bits1(&s->gb); - int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, "cbpy corrupted at %d %d\n", s->mb_x, s->mb_y); @@ -1161,7 +1161,7 @@ static int mpeg4_decode_partition_b(MpegEncContext *s, int mb_count) int i; int dir = 0; int ac_pred = get_bits1(&s->gb); - int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, @@ -1193,7 +1193,7 @@ static int mpeg4_decode_partition_b(MpegEncContext *s, int mb_count) s->current_picture.qscale_table[xy] = s->qscale; s->cbp_table[xy] = 0; } else { - int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + int cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, @@ -1689,7 +1689,7 @@ static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64]) } goto end; } - cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); if (cbpc < 0) { av_log(s->avctx, AV_LOG_ERROR, "mcbpc damaged at %d %d\n", s->mb_x, s->mb_y); @@ -1708,7 +1708,7 @@ static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64]) s->mcsel = get_bits1(&s->gb); else s->mcsel = 0; - cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1) ^ 0x0F; + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1) ^ 0x0F; if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, "P cbpy damaged at %d %d\n", s->mb_x, s->mb_y); @@ -1951,7 +1951,7 @@ static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64]) int use_intra_dc_vlc; do { - cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); + cbpc = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 2); if (cbpc < 0) { av_log(s->avctx, AV_LOG_ERROR, "I cbpc damaged at %d %d\n", s->mb_x, s->mb_y); @@ -1969,7 +1969,7 @@ intra: else s->current_picture.mb_type[xy] = MB_TYPE_INTRA; - cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (cbpy < 0) { av_log(s->avctx, AV_LOG_ERROR, "I cbpy damaged at %d %d\n", s->mb_x, s->mb_y); diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index a81241b1bb..e61045c2f9 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -75,7 +75,7 @@ static int msmpeg4v2_decode_motion(MpegEncContext * s, int pred, int f_code) { int code, val, sign, shift; - code = get_vlc2(&s->gb, ff_h263_mv_vlc.table, H263_MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_h263_mv_vlc, H263_MV_VLC_BITS, 2); ff_dlog(s, "MV code %d at %d %d pred: %d\n", code, s->mb_x,s->mb_y, pred); if (code < 0) return 0xffff; @@ -127,7 +127,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) if(s->msmpeg4_version==2) code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1); else - code = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); if(code<0 || code>7){ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code, s->mb_x, s->mb_y); return -1; @@ -141,7 +141,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) if(s->msmpeg4_version==2) cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1); else - cbp= get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc.table, INTRA_MCBPC_VLC_BITS, 2); + cbp = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 2); if(cbp<0 || cbp>3){ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); return -1; @@ -151,7 +151,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) if (!s->mb_intra) { int mx, my, cbpy; - cbpy= get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + cbpy = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if(cbpy<0){ av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y); return -1; @@ -173,7 +173,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) int v; if(s->msmpeg4_version==2){ s->ac_pred = get_bits1(&s->gb); - v = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + v = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (v < 0) { av_log(s->avctx, AV_LOG_ERROR, "cbpy vlc invalid\n"); return -1; @@ -181,7 +181,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) cbp|= v<<2; } else{ s->ac_pred = 0; - v = get_vlc2(&s->gb, ff_h263_cbpy_vlc.table, CBPY_VLC_BITS, 1); + v = get_vlc2(&s->gb, ff_h263_cbpy_vlc, CBPY_VLC_BITS, 1); if (v < 0) { av_log(s->avctx, AV_LOG_ERROR, "cbpy vlc invalid\n"); return -1; From patchwork Tue Sep 26 22:16:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43928 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208537pzh; Tue, 26 Sep 2023 15:17:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFyPSRIJU/NAiJY6cRYB3XPBsZG1HX+9tF1hU01aDQchBqaJjosmOEozcVKWdE0oCvJ3m3Y X-Received: by 2002:a05:6402:1841:b0:52b:d169:b373 with SMTP id v1-20020a056402184100b0052bd169b373mr269874edy.32.1695766674976; Tue, 26 Sep 2023 15:17:54 -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 a1-20020aa7cf01000000b005313a6a9d5asi9455836edy.418.2023.09.26.15.17.54; Tue, 26 Sep 2023 15:17:54 -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=Z633Uxe7; 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 ED14C68CAA0; Wed, 27 Sep 2023 01:17:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2043.outbound.protection.outlook.com [40.92.90.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 31B0868CA44 for ; Wed, 27 Sep 2023 01:17:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TWXbX3w0XYSUiX5tea7lD0/HPLTgZg1otK7nY5X4XSglqz2iAeSvXHiYhcGO0EXENOFQD7CVSRaqs4jfNEA+Qb4hiKNsfKgkERDmFk+r38C608um1yZ23BzGutRSZPqmcwjB8ADtNIpnGNQIl0wolY54FMm/52jyjggLLIxYixme0s+lUJkat7VydiwEzwTXKubqVB23xNRTcSimuNOdIUDQYWVBPAGHpeaIeEOqaW/r/AIy8ozGN4vYcP7/VjuQSXBEcsd2SkdFVZuXm9Bx+QYxqLmpznqXcG9BOdiE8Al/LOz97Ckdf4VkUjgkWAci9dSxkiZ35ZQOGQnHk4UpoA== 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=pKRR321ZhcZo3TYEKdj28dm0egWn1D1l0Dt8GcpsQDA=; b=FO27mwmkK5rn899E4zmwL3rRxyzr1XtSCJISjafBvKvhRWy4NINttWrPHbAiAw/oGlqbQ+Fzdigclbvb9yPQAxXaqQzVul43H1xuAdBxGXyiAsU7IV+zz3st7yiqJINv8FFSR8JNdiMnZH/HCRP9WwjJl5DOUlylk+bOOixLjGcyRaWaQAZqranEmQwoVmMkaK9aExThAoSc0sWwE8xNNYsozIOcJ1e9Uh6f+J8b0IlGiEeVXlYxViPezww6XLuFkcr2MJ+3ts9Xl64b3ZTdtEXGRZx30pa6BcMBLu+1jA+RpZcIcnZK+2MNPjB5Yb0/gqw11ivOAylPACRGvUJi6Q== 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=pKRR321ZhcZo3TYEKdj28dm0egWn1D1l0Dt8GcpsQDA=; b=Z633Uxe7UwNUwDQfebhmHlQwtWGLd5jwHAgLsgQCHGpi9JI+758ve4qwYq+buPvNXx08I2T6txeATY39oK65w5WH7tdeYdE1BwsLeSejC85hi2aU+NY57WZUDZaKi12rnpn8MdIq0a59JFDesFnbmm191gOmL9G454+3YFdrFDKFYEpYBqPp6sO9EE7m5cyIq60ARTsNSj74jsuNJU8EXDffmfv2PORLK83vSqu+/VSxwepxRWT+66xy7XRamnAXNXfHJJKE3oLl2kMaiILyFWPCw97DAEyvXJ/CnqB7esJARB+i5yO1WVYnex3uCFKPG5yc+G98z615Nvf+9mJozw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:17:01 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:17:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:42 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [wLckJpiann8tIuYZD272OFfIwC6kZyu9] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b0ec2e3-9e20-436c-ea6d-08dbbede4e8d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Jqd7hTT7Nu3WIHXVdx+afK9zNTn4fqrP7hy5/5aI9cA8W8cGNuY6c8Rrymcu7BgLGP26f/xEA1fCldzjbQMHFYfTuMXB+DY8dKJ+CaKJx1r4EbnjbFCMYMPsxzirlEWuVae7Y8n8JTnB3bItTGArF3zL2RJ6C9pr3XFsBqzRJXhl0HrhmcikOXtJN0IJyq/cf6z1NUIQ2RRNM7zcbkoEAQ1Mu8TS8vUehYlDiAjD2AUS/xQH5/Mpa3cXcydQmbU93xmqJt50NN+PRdotFYKGK+zRn25qPCHzXng15q7PqzVh/M//cO8HOfKaTWITC5mre1GysHa3sgc/VmizFqVlI7/akw0Zc01JXVwpd2ME7UBRi7SL72H7dA8RQp/DKXYeMJiFvcK5KZAHYWQUa3NJs/5HCLbMQLKvkEpdHQKflQoDnE6GYrJJHEZhDWqUwOWat+zZZaSAhDV+tdZPS6Zd45ucmK3LJzCC/3KnqnsMQULJAxlEZmOaoSzA4uEM0Zw1DJxpYW+ORDTF1qgxh2J7zRDCCD4ickkKMibLVZ6VOyVg3I6kUqbivQwRgZPpmZAHVSMRiQ/+jWmrZ32yIBDicFTMGtzby5Zq01+p26imPkmGmzo5ajfH5EZUBphnvLAl X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: M8baq328hpasm8WU+Vke27avEsWhDEBbpch7guZBzW2k6zJdSlD8PwxpdYyc6H1Ac4nvEhwkXRdEbKidi2kJhUkypOkOhQGfTG+GHu1pMaTOhOWI8s2gV7YGJ9K691veFiW9qkB86ebuTMN1CWugn/dxmNuorTT1FFfHdgTJO934y3vbG9Xz8q3zqj2xlkl6NLI11x76hzT/1+V+Cz+M/IDTvOwxeREauZfgBzMPJnIPXDGJ0WYEeQivoDNiy+i0RAGVAXzOlWeXY/HQ9M6h9UcGDc08s3UQWU5HzOnrj/vvxW0BAvPH59riPV1+GaNno+dGUBQ29ASnU3VMa/tGIy8Vie3vzqu4QutXiuvSJ2sdHKNsV2C24evO4HUxJScrdKCDNPrzuh8XJc/zW83rQ0sOOZ2eutX+to6Fn4MH5XKtLEoaKmY1tEINQlzkZfW7bid54Mw5vemKzH+v6dR2JZm1SBo4N7PioV8jzjYv/LX0lOGNK4kicR5RyH+doP9wEZ4eEH+TrXrND0tKZt+wMTl74uHnjbJoRBqwq5kIYgtJHrI8qPbYb7Y/oFvw0RBOI7II06Rh12yefGXpfqjDfE6zVL3iEydYCbIThlOslcXjwddO2/b5LP/GlRgMJMZ509tS1ef2oa5Z+n0DXu6udd8J8l78FO1g7n7Uq7CO+IZE2rG0jmE8uNLuyOoO3PGIGe3RXPGgqodxmwWOlxQlIaAbZHhdDPKFZDXw+FerHKfU+zm8gcVmYQSDaLWnpS4AnkQWXUdQwC4kopmzf6MyEEutR5RHdH3ZFtN4tiMfFXIpMy/XkwpG2WlsI0xXVh1BXdPsJ4gUhRU1Jdd1FvFaA2Mb8K6TSmskmxFnzHoLTpNrBLnGWhEUlPm6mj503omDseKfakzQJWY5ymP9RO9PdOHZc8f3t+skUHVW9Vqgpl8TBKNfuZZCxeVIMLMbUpPtj0hyBuxUOi3tOyUm4hxrX+1h7coLl7TRTHXUvCaXYdBIwGTpJFCCHYQB1cueBPEuvaf8bTB9AManVnq0PunroRWuzvMDvs44brtefEC1D1FB8YUrSbMh+mE8NUIE6Suc744pE/OWvSc15dKWwSXB+L74HCrEJ9zTCM+RHi5kwEvTAghGkY10G4TfWOISLVJb03q7CaxHDpNCyWkOH23ankhrKoVjE3g5y/VMT50DJY8X/csWP7ifsMlhFbh2focX5Ix3DAGVH0HisFABv1rq21NqN2N5NugSmj+Jit9AobwnAcEXUw+uhrWlQrrcP6tQ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b0ec2e3-9e20-436c-ea6d-08dbbede4e8d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:17:01.5772 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 11/61] avcodec/msmpeg4_vc1_data: Avoid superfluous VLC structures 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: DFmga9uw4DZG Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Also combine the ff_msmp4_dc_(luma|chroma)_vlcs as well as the tables used to generate them to simplify the code. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4_vc1_data.c | 61 +++++++++++++++++------------------ libavcodec/msmpeg4_vc1_data.h | 10 ++---- libavcodec/msmpeg4dec.c | 13 +++----- libavcodec/msmpeg4enc.c | 15 ++------- libavcodec/vc1_block.c | 31 +++++------------- libavcodec/wmv2dec.c | 2 +- 6 files changed, 48 insertions(+), 84 deletions(-) diff --git a/libavcodec/msmpeg4_vc1_data.c b/libavcodec/msmpeg4_vc1_data.c index e643668730..a25eb956ff 100644 --- a/libavcodec/msmpeg4_vc1_data.c +++ b/libavcodec/msmpeg4_vc1_data.c @@ -32,28 +32,25 @@ #include "libavutil/attributes.h" #include "libavutil/thread.h" -VLC ff_msmp4_mb_i_vlc; -VLC ff_msmp4_dc_luma_vlc[2]; -VLC ff_msmp4_dc_chroma_vlc[2]; +VLCElem ff_msmp4_mb_i_vlc[536]; +const VLCElem *ff_msmp4_dc_vlc[2][2]; static av_cold void msmp4_vc1_vlcs_init(void) { - VLC_INIT_STATIC(&ff_msmp4_dc_luma_vlc[0], MSMP4_DC_VLC_BITS, 120, - &ff_table0_dc_lum[0][1], 8, 4, - &ff_table0_dc_lum[0][0], 8, 4, 1158); - VLC_INIT_STATIC(&ff_msmp4_dc_chroma_vlc[0], MSMP4_DC_VLC_BITS, 120, - &ff_table0_dc_chroma[0][1], 8, 4, - &ff_table0_dc_chroma[0][0], 8, 4, 1118); - VLC_INIT_STATIC(&ff_msmp4_dc_luma_vlc[1], MSMP4_DC_VLC_BITS, 120, - &ff_table1_dc_lum[0][1], 8, 4, - &ff_table1_dc_lum[0][0], 8, 4, 1476); - VLC_INIT_STATIC(&ff_msmp4_dc_chroma_vlc[1], MSMP4_DC_VLC_BITS, 120, - &ff_table1_dc_chroma[0][1], 8, 4, - &ff_table1_dc_chroma[0][0], 8, 4, 1216); + static VLCElem vlc_buf[1158 + 1118 + 1476 + 1216]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); - VLC_INIT_STATIC(&ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 64, - &ff_msmp4_mb_i_table[0][1], 4, 2, - &ff_msmp4_mb_i_table[0][0], 4, 2, 536); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + ff_msmp4_dc_vlc[i][j] = + ff_vlc_init_tables(&state, MSMP4_DC_VLC_BITS, 120, + &ff_msmp4_dc_tables[i][j][0][1], 8, 4, + &ff_msmp4_dc_tables[i][j][0][0], 8, 4, 0); + } + } + VLC_INIT_STATIC_TABLE(ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 64, + &ff_msmp4_mb_i_table[0][1], 4, 2, + &ff_msmp4_mb_i_table[0][0], 4, 2, 0); } av_cold void ff_msmp4_vc1_vlcs_init_once(void) @@ -82,9 +79,11 @@ const uint16_t ff_msmp4_mb_i_table[64][2] = { { 0xd, 8 }, { 0x713, 13 }, { 0x1da, 10 }, { 0x169, 10 }, }; -/* dc table 0 */ -const uint32_t ff_table0_dc_lum[120][2] = { +const uint32_t ff_msmp4_dc_tables[2][2][120][2] = { +{ + /* dc table 0 */ + { { 0x1, 1 }, { 0x1, 2 }, { 0x1, 4 }, { 0x1, 5 }, { 0x5, 5 }, { 0x7, 5 }, { 0x8, 6 }, { 0xc, 6 }, { 0x0, 7 }, { 0x2, 7 }, { 0x12, 7 }, { 0x1a, 7 }, @@ -115,9 +114,8 @@ const uint32_t ff_table0_dc_lum[120][2] = { { 0x60784, 24 }, { 0x60785, 24 }, { 0x60786, 24 }, { 0x60787, 24 }, { 0x60788, 24 }, { 0x60789, 24 }, { 0x6078a, 24 }, { 0x6078b, 24 }, { 0x6078c, 24 }, { 0x6078d, 24 }, { 0x6078e, 24 }, { 0x6078f, 24 }, -}; - -const uint32_t ff_table0_dc_chroma[120][2] = { + }, + { { 0x0, 2 }, { 0x1, 2 }, { 0x5, 3 }, { 0x9, 4 }, { 0xd, 4 }, { 0x11, 5 }, { 0x1d, 5 }, { 0x1f, 5 }, { 0x21, 6 }, { 0x31, 6 }, { 0x38, 6 }, { 0x33, 6 }, @@ -148,11 +146,11 @@ const uint32_t ff_table0_dc_chroma[120][2] = { { 0x608884, 23 }, { 0x608885, 23 }, { 0x608886, 23 }, { 0x608887, 23 }, { 0x608888, 23 }, { 0x608889, 23 }, { 0x60888a, 23 }, { 0x60888b, 23 }, { 0x60888c, 23 }, { 0x60888d, 23 }, { 0x60888e, 23 }, { 0x60888f, 23 }, -}; - -/* dc table 1 */ - -const uint32_t ff_table1_dc_lum[120][2] = { + } +}, +{ + /* dc table 1 */ + { { 0x2, 2 }, { 0x3, 2 }, { 0x3, 3 }, { 0x2, 4 }, { 0x5, 4 }, { 0x1, 5 }, { 0x3, 5 }, { 0x8, 5 }, { 0x0, 6 }, { 0x5, 6 }, { 0xd, 6 }, { 0xf, 6 }, @@ -183,9 +181,8 @@ const uint32_t ff_table1_dc_lum[120][2] = { { 0x1e695c, 26 }, { 0x1e695d, 26 }, { 0x1e695e, 26 }, { 0x1e695f, 26 }, { 0x1e6960, 26 }, { 0x1e6961, 26 }, { 0x1e6962, 26 }, { 0x1e6963, 26 }, { 0x1e6964, 26 }, { 0x1e6965, 26 }, { 0x1e6966, 26 }, { 0x1e6967, 26 }, -}; - -const uint32_t ff_table1_dc_chroma[120][2] = { + }, + { { 0x0, 2 }, { 0x1, 2 }, { 0x4, 3 }, { 0x7, 3 }, { 0xb, 4 }, { 0xd, 4 }, { 0x15, 5 }, { 0x28, 6 }, { 0x30, 6 }, { 0x32, 6 }, { 0x52, 7 }, { 0x62, 7 }, @@ -216,6 +213,8 @@ const uint32_t ff_table1_dc_chroma[120][2] = { { 0x18f6484, 25 }, { 0x18f6485, 25 }, { 0x18f6486, 25 }, { 0x18f6487, 25 }, { 0x18f6488, 25 }, { 0x18f6489, 25 }, { 0x18f648a, 25 }, { 0x18f648b, 25 }, { 0x18f648c, 25 }, { 0x18f648d, 25 }, { 0x18f648e, 25 }, { 0x18f648f, 25 }, + } +} }; const uint8_t ff_wmv1_scantable[WMV1_SCANTABLE_COUNT][64] = { diff --git a/libavcodec/msmpeg4_vc1_data.h b/libavcodec/msmpeg4_vc1_data.h index d12fcb032f..a92193a8f5 100644 --- a/libavcodec/msmpeg4_vc1_data.h +++ b/libavcodec/msmpeg4_vc1_data.h @@ -34,10 +34,9 @@ FF_VISIBILITY_PUSH_HIDDEN void ff_msmp4_vc1_vlcs_init_once(void); #define MSMP4_MB_INTRA_VLC_BITS 9 -extern VLC ff_msmp4_mb_i_vlc; +extern VLCElem ff_msmp4_mb_i_vlc[]; #define MSMP4_DC_VLC_BITS 9 -extern VLC ff_msmp4_dc_luma_vlc[2]; -extern VLC ff_msmp4_dc_chroma_vlc[2]; +extern const VLCElem *ff_msmp4_dc_vlc[2 /* dc_table_index */][2 /* 0: luma, 1: chroma */]; /* intra picture macroblock coded block pattern */ extern const uint16_t ff_msmp4_mb_i_table[64][2]; @@ -46,10 +45,7 @@ extern const uint16_t ff_msmp4_mb_i_table[64][2]; extern const uint8_t ff_wmv1_scantable[WMV1_SCANTABLE_COUNT][64]; -extern const uint32_t ff_table0_dc_lum[120][2]; -extern const uint32_t ff_table1_dc_lum[120][2]; -extern const uint32_t ff_table0_dc_chroma[120][2]; -extern const uint32_t ff_table1_dc_chroma[120][2]; +extern const uint32_t ff_msmp4_dc_tables[2 /* dc_table_index */][2 /* 0: luma, 1: chroma */][120][2]; FF_VISIBILITY_POP_HIDDEN #endif /* AVCODEC_MSMPEG4_VC1_DATA_H */ diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index e61045c2f9..716fc13529 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -237,7 +237,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t block[6][64]) cbp = code & 0x3f; } else { s->mb_intra = 1; - code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MSMP4_MB_INTRA_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 2); /* predict coded block pattern */ cbp = 0; for(i=0;i<6;i++) { @@ -582,14 +582,9 @@ static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr) return -1; } level-=256; - }else{ //FIXME optimize use unified tables & index - if (n < 4) { - level = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } else { - level = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } + } else { + level = get_vlc2(&s->gb, ff_msmp4_dc_vlc[s->dc_table_index][n >= 4], + MSMP4_DC_VLC_BITS, 3); if (level == DC_MAX) { level = get_bits(&s->gb, 8); diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c index a8ddb8d8e1..119ea8f15e 100644 --- a/libavcodec/msmpeg4enc.c +++ b/libavcodec/msmpeg4enc.c @@ -544,19 +544,8 @@ static void msmpeg4_encode_dc(MpegEncContext * s, int level, int n, int *dir_ptr if (code > DC_MAX) code = DC_MAX; - if (s->dc_table_index == 0) { - if (n < 4) { - put_bits(&s->pb, ff_table0_dc_lum[code][1], ff_table0_dc_lum[code][0]); - } else { - put_bits(&s->pb, ff_table0_dc_chroma[code][1], ff_table0_dc_chroma[code][0]); - } - } else { - if (n < 4) { - put_bits(&s->pb, ff_table1_dc_lum[code][1], ff_table1_dc_lum[code][0]); - } else { - put_bits(&s->pb, ff_table1_dc_chroma[code][1], ff_table1_dc_chroma[code][0]); - } - } + put_bits(&s->pb, ff_msmp4_dc_tables[s->dc_table_index][n >= 4][code][1], + ff_msmp4_dc_tables[s->dc_table_index][n >= 4][code][0]); if (code == DC_MAX) put_bits(&s->pb, 8, level); diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index 1baa6a9bf6..751ea57617 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -592,13 +592,8 @@ static int vc1_decode_i_block(VC1Context *v, int16_t block[64], int n, int dcdiff, scale; /* Get DC differential */ - if (n < 4) { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } else { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } + dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[s->dc_table_index][n >= 4], + MSMP4_DC_VLC_BITS, 3); if (dcdiff) { const int m = (v->pq == 1 || v->pq == 2) ? 3 - v->pq : 0; if (dcdiff == 119 /* ESC index value */) { @@ -738,13 +733,8 @@ static int vc1_decode_i_block_adv(VC1Context *v, int16_t block[64], int n, int quant = FFABS(mquant); /* Get DC differential */ - if (n < 4) { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } else { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } + dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[s->dc_table_index][n >= 4], + MSMP4_DC_VLC_BITS, 3); if (dcdiff) { const int m = (quant == 1 || quant == 2) ? 3 - quant : 0; if (dcdiff == 119 /* ESC index value */) { @@ -940,13 +930,8 @@ static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n, s->c_dc_scale = s->c_dc_scale_table[quant]; /* Get DC differential */ - if (n < 4) { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_luma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } else { - dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_chroma_vlc[s->dc_table_index].table, - MSMP4_DC_VLC_BITS, 3); - } + dcdiff = get_vlc2(&s->gb, ff_msmp4_dc_vlc[s->dc_table_index][n >= 4], + MSMP4_DC_VLC_BITS, 3); if (dcdiff) { const int m = (quant == 1 || quant == 2) ? 3 - quant : 0; if (dcdiff == 119 /* ESC index value */) { @@ -2591,7 +2576,7 @@ static void vc1_decode_i_blocks(VC1Context *v) } // do actual MB decoding and displaying - cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc.table, + cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 2); v->s.ac_pred = get_bits1(&v->s.gb); @@ -2727,7 +2712,7 @@ static int vc1_decode_i_blocks_adv(VC1Context *v) return 0; } - cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc.table, + cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 2); if (v->acpred_is_raw) v->s.ac_pred = get_bits1(&v->s.gb); diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index 469b2c4b2b..d7c193455d 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -482,7 +482,7 @@ static int wmv2_decode_mb(MpegEncContext *s, int16_t block[6][64]) s->mb_intra = 1; if (get_bits_left(&s->gb) <= 0) return AVERROR_INVALIDDATA; - code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, + code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 2); /* predict coded block pattern */ cbp = 0; From patchwork Tue Sep 26 22:16:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43929 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208642pzh; Tue, 26 Sep 2023 15:18:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFkLDReXjPUQk1XL4KbsEbQAQCjLX0ySG/entVs2DjSAXXz/jAHl8gOU+fdSzcbZWRdZDLR X-Received: by 2002:a05:6512:3c8f:b0:500:9d6c:913e with SMTP id h15-20020a0565123c8f00b005009d6c913emr68841lfv.52.1695766684280; Tue, 26 Sep 2023 15:18:04 -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 v22-20020aa7d816000000b005341ec48bfasi5043153edq.50.2023.09.26.15.18.03; Tue, 26 Sep 2023 15:18:04 -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=BA7CXv22; 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 15A0568CAA5; Wed, 27 Sep 2023 01:17:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2067.outbound.protection.outlook.com [40.92.90.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA90568CA44 for ; Wed, 27 Sep 2023 01:17:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QhVniel+RmgVymJJh9Q8GiwYUj+++13HGagFwgCpFFNOdgcnNqD3hLrqoy8My4+Im7ptoId576hgN5ZxZcQrlCLsIhrdV+sUH3mvCLfaUK3iWKszHWpFKXzRmX1oPlOe9y02p1+nSldWznxMOLJSdltV90DxWyp4pEy7JGbD8+4hmDtH/6RNHhk4H2mlXkL8HLqSTufWI8JEFONgVclEPKAqLiSZe3iJheGptjnM+gFtMyZx83i9F4Wyas1hhETVfgia2kBRPs8SDxW5U2CinO7dtZz7wKrzAGfzFUWMzAaGcfgqSQ2ICoIwANLNtNDx8utWa1FHWp3Ts72sC4ZuxA== 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=x9pdBDN4ST2Z5KMixlOctk/LQLrci/OriOL39gsCAEg=; b=aifXFfbRkR/uHs/uuCJkGCLvoWtJqDsYXjaqAn6nujUIm/nXwxTBqQjKFeSD5LH/S8HkaUhBmGlx/8/bUqC69k8asCsvWP4MtH7FOrF1KPnMt55eQFzBht/TPXRosOkugwfibecFSXLhmVux/84oRsSj2PyiKy3ujTjKo8vrOsK7oevhfdkFajohJ4zMf0Xc6oN6veGYACLxTWYDH6zKFExMIcNo5zar7VBA9dLG7BiuQkCEnH52xWrFjy+bKytJvtCtLd9RZzso0jD9RUrD/WLcD8n3CjlLFfzJilogKe9tPLU8GjBU7VuTHyBspicqA/R/ikD0Uh8Fmte2fRuvUg== 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=x9pdBDN4ST2Z5KMixlOctk/LQLrci/OriOL39gsCAEg=; b=BA7CXv22GHbpUpSwx1yP/M3XV4bG5T/VOM6cZj3bt3i+XcGtri0MBhJcex/728Wo+xEYU8dzg3IKrBJJs1UEDszErrflxwWtdIZ/dDRuFYAXavhH7Jmsede9kAWjNkCgEDcB40eMKnTshqyvZh+mjArR4f/ZyBCtb5C9MIUrgbwJvR28L8QZPKQn0xGRxH/S4q/KfoH52qaIfQtsLcsTnAFY3LsH3G8nIMBlkh+OppUtvL+IscxFmAvrnv6709dFFOlOY3ZQebyR5uR/SoiXP8IbR6XkdyX05+vj7GGJGJOl6u+6WNwjXcLPVaDjYfViL4SlrtTCYOj9HKAIqr2T/g== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:17:05 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:17:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:43 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [PbVmdJSj0sDh9GDVXrrE59NiCPIhEP84] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 85cbe285-0acc-4b5f-f94f-08dbbede50c2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6STf+qsGU9yZz7feOXHsRqdr6tJ99A+JRA/BmU8mnORTb65BhDrdu0IQlDDQjPn2+LKj+TN5cNEayp6j+p5HmE9vYozj3U3wzGV68awEGfRJD0HKjsSTQb5e77aQNKknFE+Dk12WdkRE41Kie+HY7JStutR1Jg+FkXj3QEhILNwTcpe5BV6v3PSeO6RjjWRQwFfAxqUt5L0qB2p9vIjudLrL+xzLsfepQfEn11JegPemfCQpmnM5wBO7RldnViILhg1ZMtg71NTfgQllcqdRSgMJxFMAFJkcIDcD++Eeu9jDP9aIlmiGp1XoqnvKCnRCRdXCGDfl/61H78YqgJXg9rlpSzeVlWXyPq5vGkiXzHrrHE/fcL60ebDYTV3dTwqbC+/cp3AIstr+4QNCAHB+tcE3TwNCGzHMefM3dyP/sULBMUSs1x+qRS4jxKMUFBNIdcwj8UJLbc1vajqxfuF2yMg1OaZIgslQu4+/0F4kwP0jxV7SXPLgmhebjY/pifnTNaLpi37U7klINuXy0ndqKm1GlliJoGOZkjxXZt17TIL8nqQK9SRWLPnPZ6kvHnfkTfx7B0vPTIEg7/7btmDT/zcbrNceJ3gKfhhbD5o+bNJGM06O4xTFkWWqkj9txSV9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4hiaak1GawusZ5UfdcgGKgdxrizQiCmjLYqqoKBh7CmFr6QZJIrhChEgL6p1BjAflcnOIv/pPVgJ0MDvDwrr2vpGdHnKzCX1nhFLb8DtBf7Rp5HqurfGOgMqFEd9RoR+04f6rGJsB7N+Uyue1ks29pHH2fVX/xqaEurF8V+oy0InDEE9vQTpSBiuMpNYgex0aafY0d1gdQBt1jU+UT4cBsVCzwXkqPwW+heQ30reIFfnGewErQGIbWrz6n0rh+pbonrcqGqqVg1eZ3Mlb7gXWpvvTBCpQy6drLJP1kYcdbEb1drsixPeq2fvJcOI53b0SR4vjf2Bpf3KGD0zmpBoOXehNOlYu4MEc+DX0PFgIDKdEoJatyKYfIqA5VnmMwbxnsVGcLPfZKjbDE8HfB1agSEisKJcfZruI2ASm44JGekLq9ZY2OMABfCToSzZ16G+fn3/grivKgcyA2W6x32cnlTgcaY5S1ZFaAToWRk2xOMEDxXyueUj5DP1WmYXdClOpo+meIc5w23uV8pMUi5DJYKb4hqM2O2U6tKbTfL1TcfY4ExJlw7RPGJatflMGhY/RtqCyxDyGykcNHpMS5VQWaYEpnWqBrR8eT0cn+Ov0cduw/It12acVX88SYxnOoJGc4MBLNFv0tg8gNz1npj1eCPh2GY32lbSwfAAxruRrBcdi6HoU3Ehb4lrGrD+eU+6hZtXLoIZscoIbgWud6Z7lVxZRWA9+3+DzfqmGwMaXmb1GWofEcigGDCIX6A1k0STqCeYEFqRAwIMAHxehLYp/5gPlX9B1f3f3sluUJ7O94sek9lj2aRe5VI89glyNbCy7E0N+pRO/CaG0GLgP3CgOllO4g2zJImP7H2b9C6PU+xI9BNKDpTRiCVBmQv8WLq+gOAg80zXx2lKFbCE91fwN8vSSIw2CqKU/bHBr5WMafuLSTerH0PZ94wLkSbzik/8xrutKAsfdRvDy7/CKa8KT+OLWTsizcM+5TTpcodhbvS0I0s1VEM5ZuRej0hzKRyQ8X4cl/8QO6g7TT0B4O9PPZekLMYgyqJWdQpg9X0lS0CzxRR5UFRimoHkZ6BR/ostlkBewORAyraS6B1LO6hARXzC7uT1j9f2ewn1j7auIb4pmKx3V+8yItVkCh9seoFsItkcrr6bsRb99jF5jgW0y35dsHzVVazBdErJz2tJYYJLnJNVsD2Nc8bJLG6I3UFcc6cb6SsztyhtKIB0B8pFgG1f0fJfuj6cwWsXxG8SUy/geJ3dLwLC7x01cq2gFE6t X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85cbe285-0acc-4b5f-f94f-08dbbede50c2 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:17:05.2465 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 12/61] avcodec/svq1dec: Avoid superfluous VLC structures 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: C5yVNoN704Dv Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/svq1dec.c | 82 ++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 8563b29164..372420bffe 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -45,12 +45,12 @@ #include "svq1.h" #define SVQ1_BLOCK_TYPE_VLC_BITS 3 -static VLC svq1_block_type; -static VLC svq1_motion_component; -static VLC svq1_intra_multistage[6]; -static VLC svq1_inter_multistage[6]; -static VLC svq1_intra_mean; -static VLC svq1_inter_mean; +static VLCElem svq1_block_type[8]; +static VLCElem svq1_motion_component[176]; +static const VLCElem *svq1_intra_multistage[6]; +static const VLCElem *svq1_inter_multistage[6]; +static VLCElem svq1_intra_mean[632]; +static VLCElem svq1_inter_mean[1434]; /* motion vector (prediction) */ typedef struct svq1_pmv_s { @@ -190,7 +190,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, height = 1 << ((3 + level) / 2); /* get number of stages (-1 skips vector, 0 for mean only) */ - stages = get_vlc2(bitbuf, svq1_intra_multistage[level].table, 3, 3) - 1; + stages = get_vlc2(bitbuf, svq1_intra_multistage[level], 3, 3) - 1; if (stages == -1) { for (y = 0; y < height; y++) @@ -206,7 +206,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, } av_assert0(stages >= 0); - mean = get_vlc2(bitbuf, svq1_intra_mean.table, 8, 3); + mean = get_vlc2(bitbuf, svq1_intra_mean, 8, 3); if (stages == 0) { for (y = 0; y < height; y++) @@ -257,7 +257,7 @@ static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, height = 1 << ((3 + level) / 2); /* get number of stages (-1 skips vector, 0 for mean only) */ - stages = get_vlc2(bitbuf, svq1_inter_multistage[level].table, 3, 2) - 1; + stages = get_vlc2(bitbuf, svq1_inter_multistage[level], 3, 2) - 1; if (stages == -1) continue; /* skip vector */ @@ -270,7 +270,7 @@ static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, } av_assert0(stages >= 0); - mean = get_vlc2(bitbuf, svq1_inter_mean.table, 9, 3) - 256; + mean = get_vlc2(bitbuf, svq1_inter_mean, 9, 3) - 256; if (buggy) { if (mean == -128) @@ -307,7 +307,7 @@ static int svq1_decode_motion_vector(GetBitContext *bitbuf, svq1_pmv *mv, for (i = 0; i < 2; i++) { /* get motion code */ - diff = get_vlc2(bitbuf, svq1_motion_component.table, 7, 2); + diff = get_vlc2(bitbuf, svq1_motion_component, 7, 2); if (diff < 0) return AVERROR_INVALIDDATA; else if (diff) { @@ -472,7 +472,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, int result = 0; /* get block type */ - block_type = get_vlc2(bitbuf, svq1_block_type.table, + block_type = get_vlc2(bitbuf, svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 1); /* reset motion vectors */ @@ -779,41 +779,35 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, static av_cold void svq1_static_init(void) { - VLC_INIT_STATIC(&svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 4, - &ff_svq1_block_type_vlc[0][1], 2, 1, - &ff_svq1_block_type_vlc[0][0], 2, 1, 8); - - VLC_INIT_STATIC(&svq1_motion_component, 7, 33, - &ff_mvtab[0][1], 2, 1, - &ff_mvtab[0][0], 2, 1, 176); - - for (int i = 0, offset = 0; i < 6; i++) { - static const uint8_t sizes[2][6] = { { 14, 10, 14, 18, 16, 18 }, - { 10, 10, 14, 14, 14, 16 } }; - static VLCElem table[168]; - svq1_intra_multistage[i].table = &table[offset]; - svq1_intra_multistage[i].table_allocated = sizes[0][i]; - offset += sizes[0][i]; - vlc_init(&svq1_intra_multistage[i], 3, 8, - &ff_svq1_intra_multistage_vlc[i][0][1], 2, 1, - &ff_svq1_intra_multistage_vlc[i][0][0], 2, 1, - VLC_INIT_USE_STATIC); - svq1_inter_multistage[i].table = &table[offset]; - svq1_inter_multistage[i].table_allocated = sizes[1][i]; - offset += sizes[1][i]; - vlc_init(&svq1_inter_multistage[i], 3, 8, - &ff_svq1_inter_multistage_vlc[i][0][1], 2, 1, - &ff_svq1_inter_multistage_vlc[i][0][0], 2, 1, - VLC_INIT_USE_STATIC); + static VLCElem table[168]; + VLCInitState state = VLC_INIT_STATE(table); + + VLC_INIT_STATIC_TABLE(svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 4, + &ff_svq1_block_type_vlc[0][1], 2, 1, + &ff_svq1_block_type_vlc[0][0], 2, 1, 0); + + VLC_INIT_STATIC_TABLE(svq1_motion_component, 7, 33, + &ff_mvtab[0][1], 2, 1, + &ff_mvtab[0][0], 2, 1, 0); + + for (int i = 0; i < 6; i++) { + svq1_intra_multistage[i] = + ff_vlc_init_tables(&state, 3, 8, + &ff_svq1_intra_multistage_vlc[i][0][1], 2, 1, + &ff_svq1_intra_multistage_vlc[i][0][0], 2, 1, 0); + svq1_inter_multistage[i] = + ff_vlc_init_tables(&state, 3, 8, + &ff_svq1_inter_multistage_vlc[i][0][1], 2, 1, + &ff_svq1_inter_multistage_vlc[i][0][0], 2, 1, 0); } - VLC_INIT_STATIC(&svq1_intra_mean, 8, 256, - &ff_svq1_intra_mean_vlc[0][1], 4, 2, - &ff_svq1_intra_mean_vlc[0][0], 4, 2, 632); + VLC_INIT_STATIC_TABLE(svq1_intra_mean, 8, 256, + &ff_svq1_intra_mean_vlc[0][1], 4, 2, + &ff_svq1_intra_mean_vlc[0][0], 4, 2, 0); - VLC_INIT_STATIC(&svq1_inter_mean, 9, 512, - &ff_svq1_inter_mean_vlc[0][1], 4, 2, - &ff_svq1_inter_mean_vlc[0][0], 4, 2, 1434); + VLC_INIT_STATIC_TABLE(svq1_inter_mean, 9, 512, + &ff_svq1_inter_mean_vlc[0][1], 4, 2, + &ff_svq1_inter_mean_vlc[0][0], 4, 2, 0); } static av_cold int svq1_decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:16:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43930 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208723pzh; Tue, 26 Sep 2023 15:18:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHtcwLBrlgcoiw/VBzBhCc1eKTlid19k/N3qIFmMG6pIvgeBp6Xz3Gl4eCPSi2tfWhp1ZbO X-Received: by 2002:a05:6512:3b9d:b0:4fe:347d:7c4b with SMTP id g29-20020a0565123b9d00b004fe347d7c4bmr113952lfv.7.1695766692923; Tue, 26 Sep 2023 15:18:12 -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 q6-20020aa7d446000000b00533ec92878bsi6413866edr.665.2023.09.26.15.18.12; Tue, 26 Sep 2023 15:18:12 -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=R3hVHdG9; 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 75E4A68CAA9; Wed, 27 Sep 2023 01:17:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2053.outbound.protection.outlook.com [40.92.90.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C3B2168CA92 for ; Wed, 27 Sep 2023 01:17:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PElJ2hQuFQqreyKCDYbiDeqbQDmsC+ZoUTQmY/7gdH8O3++kz3KIr4bf2ZeLAUbsQl5Q+wTAUDHuVZpfD7LiZfVJXMNtt/uN1kxyHEdklUTSmsjN6Hnee9nhfN85X2wh5hs6ZxutLhIXXrzx7mJI6px3PJBL3ZsoQab6vQ7EiaWnzTJnSRHsTGjHNaGuP3sroKN1dKiZX3E3v5cyYk/d4R2tlNhd3iVC3MTEzcWOalTxW9oE2DfcQFeJ+fkmWyNtH/Xjkubr7tc5mIUbnS3Lw2jqBN2T0Ti10XFjAuA4ibj4VT8G6vxKjnj7fSpZCKk8Zq+7JxWb1QXezZ6iHrmoEg== 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=Y56CblhM6FcSBy2RPslu1Qt4Xo/UAbOSyCpW2Svg78o=; b=kuApm3qM73caJ9FBE3Rcl4z8MICu1sWOjgDuBkmdr2YU44obNcbY+OA7hz5aAUUMzm6ygk9VTiC6GdRpuM7By0wHaQuO71XdclKIIyYmPGVEM3h/i9e9wEt05DVaKzyoXBCAgZklB6eI4zxfliyWknxWz3aHJITFlFzLa2eDpuO+j0SbLog2ZofVhbq8Ueaf3ibvV+9sYUoxTsyeJReqzGW0Qb6ciiajMzGbb+Hcl49HroVSQcMovCYNx1IIRQblxnAn60fofKk8JCD6To5ghsB0Sk+JoLh0ppOhxPGSSUePN0Hq7xZbHlx6Fxr47R6TqyFxUuRQCX2P6ZzpkSq/GA== 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=Y56CblhM6FcSBy2RPslu1Qt4Xo/UAbOSyCpW2Svg78o=; b=R3hVHdG9r6kM2VGaX61M3E2fG9sLpH1yR9lbhO5qz4hww2605C/r4C9ADcM6xnFdJVsjEP7R6UUDYXRfXf+FZXbZFo9OfkKu6dZWGhr0CMW0Drh8q3GRYerwspJEdF62Vh5jGVUbzVRHO2Zs1RKNYF9qC0WsNQaA5yHYfb9RvKRtmb3VN5hOUOYZVVylKG5+XgXmvCtW9U3lRrmge53sb8gblJq+HYxeuPbxDlq4wck1yUPxaT4DNLyBRNmNASpotWDx2B+lzOOrYYPGreeGClfR1N9ipbLevJlgx7cIyadEos2zzprYfUHEW2c6cc5alsup63KdDKtgZK0hMJFbGQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:17:11 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:17:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:44 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [96CTgpOVgvxcMgEAQsuwKYQgywYHvxOr] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 4938c6b3-a871-4997-0d7c-08dbbede5441 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qkOhCUheLLmgGn4yAUizG0ee7D9f6CslRX+Njj7H96+753xtXwcecWkH1iL0nwt3aFLGSw4j0+qvdNdjg8+/AzVhK4jmx3wOTQQVJzjx2EHpO+Qvma3Pdp9V4G+puG6hBb4/xMAp2eFNC0uA+1XAzcA/61dAOFEq1d6ybfrgJyOgxvCDL+LOXOdBEq4AftXyHZYCM9ZoA+MAf1A7EEvpPCbqD4nDYwbuC6E3dGrrgBIQRJzuuSUNa3G7jmdTW3ds7urMglTVz3bchYTweLg//tlvUeNUg43Z9j/V05yLUb4r2XYF6OcDBAI+iZhnvfkm4cgnm8nZvvcVHX24zKBW95O4CeKr9d2XA1X1HAyhMy/f7aRIGpSRLuGjl3vbEeh1F1rpXMWaDxs6YRQVi6TC06ZmVl35trEZsK4pUXagNGZI3y7Bpt921lfbWSROWiTDoOLWntEXbUDyJCr2Bj3xECJn0Qi8dQrssOgHWBCbpgmrFdV7CYus31MPZtCWc9EJbXjRHaExNkeXEZHHczMZwEJGv0KyIFMSek/jINXKwqX+8GAp5yu/7dNvaZGWfyagS9E1uyEu9w9Q7Uj15zecVLO1T9cMIvuSIThWSqwhQrENutj2A7ssyuXSWeLYyOXv X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JdeAxReu+iE6sKdJ8KXm6EWvrVIE9QJEremIiAtLBAxIrKAhuL2yZWZgRqXawx+Y6QST7WDZsTs4wY1vEieIjYXEzpUgtopa4Q4+//g3FRrgK0D53XvqaqZ9BVJwlgiifne16GqkQ9jfsVf7xcac9aDQitpxbmKX6c+BBJwKEjWpvdz33D/EFutgkM5oOQpRO9+xcxHMrIIUaP4WgU5dTbfQIEKlxrM4/6LCE6XJWkeck8mMM3fJKdlI82/GsPc1598uWGvt0klk9VQT6ngJwFOyHhyNMiYijmbHV8pNjKUtA8kKK5L4A/PLtWDToYViXOgpmcG1z9skW2n3yQfhi2PyKlc4jbOSWZDguG6kMuANJDZu50yP8xQfmQ86FAKUJPIm4sPokIUpl2zsILUPsppEUYt/Djtzea97gn+/2kG4NY6cnRE3CW/BREO4+U1UCjcdVIVw61TH+Rs73AMhS9YVJkyjOSrKAZGzW3QLs2HQERed34720bPQsD36Y3b4XRJ6X6MwHoKY393M9jo3SoAVTkeXm+xR7hJXuMApE4yhIOVA7ziHrTL38EkM8ZxZ7tDq+Pyfn8CG3zLTcirHvIUEJ41hSgdHNnqc2gu/ILLvq5Za1zXNIwDFltWEa5PLX+ExeHvmJuTAMFCz3pJp4edZJamMWIEPqNSqjp68RKDxo4xcP+uYCBvUip/5xYYVlpX60nZs6heN3Xu2kYQG/+yh4oxX+NURpXaMBiTIo0lefjkFBaY5o/wXoM0OfhYnnZGOGvplEoHQClY2Z5+u8bDaNMGIiguF6pqH6/PLrMShxA9pTRaflTKTJmUccK2h+G5vrkarOZtyTwmRvXtvjWXid5IW9DKEVeKo7qHrlOzlOHWGHUDRvMOnNDObZLjamltcK/Si7gy1BGUxAp1XyGv9+x4eXyELZRtdwCf6jHM+D7st+dse+gssJ0ysi7O3+lZRf4WzTdPyZMHlLwh1dDDTNOKIJW8a71WNPK3+4m3dTOzAW3J3FURx+XRKg6tcq94qjRVrOVB/+shDKMPxuFh9uNA/LJlr7sTvjrwGdjrFqKbM3T/WdyppXBiy0YcUzK4j9rFf68Wg+wogxqh0g+HDv9w4pswtVZlISGS5o92/qPJVO+0lRowHB2dp65A3TM9g7JImmn/W07BoldPklrQBsTk2AoJwMKQGmjGG5ReqHzGqTPwOfoFrldSw6vGq8smGbv+cpBFTtbk7lZwWQP7fLQPAtF75YxQvFuOu7EYDF4/T3LVLgGb7HYSSY7TU X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4938c6b3-a871-4997-0d7c-08dbbede5441 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:17:11.1346 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 13/61] avcodec/svq1dec: Increase size of VLC 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: khQCxqhBzJjY It allows to reduce the number of maximum reloads by one. Signed-off-by: Andreas Rheinhardt --- libavcodec/svq1dec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 372420bffe..af02063a45 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -190,7 +190,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, height = 1 << ((3 + level) / 2); /* get number of stages (-1 skips vector, 0 for mean only) */ - stages = get_vlc2(bitbuf, svq1_intra_multistage[level], 3, 3) - 1; + stages = get_vlc2(bitbuf, svq1_intra_multistage[level], 4, 2) - 1; if (stages == -1) { for (y = 0; y < height; y++) @@ -779,7 +779,7 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, static av_cold void svq1_static_init(void) { - static VLCElem table[168]; + static VLCElem table[196]; VLCInitState state = VLC_INIT_STATE(table); VLC_INIT_STATIC_TABLE(svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 4, @@ -792,7 +792,7 @@ static av_cold void svq1_static_init(void) for (int i = 0; i < 6; i++) { svq1_intra_multistage[i] = - ff_vlc_init_tables(&state, 3, 8, + ff_vlc_init_tables(&state, 4, 8, &ff_svq1_intra_multistage_vlc[i][0][1], 2, 1, &ff_svq1_intra_multistage_vlc[i][0][0], 2, 1, 0); svq1_inter_multistage[i] = From patchwork Tue Sep 26 22:16:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43931 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208802pzh; Tue, 26 Sep 2023 15:18:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGANueYtn+9kZfJHwZYQez530xj3Ll0m49N7OHJUmDTHTvJ7eiFGyer8mg9Z9wbOTYEfkYO X-Received: by 2002:a17:907:d690:b0:9ae:3d17:d5d5 with SMTP id wf16-20020a170907d69000b009ae3d17d5d5mr38127ejc.70.1695766701815; Tue, 26 Sep 2023 15:18:21 -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 lw2-20020a170906bcc200b0099b59dc6ab8si10733788ejb.108.2023.09.26.15.18.21; Tue, 26 Sep 2023 15:18:21 -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=qQxtaDfL; 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 02F5468CA8B; Wed, 27 Sep 2023 01:17:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2088.outbound.protection.outlook.com [40.92.90.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B582C68CA92 for ; Wed, 27 Sep 2023 01:17:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OfInRlrjfq5MdnqSVcQr9RWhWQr4nDwlceY1CWjWMynIudV8ey7bFCTXcTHPvWGVfsjWL1nLbMX6oi3gB9E1qQD4EDLnoOykM6wUg3wEeks4e6Xa+NKyY+z19rqJ3h8PMHEqpmqDwiWWeSG6oUaeJgNZE2n8o8KjTUDpVqObk2wpYjjRpY5B5Hk2sTtYgh6RSfjm4tW9oGJIzncTUnPFDaXZwHozM1KjqFs9Wr9DTG4M2hJe1ueBXSMPjvvcAjRPbM6ydupMrkNTwk6sYo9wU7uJ53QhKhxocAB0cfZyvTp1Aoah0B4XxU/7SnHkPeq8H+h+93YzgrYphcUPSObnuQ== 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=mnpEC3ZjtazzWgeNJikdiTY/2P3x6LXcoQeD92DhjeA=; b=bPnen4BXshOiBxSU8gtq6Df89iz09+ifc1CS6rJhKWnpjytAmPg2x+D7FH87DW4Rpeqp2/xPJrUGbSZ9UtD+P+yC1OYYvKNRjy+DIeNP7Xqc1o1ZM9xDq0Jg/t1zNq00nLTMElKdR0MgKITQhl52Mqw7gJDGgq5W33eV2Lqt5Utj2ETvQuD5OYuMTMDOo76p1towY+4rhKRsxwh8eq4orOT9G7J/JpCI/LSO1Rp61NaKA5dfcmXwBEvV2EnOeQQHZwlVkjoSfL4rW7YldstAPWbTmMyzN+VmGsxQ1x9itY4/qJrgiJuBPMwPkaGTmFTl5mqlTdeYFqMhsxOeekIqJQ== 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=mnpEC3ZjtazzWgeNJikdiTY/2P3x6LXcoQeD92DhjeA=; b=qQxtaDfLgyV3c32AEYg1RuX3M26KwIitqQVqS4tqPM/Ystz0ZsnuNY0PMQl9cX1miUQ1yWPareurm8VQhw8KQhLbbp8tMQo3iFKWOk15kEVO4Lp+0wrR6RryctIFsluAYJ3g0yRP4wK9R8OJky1cnO6zZ5p5rJmO7gXlDziTRdtcWgkPEeLoDReddFjBEuGyED5XSkyI16RvaZwpsCY8q/tAZcbYcmZ3JQC+PYLs8/TLi2hRrL+C/ddMgluJEtgoEradPoHuINhHU0Ih++PHi55z9JpMIoIDgjNhFua5W/PccDFdV9uP4cOKwZ52FQt+2DY5dD9KxVu1oSwJNVS9eQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:17:14 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:17:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:45 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [7bL/h1IuiN+Mu5XyLxcH4nXh5k2QWiO8] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-13-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: c4191ce0-9a16-40ec-be16-08dbbede5616 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /iA1niFKt6jiK92YifO4Xpmg9DjA/JFtbjLZnSDRWMq1dyf6AsD7iGVZss0GbECjwm8yPLm5kWxCDUOlFx8Y61ehj2+jAG2jQl7/zwxNXsj3YsOADoiiDmlChT7Sl999JVX16oJFgaBJYKLrOibzqDmsGWKnE/ZBFRI3vO8ZNfpEy6SvyKXCn3Gv8h0Dsnh/S7CygjMoH/TEYTFE+zDzMqQpEhWG3I2pGB8F/zp+XLU8d8CR3aXxom9dejVnYavTE/3+FHcZah5FRqy/m5dD0hPOakrxaG93VFymlRc8oghJHH642T9PzKlyHonL0WKOz6yLk8roO0ZTS0tKM3SB7YgVGCQaecFk4beNwXFP16k9WSwenT+nJLvj663PQRxWWr2yAHPzUVZgDTK3MJYn8wFlWdPlURKvVyFiFZQ68edmmFdn86WFiPvihtT1kwzPoyI6J06G1ejQm5unzN+fUIAR8KzWWvKWZLBjdpNTf00YbC50aCEk2afYs5TFKZb0VOYxGyb6DOA+NFgPeqpFYc3V9qzDFQ2X4bHjfGrTWNY5PXdkyoDbbnV8EjnRU+uTsa8hKiBX1QNik9zMzCUxfNQ2bCXvT+sKDjHS1mIvKFsnmaObhA4ac47+7+MaYjhL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 48HcLFDCDa4GFrW+hbFISSaM0Dw+tyaiiGuklfqEr8NN9Tgo8CYtp1aDkI4KZB7BYehGktfJ13eVdUYxdv1TO6pyaTafClUA5k+/h7uBzBTYiv5QXHK9CCwcVQFnvAiDpOGebQhBua4v1ZmZjKIqnIneLkGHijeDQdPtxailnlpX6hRgF6N0nRwIo7KhvNw6nLv96vK58zpVpe7ryiB50Yclz1yM8DkThU0XFOo4Axomo2Mdis+5nATImOZzEwsNh7S0GCvch1b5DQF4NBNkGoRRICUjsuPo1uXGFuT0i+P/XlY9mh/iT1eJK+uAplKCck2mSgQ2BQfjGzObDoH+4DXaXpn6Qlz2UX31zXvimVYo/xBKjxE0u2oUeb8JwJUTm5dxsR0Iw5TDOIX1Yz592ORPIaVvS/XcMdCaaR3+b4k81Td+/aBRpSlnRwcJsblx83H8GS+RcYSm15s5wA8ZQYSBsO6Ugxy4KHr0H9zwa6Tf1585ptdq97aUqDK4Pq37Yo88e3sH2YlMqZgCKgz0naEqOpQcPdnEx3irRPoSupL/6yHKqF9JaKmEBWHNgIrsSi3S8mN5frxJlMs+XxDQ6Zu3c1b3u1zUmHrxDu3p+NfDB94w8IJPkfBO/Sr3UxVsCDuH62TS+phlesdGmuHC3DTOAQbcaGB57bWQ4yn9acmZadFguqJzwC5IxYmhbUOvtWuLltR/aAXRTPKPELDY8sN1/LAxZQV6eW+wSbwNYm2g7WLO88aL0M+nI0cz7ZbmKKwQFlcgfzUrhVCYQrpk0o4kezQw84LvXd5zc3uMQMbofOY9gtUNXn4bL8CIGT0gqrMTLvdEPOYtEwXuB9UYCBKayfZzeVo9FxfZbDx/rLrx1Ua19JVqdP+J7Qu/mHTEd9Z4X0YSXmUWuh5RH50SPNXsr8MwJyRhtngO3Y0Ac2KDDfOxqogo2rkJyUC0TIFfASZfkOuJ3PFAeqYsJdj7MKEG7IxBQrK2GJPN11/EbipNHZa+WwFj2R83eGqjItinbrglLzZSUdKBaMkq8vfJVfh7T2RDRDu3h7R+FQpyJ6XjdR4s501CZ7KLS8BBh+wAdUFB8B4GIk6z5m+waluiEbkM0DDYXZ0Qu4P/vPUqzfOBNlG3I3dHkPZdZCjHtvU4ka8A2QHPvwVICx+6HLuiaP9UtFahKs9QudyUm2g/MJ5wFVtA9hMspbdl21qbBsJ8CU2xnoB9xrZAuYbCyns0/nKWs5kLIhUywplqD3fCdBMqy4cm0Cf98y/xp0yNQtg2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4191ce0-9a16-40ec-be16-08dbbede5616 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:17:14.1608 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 14/61] avcodec/rv40: Avoid superfluous VLC structures 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: GJcIAfiGwVpj Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/rv40.c | 69 ++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/libavcodec/rv40.c b/libavcodec/rv40.c index d2f8ef9f5a..3ee405f33c 100644 --- a/libavcodec/rv40.c +++ b/libavcodec/rv40.c @@ -40,22 +40,16 @@ #include "rv40vlc2.h" #include "rv40data.h" -static VLC aic_top_vlc; -static VLC aic_mode1_vlc[AIC_MODE1_NUM], aic_mode2_vlc[AIC_MODE2_NUM]; -static VLC ptype_vlc[NUM_PTYPE_VLCS], btype_vlc[NUM_BTYPE_VLCS]; +static VLCElem aic_top_vlc[23590]; +static const VLCElem *aic_mode1_vlc[AIC_MODE1_NUM], *aic_mode2_vlc[AIC_MODE2_NUM]; +static const VLCElem *ptype_vlc[NUM_PTYPE_VLCS], *btype_vlc[NUM_BTYPE_VLCS]; -static av_cold void rv40_init_table(VLC *vlc, unsigned *offset, int nb_bits, - int nb_codes, const uint8_t (*tab)[2]) +static av_cold const VLCElem *rv40_init_table(VLCInitState *state, int nb_bits, + int nb_codes, const uint8_t (*tab)[2]) { - static VLCElem vlc_buf[11776]; - - vlc->table = &vlc_buf[*offset]; - vlc->table_allocated = 1 << nb_bits; - *offset += 1 << nb_bits; - - ff_vlc_init_from_lengths(vlc, nb_bits, nb_codes, - &tab[0][1], 2, &tab[0][0], 2, 1, - 0, VLC_INIT_USE_STATIC, NULL); + return ff_vlc_init_tables_from_lengths(state, nb_bits, nb_codes, + &tab[0][1], 2, &tab[0][0], 2, 1, + 0, 0); } /** @@ -63,18 +57,19 @@ static av_cold void rv40_init_table(VLC *vlc, unsigned *offset, int nb_bits, */ static av_cold void rv40_init_tables(void) { - int i, offset = 0; - static VLCElem aic_mode2_table[11814]; + VLCInitState state = VLC_INIT_STATE(aic_top_vlc); + int i; - rv40_init_table(&aic_top_vlc, &offset, AIC_TOP_BITS, AIC_TOP_SIZE, + rv40_init_table(&state, AIC_TOP_BITS, AIC_TOP_SIZE, rv40_aic_top_vlc_tab); for(i = 0; i < AIC_MODE1_NUM; i++){ // Every tenth VLC table is empty if((i % 10) == 9) continue; - rv40_init_table(&aic_mode1_vlc[i], &offset, AIC_MODE1_BITS, - AIC_MODE1_SIZE, aic_mode1_vlc_tabs[i]); + aic_mode1_vlc[i] = + rv40_init_table(&state, AIC_MODE1_BITS, + AIC_MODE1_SIZE, aic_mode1_vlc_tabs[i]); } - for (unsigned i = 0, offset = 0; i < AIC_MODE2_NUM; i++){ + for (unsigned i = 0; i < AIC_MODE2_NUM; i++){ uint16_t syms[AIC_MODE2_SIZE]; for (int j = 0; j < AIC_MODE2_SIZE; j++) { @@ -85,20 +80,20 @@ static av_cold void rv40_init_tables(void) else syms[j] = first | (second << 8); } - aic_mode2_vlc[i].table = &aic_mode2_table[offset]; - aic_mode2_vlc[i].table_allocated = FF_ARRAY_ELEMS(aic_mode2_table) - offset; - ff_vlc_init_from_lengths(&aic_mode2_vlc[i], AIC_MODE2_BITS, AIC_MODE2_SIZE, - aic_mode2_vlc_bits[i], 1, - syms, 2, 2, 0, VLC_INIT_STATIC_OVERLONG, NULL); - offset += aic_mode2_vlc[i].table_size; + aic_mode2_vlc[i] = + ff_vlc_init_tables_from_lengths(&state, AIC_MODE2_BITS, AIC_MODE2_SIZE, + aic_mode2_vlc_bits[i], 1, + syms, 2, 2, 0, 0); } for(i = 0; i < NUM_PTYPE_VLCS; i++){ - rv40_init_table(&ptype_vlc[i], &offset, PTYPE_VLC_BITS, PTYPE_VLC_SIZE, - ptype_vlc_tabs[i]); + ptype_vlc[i] = + rv40_init_table(&state, PTYPE_VLC_BITS, PTYPE_VLC_SIZE, + ptype_vlc_tabs[i]); } for(i = 0; i < NUM_BTYPE_VLCS; i++){ - rv40_init_table(&btype_vlc[i], &offset, BTYPE_VLC_BITS, BTYPE_VLC_SIZE, - btype_vlc_tabs[i]); + btype_vlc[i] = + rv40_init_table(&state, BTYPE_VLC_BITS, BTYPE_VLC_SIZE, + btype_vlc_tabs[i]); } } @@ -178,7 +173,7 @@ static int rv40_decode_intra_types(RV34DecContext *r, GetBitContext *gb, int8_t for(i = 0; i < 4; i++, dst += r->intra_types_stride){ if(!i && s->first_slice_line){ - pattern = get_vlc2(gb, aic_top_vlc.table, AIC_TOP_BITS, 1); + pattern = get_vlc2(gb, aic_top_vlc, AIC_TOP_BITS, 1); dst[0] = (pattern >> 2) & 2; dst[1] = (pattern >> 1) & 2; dst[2] = pattern & 2; @@ -201,12 +196,12 @@ static int rv40_decode_intra_types(RV34DecContext *r, GetBitContext *gb, int8_t if(pattern == rv40_aic_table_index[k]) break; if(j < 3 && k < MODE2_PATTERNS_NUM){ //pattern is found, decoding 2 coefficients - AV_WN16(ptr, get_vlc2(gb, aic_mode2_vlc[k].table, AIC_MODE2_BITS, 2)); + AV_WN16(ptr, get_vlc2(gb, aic_mode2_vlc[k], AIC_MODE2_BITS, 2)); ptr += 2; j++; }else{ if(B != -1 && C != -1) - v = get_vlc2(gb, aic_mode1_vlc[B + C*10].table, AIC_MODE1_BITS, 1); + v = get_vlc2(gb, aic_mode1_vlc[B + C*10], AIC_MODE1_BITS, 1); else{ // tricky decoding v = 0; switch(C){ @@ -270,17 +265,17 @@ static int rv40_decode_mb_info(RV34DecContext *r) if(s->pict_type == AV_PICTURE_TYPE_P){ prev_type = block_num_to_ptype_vlc_num[prev_type]; - q = get_vlc2(gb, ptype_vlc[prev_type].table, PTYPE_VLC_BITS, 1); + q = get_vlc2(gb, ptype_vlc[prev_type], PTYPE_VLC_BITS, 1); if(q < PBTYPE_ESCAPE) return q; - q = get_vlc2(gb, ptype_vlc[prev_type].table, PTYPE_VLC_BITS, 1); + q = get_vlc2(gb, ptype_vlc[prev_type], PTYPE_VLC_BITS, 1); av_log(s->avctx, AV_LOG_ERROR, "Dquant for P-frame\n"); }else{ prev_type = block_num_to_btype_vlc_num[prev_type]; - q = get_vlc2(gb, btype_vlc[prev_type].table, BTYPE_VLC_BITS, 1); + q = get_vlc2(gb, btype_vlc[prev_type], BTYPE_VLC_BITS, 1); if(q < PBTYPE_ESCAPE) return q; - q = get_vlc2(gb, btype_vlc[prev_type].table, BTYPE_VLC_BITS, 1); + q = get_vlc2(gb, btype_vlc[prev_type], BTYPE_VLC_BITS, 1); av_log(s->avctx, AV_LOG_ERROR, "Dquant for B-frame\n"); } return 0; From patchwork Tue Sep 26 22:16:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43932 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208881pzh; Tue, 26 Sep 2023 15:18:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFtjV/FTBtiTHskRYtznQ62VrHTkjR41HJzvkPJ3AFFcvTBJJgBuSzu0hU7Mn8aBjq2+ZG9 X-Received: by 2002:a5d:414d:0:b0:323:2d06:9dbb with SMTP id c13-20020a5d414d000000b003232d069dbbmr37843wrq.12.1695766711050; Tue, 26 Sep 2023 15:18:31 -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 k7-20020a1709063fc700b0099bcd1fa5acsi11470029ejj.359.2023.09.26.15.18.30; Tue, 26 Sep 2023 15:18:31 -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=qcTGIvC3; 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 0544F68CAAC; Wed, 27 Sep 2023 01:17:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2057.outbound.protection.outlook.com [40.92.90.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E239768CA65 for ; Wed, 27 Sep 2023 01:17:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BzMGHTmXt86iOHBRah9rIDxwjTSolATn/ELuPswSTV3OcEHjn70BFDf6qnyDtv6YDxSenSYZ1dX5mKVjyyMcRZxHiPZCKVHWnEn0rsMh4tyEy/N/EnloNShCtFn4POaNv8IvXGFODN/3Tv0ZCIcae8MCNOv34KH4Ahs5uPvNLoiNO71Uj1PDwGvxlXFJBxZIKUeJ68oCRKfsoWf7+I0PLtazH0yaIydrQcTYKSgVqLYlcQ5ZceL6utMgC3OX8cYEZ4XZSr4jsrgIQnrQeM4xIAJ4Fbo7NvUwTn12htfLC39OnldvPFRDIsfHogtTRCrwotO8RDIKgIbfDr03KpczVw== 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=TIrEcQAqGeJFecePDCmohOxQ8ag5XUIJBK9Rkf3XHMg=; b=aHxB3SrYH/x/PvZMh87QYfgtE4NSnis+A9WfNr1dCoAp2LCrMHT8TRXuhcAWoSVjdJPLNgE27d4bLfOsW3h8cWhm+oF4tceOMtjtQmZybJ4AbIUj7nrOGMZLMKwYvWMI1o+QXodHgqj42zkpUhY45ftEiTS6W5bAZEu1iPrEyXEeK9UVs08mqwJF7vPBe090cp4vnGjM4nALstAJE4YTuJw5Q5Je9MLsR1hfykGhwmVX217OkPLK1ayFRR7v7L+ue5lK6ZqqPxkN9KrNMyFYnCddvlbWQ/P+FHqMUGPBRZ8ahaQPUv1hKVM0Ki4uEV9tuzNB9RedTNDCTOFaF/i6Qw== 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=TIrEcQAqGeJFecePDCmohOxQ8ag5XUIJBK9Rkf3XHMg=; b=qcTGIvC3E46nd62EGc+6GdMn3spzruF9OP4FIBKkgLI38hByJ2FQixlc98TC2VtF0rijAee0yGcNpZosx42tpoySAAaQnk5m1YUvwTOGiGg2Z5Qow00vIvrSiAVHL7+g9KrrBCk4blSrDVM3TNN0/pQa6U9UDmZYKrPnZcVYFAQLIBmmaje0weu+EasWs+EcNkd6d5HmJG2MTccgMVNG5yFG6jZL9IP5trLU0RYmnq4RX1bcOmYz/mIBHX0qukBf0x+TBn9DgViYikIiaunkrgeu0UClq7vAK83l5cc+dayh0Ko+9m3Fausudkg7JhfThy6jVgAMNgeIvHQKjOtuxg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:17:20 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:17:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:46 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [7X+aqsXrGEVcxPRFdpkC/aXg/dIMvT9R] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 15d3cef3-bf62-4bb7-321f-08dbbede59d5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 03ESnGBSswSkeD3PCvfmim9rUkTzhwNWzrYDbeWtUs0zp8lhqHHesZw1KVf21bUlZiDZ9SoVzwSobeorolf2Dw3Fhts9mNw2MOm7PwhrboeBYvGuhLP8YsQD9GMeVcsEpX1UTWzUQC7q6CPVtc7ACA02jUPsgPHNJd5x5SCtxef7kMiB86r2NQJLR4rIQj9OV6Of6BrhVV579xWDls7szndOguN61/yXd2UsEAcw17ZJzkUlzCsORfkm15pQ9xeJLGwfocoDzRo6rw4TMcn4g82RMg9DEjWypyC43il4ML04OTRXVrjIUaGO9BV2IGpi4RLOJFEFbegTRE8b3sPuNVP+p+K+5WsYHHZ974baGCAtkhCyQzwDwnn3MrMNVCRTo5iTwnmrne3LNMwcNOl5mwj9y2puS4+KNtE1FA1e5gEQYSevLbC40ED+zKze0mDUSwPtmq/zeX6hXUALQ5L671gonWGqdRNeYTOGJydNjkA6YlHqWKQO7DL/admPk+haZEc2NogfIl9AxIkrxCqXl97O/N8F+G/sOeX+HE9ujHl9d6Nhk7EyLqrCzyHzYg7/xzBvWrN8CLsujK90ghsNMnWNzBkN0htjY7acklnNR9ClwfMtXwU5u4LfZvyCbn+1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WX+vzrNAdgTb1oOSwgVYfZ6dLeL0BdcG04vCuJxnJg9GtuDlsl5nezCg8O5+oDxe+WG6u3d6Me3vthVdhw/k605JSaQwV7n0WvFz+Ge1tIiuQfrOxYAlMc8iwdD7fL7ddo/Pb40jnFjycRq+Z5Z+bPhVlXlWtDDNs2aaU9Vx0MpWw1usQLhZKWSjXi2bszu+ZAKOuhG/5+jhXNY8uQaKP7GBSsHvEhQ7RrfeDi5bhPDvND/Uy4HD+jUc69q8LNuUaSmE+/zMt2/1CjI8AsBHXKAmEAbfBqr+H/9AGXpC36OjLyxwztk984v1fK077zzmGp+XW/s7T2iUEuD0TXkq5atUwBhSoj6oFnlIAtFGE1QshEuKvGRK85jKVWhkeyP2PkTtNm541QxxwufchqVHbShTGKEXVO5UmBc4LRfXDOVURuCpr1sBf+3ZAMGRywlydXN808VhR/NAswk9kWDgezRCDlKR+6MtqRxwa//fbDJ4HhoXqhaca82EYRGLptyV7hi8mx2QNx03rzrPigifDHTwN+9HAaixtMS+w8KLtpi6HgSXqafVg3Wp5LPC41lZIady424hQ35I+/BefnCgrGc4u9CITPN5EgLP0KJRewWRWCbN0SEjdQTjA9b91FEjQqsTWjxWwuuDEAGtFLwisqqrXZgtCryapXuMiTRqNwceB4nsuc6OamcyWOeIZ7i9WXh84ehvOUVE+rDf85IP3E5VR12DmyQHTlOcHgqEnz0YApq6jIBcVyakbicbvotqqYdMmTkj9b0gRzaWMskSlYKlCDVc2V18qN7h+tT55jBfijPCtqF47jxMB47Bv2oD79PdwyedzuaMnT6ZcI6A7qkvtWMkq7z3A/NHfqTgig5Q4MixYGLQGzys58ChYyV4u3W3/OQ/wZ+wUHRsZqt/nFa093oDL+LSgcaQvfBQMtan10MDW7ZDCArgzzr0vO0K7JwJRmFijcEpEu+bkvUZfrtApbdFSBLGZxJuKVe/TEYP6Bbz1WKZ5ixFfLjUK8RUIcocMsOXrhlW4Hom2NwGGjzHi8FiXSvTdmVzvHsCZCfer4KG74/dWvoJiIc8dKsQxlddrT5OqpAm7IgaCgIIGTF7SlP2Gjk5pVeX6dFF6YxMRfToqmm93FqurIpVI5ifqNhzEQukSEkUUGUD5lGDi+gKX6mWa6yFWGg+r6E/BNm2Q5NoCzd0yzmUz09EOxC6yCZk8yMvXWmxWR5Lomfm/nwJXokDlUQVBpdLwz0eSGdsui1jszwUuqoiJ2MdINp9 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15d3cef3-bf62-4bb7-321f-08dbbede59d5 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:17:20.5056 (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: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 15/61] avcodec/mpc7: Avoid superfluous VLC structures 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: HzlW6liN5Vzy Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpc7.c | 52 ++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c index 59782c6727..b23b4094db 100644 --- a/libavcodec/mpc7.c +++ b/libavcodec/mpc7.c @@ -40,33 +40,34 @@ #include "mpc.h" #include "mpc7data.h" -static VLC scfi_vlc, dscf_vlc, hdr_vlc, quant_vlc[MPC7_QUANT_VLC_TABLES][2]; +static VLCElem scfi_vlc[1 << MPC7_SCFI_BITS]; +static VLCElem dscf_vlc[1 << MPC7_DSCF_BITS]; +static VLCElem hdr_vlc [1 << MPC7_HDR_BITS]; +static const VLCElem *quant_vlc[MPC7_QUANT_VLC_TABLES][2]; static av_cold void mpc7_init_static(void) { static VLCElem quant_tables[7224]; + VLCInitState state = VLC_INIT_STATE(quant_tables); const uint8_t *raw_quant_table = mpc7_quant_vlcs; - VLC_INIT_STATIC_FROM_LENGTHS(&scfi_vlc, MPC7_SCFI_BITS, MPC7_SCFI_SIZE, - &mpc7_scfi[1], 2, - &mpc7_scfi[0], 2, 1, 0, 0, 1 << MPC7_SCFI_BITS); - VLC_INIT_STATIC_FROM_LENGTHS(&dscf_vlc, MPC7_DSCF_BITS, MPC7_DSCF_SIZE, - &mpc7_dscf[1], 2, - &mpc7_dscf[0], 2, 1, -7, 0, 1 << MPC7_DSCF_BITS); - VLC_INIT_STATIC_FROM_LENGTHS(&hdr_vlc, MPC7_HDR_BITS, MPC7_HDR_SIZE, - &mpc7_hdr[1], 2, - &mpc7_hdr[0], 2, 1, -5, 0, 1 << MPC7_HDR_BITS); - for (unsigned i = 0, offset = 0; i < MPC7_QUANT_VLC_TABLES; i++){ + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(scfi_vlc, MPC7_SCFI_BITS, MPC7_SCFI_SIZE, + &mpc7_scfi[1], 2, + &mpc7_scfi[0], 2, 1, 0, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(dscf_vlc, MPC7_DSCF_BITS, MPC7_DSCF_SIZE, + &mpc7_dscf[1], 2, + &mpc7_dscf[0], 2, 1, -7, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(hdr_vlc, MPC7_HDR_BITS, MPC7_HDR_SIZE, + &mpc7_hdr[1], 2, + &mpc7_hdr[0], 2, 1, -5, 0); + for (int i = 0; i < MPC7_QUANT_VLC_TABLES; i++) { for (int j = 0; j < 2; j++) { - quant_vlc[i][j].table = &quant_tables[offset]; - quant_vlc[i][j].table_allocated = FF_ARRAY_ELEMS(quant_tables) - offset; - ff_vlc_init_from_lengths(&quant_vlc[i][j], 9, mpc7_quant_vlc_sizes[i], - &raw_quant_table[1], 2, - &raw_quant_table[0], 2, 1, - mpc7_quant_vlc_off[i], - VLC_INIT_STATIC_OVERLONG, NULL); + quant_vlc[i][j] = + ff_vlc_init_tables_from_lengths(&state, 9, mpc7_quant_vlc_sizes[i], + &raw_quant_table[1], 2, + &raw_quant_table[0], 2, 1, + mpc7_quant_vlc_off[i], 0); raw_quant_table += 2 * mpc7_quant_vlc_sizes[i]; - offset += quant_vlc[i][j].table_size; } } ff_mpa_synth_init_fixed(); @@ -134,7 +135,7 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int * case 1: i1 = get_bits1(gb); for(i = 0; i < SAMPLES_PER_BAND/3; i++){ - t = get_vlc2(gb, quant_vlc[0][i1].table, 9, 2); + t = get_vlc2(gb, quant_vlc[0][i1], 9, 2); *dst++ = mpc7_idx30[t]; *dst++ = mpc7_idx31[t]; *dst++ = mpc7_idx32[t]; @@ -143,7 +144,7 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int * case 2: i1 = get_bits1(gb); for(i = 0; i < SAMPLES_PER_BAND/2; i++){ - t = get_vlc2(gb, quant_vlc[1][i1].table, 9, 2); + t = get_vlc2(gb, quant_vlc[1][i1], 9, 2); *dst++ = mpc7_idx50[t]; *dst++ = mpc7_idx51[t]; } @@ -151,7 +152,7 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int * case 3: case 4: case 5: case 6: case 7: i1 = get_bits1(gb); for(i = 0; i < SAMPLES_PER_BAND; i++) - *dst++ = get_vlc2(gb, quant_vlc[idx-1][i1].table, 9, 2); + *dst++ = get_vlc2(gb, quant_vlc[idx-1][i1], 9, 2); break; case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: @@ -166,7 +167,7 @@ static inline void idx_to_quant(MPCContext *c, GetBitContext *gb, int idx, int * static int get_scale_idx(GetBitContext *gb, int ref) { - int t = get_vlc2(gb, dscf_vlc.table, MPC7_DSCF_BITS, 1); + int t = get_vlc2(gb, dscf_vlc, MPC7_DSCF_BITS, 1); if (t == 8) return get_bits(gb, 6); return ref + t; @@ -220,7 +221,7 @@ static int mpc7_decode_frame(AVCodecContext *avctx, AVFrame *frame, /* read subband indexes */ for(i = 0; i <= c->maxbands; i++){ for(ch = 0; ch < 2; ch++){ - int t = i ? get_vlc2(&gb, hdr_vlc.table, MPC7_HDR_BITS, 1) : 4; + int t = i ? get_vlc2(&gb, hdr_vlc, MPC7_HDR_BITS, 1) : 4; if(t == 4) bands[i].res[ch] = get_bits(&gb, 4); else bands[i].res[ch] = bands[i-1].res[ch] + t; if (bands[i].res[ch] < -1 || bands[i].res[ch] > 17) { @@ -237,7 +238,8 @@ static int mpc7_decode_frame(AVCodecContext *avctx, AVFrame *frame, /* get scale indexes coding method */ for(i = 0; i <= mb; i++) for(ch = 0; ch < 2; ch++) - if(bands[i].res[ch]) bands[i].scfi[ch] = get_vlc2(&gb, scfi_vlc.table, MPC7_SCFI_BITS, 1); + if (bands[i].res[ch]) + bands[i].scfi[ch] = get_vlc2(&gb, scfi_vlc, MPC7_SCFI_BITS, 1); /* get scale indexes */ for(i = 0; i <= mb; i++){ for(ch = 0; ch < 2; ch++){ From patchwork Tue Sep 26 22:16:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43936 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209525pzh; Tue, 26 Sep 2023 15:19:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF8YDTdPRzRVnhS1XEiwyir5K7SlBrazDcJUtWRIjkkakRL/29mOzN8VLidSus/xoHmDuQM X-Received: by 2002:a2e:301a:0:b0:2c0:302d:f995 with SMTP id w26-20020a2e301a000000b002c0302df995mr278782ljw.1.1695766784233; Tue, 26 Sep 2023 15:19:44 -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 t8-20020a170906948800b0099bd23e8361si12615854ejx.862.2023.09.26.15.19.43; Tue, 26 Sep 2023 15:19:44 -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=tSIl4Ffw; 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 2EF2568CAE5; Wed, 27 Sep 2023 01:18:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2083.outbound.protection.outlook.com [40.92.90.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6B47868CA6E for ; Wed, 27 Sep 2023 01:18:09 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nc1LzNgdR7o5izWfODDmAR7r+2N8HGi7tg0yeYwPA40Vaw5PXKlXFhhSjfhQucGifiI7bcMDcnvVardXAZg92EGBbGDP8kWidNYuzp6Clq2rB1s1vS+PQckmCREREwGtPQO3z7OggcQPRW1+PXA80z92aV+IPLCZqLeZsLwLGuVczv3NOEEO+cVra9HGDhHYc0+oWcZJfWS+a1zthb5ocwCOE5AS9BB5RBo294fA8bjQ+iZ7ACF4A7ZM4JfT9oq+30rIW6vYHuYamnKg9mD5Pity3ACraEmSKIWCIOGeqmE3sfQN9I7B8TRhV3+MHJhNKZDycGxqobqaFeywUfYHjw== 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=8hkN1pxQUmDs5Jqb9XiMycR9hUt9wuaF0xG1d11bHj4=; b=RbNlCSIN493wbzcVbDWIL9+rkphM6vn2LCZQryp0W1ePqk3RWe3AEQepZDQIR7/RA3oyx11oiI9WG1+TSrFXbuN09Hr8UmGSQu7vxdPAIKmWZ7rOg+K4tS22id8z+vvsF+UOkAacYSb9gRjeTFsmBatmh8Ux8D2jIFMkNi4q84rgA3ZAXzWJOZuVsbrVjPPJi1IO5Mjk6F3WoFjFtnZZmYTFpB5g/IyeZKq8UXIibf2AuGqoXVuDLy/llZzok5Onp3et0VYv70hL2vB+ftQCQIt7KCDLqofQ1VmRXvzotJLifHVdOsj4stf/Z5fj8ZLTAuySq99OvchfkZ3a0poQgw== 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=8hkN1pxQUmDs5Jqb9XiMycR9hUt9wuaF0xG1d11bHj4=; b=tSIl4FfwExohDpLrRwXXms/WASocIrwGRGrrKKRz+iB1QtOZpvIpLFo/UIVU+CCGU5PZ7pgd/rJOURteR/TL5ks6r0bq0TguJubqCdfWpogcutzkw8VPcgCvRRyN9PVAPGfCxU31ldygC4WeKriRL4JZvaoRE1uDm0hpp+vaZdAaOhAtult+hCLUbnnHSDRcV0gWJv2D1o1otxkMoAWTMEW94hJ/pQiFfY0V5YY6wKy/uzDz+Wje6R4r7f43WcDMjuyl7RIQGkweH7J89Cd4ZeVjCELLtbownWR0DmT03fsdjwNC/Ep+det7veVf1KBYahUlp82NMBlNkgy4Tu0YqQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:08 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:08 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:54 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Nm2/edThen/FTv6Qz8uZyzdgQJCFaD3z] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-22-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 15531b35-e071-4c93-f76e-08dbbede7648 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: unbV+PdPG23gWuLRUwsV/5Ds5n4yqqsfFttBmAumoH/YeDs1ihinbYjwQNa89Zyr1ozIE7Cz+CdCKcv/v1UEOOSEFfT4GSOe2XtlCfhkmNP4G8Rz2ylqLgZBNkJGL6AAmJ+oC5Hs35h35Y6nSAymLTIlJjC927oy1npBImuD/D+Ke6mwk3/mX0CmT5tWRtXyUDf11MSO8yTNcV+OUtuLNQ7mPfkGrL1Al2EL0IuTGpLSTltl75eqxtHl6C6WtDAmqGbOSnqASP64d2BFpFIVr3EMv1AdE9IUduh2i3nMHZFd0XQz+8lkHGVRuUdKcKYwfUcxyA/LUGikLa6YQNOl06lX/4QCma2PuYq7JWIHO5Yc8WQqTNxP5jF3JutA6tXnng8EVfmCG+JUdKrJLPsxIuLoFUa0UdnESjRO5Lv1pudaPj1EyoWAsmiU+VfYEGz4PvtDXEToWHpzsecKmpjMfw+hKq20izaZP3zt7nzzzvPDvM+pzwD7LCcXms4dlCCRx0/tRqnOT5s7wSnLqrnC63nBmKqG/nxNZmD8HSJApvgKvclNgPdWO+vh3q9bRnDXgps7omlu65JD7ApbOUYrg7gZpaA7WLj1CL87wHaO3qGWHChc2Uz4CGYUSHiwP9h2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S9XOocR0CzXgx/kP2moFsKpQ2LFv8KLt6QYrVjkr5brvnLXElNwIdmaPcLScuWxLhpKnFeen7UqINHk7rcB7mbnlk0bXZGdsYi8oxWF7vfCWwB4wfOG9HQs/uitkKDsHe2rNQNVFUO1DpjjZWu/yIK5qYsf0dpw1slvDSzjQ0Zt8sbiQuw4euF4Lq6lXMPR171zp9FJjt6QTq1BoUblHTC/hf+r2Iyruy32yJqzrKTxQE/FJOSiDmit1BsnCfXVMD03bCPDh8z8CSZsWGz+5Ownv6XQmL/1lNTrriNuISCTrMEEwqovigYNjz/IlrntHTMpB2+E9NIiI2Z53V5a+nV+vwR4jwRXAsyFfW3KnOfW7ekVwZH9akWxwgIJ6KPC3TblJIHDPRrcezvz3fVIbrzZ1lVMVfxmosOHHateTttKh9w2mMPMvCi7f469Fd/dPJd/afS/NxjSCjRZu3wViWc8aCcCopGkOB3TUAMSuSQiPUPROr85BqDv6TzZ1KS0IcurKPLpngUijMtnZHK4XdsfFF6bVlpaROVJlhAkiJLV7OrTm8SPGLknxCni4H/NgLjoCHzbvXjBHiME8yVECPD6OP//r+G9GfPYTE0C3CRlmjQhHc7x+XCvAmJ+x/7JvUICGxgSnGs4RqkTX4GGCMOmV2N+3dxpSrfytKl6v5f+NmttRMVgYd0q/2Q4yXiJ4l/1yTc9sGNa/XiexeJG9f4LnyNAX4x4rYrBTJxRejwpgsJueq1u2HU0rmDPAlCGiNbb2lh+WvQGyJpNi/Uru5B4yHjIV/TW/qa57XPhYhRa9nxSkUv0TW1GYMSLiGWc4vsrBdBrGZL1Gq8mqPWimch4hh3g+7ro3sn/3pAC7DpCozb13uSjjm1PG0bt/uepIoMXhULtrntSFZ/70vmYHpg/YT+wB09LuQzY9FlLAlcfe9OXzlaIL93BcLUcCbWJWYMNCJO882WmpQ5AeF73wxdHR0AYRnNj5T97nQ5Lo/MWo3WKJVbXN1+V7rjrCHy6dUcCsCJ5ATu7KOkU6a0nKxV3gWD6RyevNwbWnKY+EYPj0kcStFGyI3HB87aoxJzudz/0HbYhn3hQrekrnGADRhcc47rRTzfSA3pyRjJ8aYh8GoIIg35zcFhmbphuZXU3mEtOX6EgFW19sGasg9y2CjUPXRPOZB8RDxTX01RzXt3XzyNXIlBz1BqLssCIxcndOLoaks/VvZQvvEaitfjVMAOZ4glGRNEKhsya+M3JWReyWhJIFfa2eyUQaWHkqzhbc X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15531b35-e071-4c93-f76e-08dbbede7648 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:08.1910 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 23/61] avcodec/vp3: Reindent after the previous commits 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: qks8o1lOQYI+ Signed-off-by: Andreas Rheinhardt --- libavcodec/vp3.c | 52 ++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index b7c323b153..b11be97fbf 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -2488,34 +2488,34 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) s->coeff_vlc = vlcs; - if (!s->theora_tables) { - const uint8_t (*bias_tabs)[32][2]; - - /* init VLC tables */ - bias_tabs = CONFIG_VP4_DECODER && s->version >= 2 ? vp4_bias : vp3_bias; - for (int i = 0; i < FF_ARRAY_ELEMS(vlcs->vlcs); i++) { - ret = ff_vlc_init_from_lengths(&vlcs->vlcs[i], 11, 32, - &bias_tabs[i][0][1], 2, - &bias_tabs[i][0][0], 2, 1, - 0, 0, avctx); - if (ret < 0) - return ret; - vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; - } - } else { - for (int i = 0; i < FF_ARRAY_ELEMS(vlcs->vlcs); i++) { - const HuffTable *tab = &s->huffman_table[i]; - - ret = ff_vlc_init_from_lengths(&vlcs->vlcs[i], 11, tab->nb_entries, - &tab->entries[0].len, sizeof(*tab->entries), - &tab->entries[0].sym, sizeof(*tab->entries), 1, - 0, 0, avctx); - if (ret < 0) - return ret; - vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; + if (!s->theora_tables) { + const uint8_t (*bias_tabs)[32][2]; + + /* init VLC tables */ + bias_tabs = CONFIG_VP4_DECODER && s->version >= 2 ? vp4_bias : vp3_bias; + for (int i = 0; i < FF_ARRAY_ELEMS(vlcs->vlcs); i++) { + ret = ff_vlc_init_from_lengths(&vlcs->vlcs[i], 11, 32, + &bias_tabs[i][0][1], 2, + &bias_tabs[i][0][0], 2, 1, + 0, 0, avctx); + if (ret < 0) + return ret; + vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; + } + } else { + for (int i = 0; i < FF_ARRAY_ELEMS(vlcs->vlcs); i++) { + const HuffTable *tab = &s->huffman_table[i]; + + ret = ff_vlc_init_from_lengths(&vlcs->vlcs[i], 11, tab->nb_entries, + &tab->entries[0].len, sizeof(*tab->entries), + &tab->entries[0].sym, sizeof(*tab->entries), 1, + 0, 0, avctx); + if (ret < 0) + return ret; + vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; + } } } - } ff_thread_once(&init_static_once, init_tables_once); From patchwork Tue Sep 26 22:16:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43937 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209595pzh; Tue, 26 Sep 2023 15:19:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEGdbAH5eDOlPX+DagwGYGOkoC64dpMI5hgcGggkcM1HdAmxC8ktHnms8lFAnb7qDONkBxQ X-Received: by 2002:adf:fc07:0:b0:31f:fae3:7629 with SMTP id i7-20020adffc07000000b0031ffae37629mr43078wrr.13.1695766793021; Tue, 26 Sep 2023 15:19:53 -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 bk1-20020a170906b0c100b00992fef51a60si10861845ejb.525.2023.09.26.15.19.52; Tue, 26 Sep 2023 15:19:53 -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=lpTgdoRm; 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 3DA9468CAEF; Wed, 27 Sep 2023 01:18:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2058.outbound.protection.outlook.com [40.92.74.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 06BC468CAEB for ; Wed, 27 Sep 2023 01:18:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EgAPjNt+2iWiMuzgBiMIBPlfmVYPE2LK6DWwKyrcE5KzctnBnL1lXUpI3gERGPu8VTMN+wobcwta+qLEDvvw3OLbFgOK00Ei9Ctz3ckBTtQ4LlSaXyuyGITwTgaOkwGaecC/dgPgg4KjmiIcTPKmHLGBtUXXh4S4tEZF4SFuKTuEhBgZxA91rCEkGheeE2Gp4lZM/lUhHoFJktbYWFv44lmAtIxBd4YOmtlXsD3DDlJZvJjbtvuEiNNqsy9al5mKSHHgCuIfbSlOxEzvkLLpLi75XF7zVLBu1De0nQB8F9ZKXw1ZQOPvk6y32osjknwKvSBIcLICr0HjlK0Nx9LNDQ== 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=Oalt4dWPwYEaVuVoRiZ5Q+X23+6lIUd53u9eXI7qF6c=; b=ZgUP0q0LAsxC+EpOV/bkUKZCrYdls8r67ETDFOKX46dq61x2p0O0FS1b/v42em88OzwoRWlEOc/1hILWs5bVdsxDEN8kY+NGA7vPRcVTMq57jj7yP9gT3h7izzRz3Veuio3mZ0VEhqEAMhQXfnRm1XROK7On+b6Y2mwpUbaO0aO91ZHP/IS42fM8AaeQX0oybmo6Xc6E1eEYBdd7DwD2lCNaBwD1r78w1mJJ1ROGmj5g0M4v/LEcrWkKD2VFVzeMSPcVqPD5WsvlcwtBHZTEQvkCTVxO1B6/rt15cT3CDNIUFoCcMA0pun3BLVpil6jKiYXGxHW2a6yclBpDUmgKbQ== 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=Oalt4dWPwYEaVuVoRiZ5Q+X23+6lIUd53u9eXI7qF6c=; b=lpTgdoRmryUdm5E1bi1yDqfEaamZpDfnYMvFGOxtR9vzat0tul5fstKVdUYjO5GgY1MvSXdcLZvpukrCl+XnKVBN3g1pBrT5Eex6S9BV2m51+IsbVzhz5GMTOZv3hbEXXmfpjI1c3hgi7Nru158BMeEErGRv+uXbgDJxMKwjQzrhrfOMdKifcqo/0/VgKUcd3kwi+H/s86bVpmJemSn5TMz3+w4QShidEnmddxMWA+b4uqaLi0eWNxqTTIBnTlMEqt025zPEvtc0Xkt5C8C7d5F4s/vO2ykf1gkr2WuKjOzA5OfAspWdsZgsREvjN6RUxkoEKn/8FirqZ9Anc2yXoA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:14 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:55 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [vTVuzAiBzqN0ymOsm330fSEw8s+3k2G3] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-23-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 8887f1b2-523e-4aa5-439c-08dbbede79e1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y816biqjI7FHI5jz4PHf2sfR1kI4nB0To9Iyek7vNXOguuI0iyD5ZDdGGdSH8TsW8yIlmxzabSrlikZb2KJH7mqV4Rg2NVHKA/91vNN9RZbt3Yq/Ym/XMeGGeFxlpWKNVApo0CO065mYCHJDtlIxRpHjx/iUmfJrPjHL630wujRa8YPjVqwx/8tS7pt7oO9iIp/ZQXvEVw56uwSNhVhMpO4xwwijQMAFI1+I9o2Cmxk3UGcQFkAsg/8lsZ3ayoNg5hkAiMYPCq0Z3lRdnJuemQRHgFPnDsRA0CJYLsB8Uoj5yqTQv9UTzDHtmY2bgxc036Hac5t3Ve+8KUXg5JXPrKxRmPfOZpAIqSQ2tSIxusB4ACBT1kjAlOs+esi97JZJP/PEHgHcC5u0QQDAFUBuKhMnJNEFlEzeLB+M0GhxVvI/0dXNNi+hfKNNi19Iu1IXs680srMjwWn3ESC0+ECma+iU/F+hDO2JaHYh22JuCT7kuEiM4l9YEMfTjlsqjFIVXSd43MsdlS/J5bltUO9Y0T2DjigiHsSbnRnn90E7txyH5YwZPujJaTmsncpse9pdYGroxz6UawSHa2akanoMWvaF3okoNGV2KY9Wm/P+iSJMh1nz3F+isZ0USTmGlUo/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hO0nyztJqC8Tda6q/mzNC/OiTrsN+T7/aO3+vS0POs2nOfc/T3z2F6IQOM6knC83d6yflJfkGRc9r/f+8U/d2HsFFXqOROFDswWZip31sTWYb1r8pApaEyT2i6Hc4JpfyX0JyNx5agGf+F74qOChdNYNeWQoLP++A9ABjNjeSdHdXrE7ouOpwGLv+f1P924TaSwRfS5eI0+JGOdgDsUyk68d8sld8CwAB7i/nucKF8tJg5wOuZQTchUQLCpRgEmcc/zdDoK2/vYRJOOgPeLyqmrJMFLJupKxPGqb39Tx5poC7nBQVWY7pUEQ0ZItNaxw6HOJLp0ZfiY1/ZK/NvJBfjo5dmMpX6Z9LXl0QFff6G+48U+/TuPoCoVlT3gmAEcLKNqXglXzFNdShHgDrELV/u1uSH9j0xwCZdKqwd2v82Ja4Q48doVUpRfMWfGA3dwXSzo/IQJEVsCAmf2+bvF15xTMkivebJgFcEE2QHFEAJwTzP0CzhNISxKfM+TZjA3hOGg0Cjheje76d4oRGFF9a856SkyhI7tGtWg/Iir8UlV4Il++Hk9F73fmI7e1wvcagVltiEWrMeOotbhRbtpCyP+/Wu/6A1uBRKpMnMZqYPii5N9uCgCf9Zx0c8UqJNSFcTWyIk+S6q3DfbXuwj4CIzEg12mhxbweGreN0S2YWRPHBAsm1ggjw599wT3RWbGDeNXs0uowUt30dzwcPSxCX005PpnOM5Uobd0Hg3s12vSUIaKT39RSXfKUvilotQ0k3gcqrfgjAuX6VmnW0n9UWSjGTq34eANmPv1x/xLh6GJ4xhvJ2weXUlRnyhhJEBACdpcfCtzO0rp0ir9+DCRo5tsK5JYUgA1L69wFq7bVeVHT5xUCxg72sxjb1MqYAfb9DO9atHzUd6Nbt353Vdcq5LR7Z3BwhE+VYxbvFespwWNasMBYRiJGAr3i1m0+WZiSOag8Qlan3wo7EhR/DDOxxNzNMY06GPhty9Osq9RPVVxAs+jCc1dDsj5KEHWN8Md4rPk0XMXo4YT0FfLxiljPHYVgSiajAMbGIGo593KchU78e0ngrS2/iwl4rmmnHkVXmDOWn+7Z/41LUQ0UaMExifzNWnUI1gzLHMQ1Pc7loZNziDQCvT8Pr1lLID8rJxrt2/MQZBSAAYY7ll5UwTgc7TGC03ruvM4Gun4epNaiXWNBNIzePZuyD0qJ1zTEzwyHHK9y4p7FH0VYicTc0gFTVZQbHI7Dutf6YtQL7cA375uj6XFWni4vKTsox0z71dOc X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8887f1b2-523e-4aa5-439c-08dbbede79e1 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:14.2216 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 24/61] avcodec/rv34: Avoid superfluous VLC structures 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: l/P+UV6O7ej9 For most VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. Signed-off-by: Andreas Rheinhardt --- libavcodec/rv34.c | 74 +++++++++++++++++++++++++++-------------------- libavcodec/rv34.h | 12 ++++---- 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index e9660bb457..a7bc8efd8e 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -90,8 +90,8 @@ static VLCElem table_data[117592]; * @param insyms symbols for input codes (NULL for default ones) * @param num VLC table number (for static initialization) */ -static void rv34_gen_vlc(const uint8_t *bits, int size, VLC *vlc, const uint8_t *syms, - int *offset) +static av_cold void rv34_gen_vlc_ext(const uint8_t *bits, int size, VLC *vlc, + const uint8_t *syms, int *offset) { int counts[17] = {0}, codes[17]; uint16_t cw[MAX_VLC_SIZE]; @@ -120,6 +120,14 @@ static void rv34_gen_vlc(const uint8_t *bits, int size, VLC *vlc, const uint8_t *offset += vlc->table_size; } +static av_cold void rv34_gen_vlc(const uint8_t *bits, int size, const VLCElem **vlcp, + int *offset) +{ + VLC vlc = { 0 }; + rv34_gen_vlc_ext(bits, size, &vlc, NULL, offset); + *vlcp = vlc.table; +} + /** * Initialize all tables. */ @@ -130,41 +138,41 @@ static av_cold void rv34_init_tables(void) for(i = 0; i < NUM_INTRA_TABLES; i++){ for(j = 0; j < 2; j++){ rv34_gen_vlc(rv34_table_intra_cbppat [i][j], CBPPAT_VLC_SIZE, - &intra_vlcs[i].cbppattern[j], NULL, &offset); + &intra_vlcs[i].cbppattern[j], &offset); rv34_gen_vlc(rv34_table_intra_secondpat[i][j], OTHERBLK_VLC_SIZE, - &intra_vlcs[i].second_pattern[j], NULL, &offset); + &intra_vlcs[i].second_pattern[j], &offset); rv34_gen_vlc(rv34_table_intra_thirdpat [i][j], OTHERBLK_VLC_SIZE, - &intra_vlcs[i].third_pattern[j], NULL, &offset); + &intra_vlcs[i].third_pattern[j], &offset); for(k = 0; k < 4; k++){ - rv34_gen_vlc(rv34_table_intra_cbp[i][j+k*2], CBP_VLC_SIZE, - &intra_vlcs[i].cbp[j][k], rv34_cbp_code, &offset); + rv34_gen_vlc_ext(rv34_table_intra_cbp[i][j+k*2], CBP_VLC_SIZE, + &intra_vlcs[i].cbp[j][k], rv34_cbp_code, &offset); } } for(j = 0; j < 4; j++){ rv34_gen_vlc(rv34_table_intra_firstpat[i][j], FIRSTBLK_VLC_SIZE, - &intra_vlcs[i].first_pattern[j], NULL, &offset); + &intra_vlcs[i].first_pattern[j], &offset); } rv34_gen_vlc(rv34_intra_coeff[i], COEFF_VLC_SIZE, - &intra_vlcs[i].coefficient, NULL, &offset); + &intra_vlcs[i].coefficient, &offset); } for(i = 0; i < NUM_INTER_TABLES; i++){ rv34_gen_vlc(rv34_inter_cbppat[i], CBPPAT_VLC_SIZE, - &inter_vlcs[i].cbppattern[0], NULL, &offset); + &inter_vlcs[i].cbppattern[0], &offset); for(j = 0; j < 4; j++){ - rv34_gen_vlc(rv34_inter_cbp[i][j], CBP_VLC_SIZE, - &inter_vlcs[i].cbp[0][j], rv34_cbp_code, &offset); + rv34_gen_vlc_ext(rv34_inter_cbp[i][j], CBP_VLC_SIZE, + &inter_vlcs[i].cbp[0][j], rv34_cbp_code, &offset); } for(j = 0; j < 2; j++){ rv34_gen_vlc(rv34_table_inter_firstpat [i][j], FIRSTBLK_VLC_SIZE, - &inter_vlcs[i].first_pattern[j], NULL, &offset); + &inter_vlcs[i].first_pattern[j], &offset); rv34_gen_vlc(rv34_table_inter_secondpat[i][j], OTHERBLK_VLC_SIZE, - &inter_vlcs[i].second_pattern[j], NULL, &offset); + &inter_vlcs[i].second_pattern[j], &offset); rv34_gen_vlc(rv34_table_inter_thirdpat [i][j], OTHERBLK_VLC_SIZE, - &inter_vlcs[i].third_pattern[j], NULL, &offset); + &inter_vlcs[i].third_pattern[j], &offset); } rv34_gen_vlc(rv34_inter_coeff[i], COEFF_VLC_SIZE, - &inter_vlcs[i].coefficient, NULL, &offset); + &inter_vlcs[i].coefficient, &offset); } } @@ -187,7 +195,7 @@ static int rv34_decode_cbp(GetBitContext *gb, RV34VLC *vlc, int table) const int *curshift = shifts; int i, t, mask; - code = get_vlc2(gb, vlc->cbppattern[table].table, 9, 2); + code = get_vlc2(gb, vlc->cbppattern[table], 9, 2); pattern = code & 0xF; code >>= 4; @@ -211,11 +219,12 @@ static int rv34_decode_cbp(GetBitContext *gb, RV34VLC *vlc, int table) /** * Get one coefficient value from the bitstream and store it. */ -static inline void decode_coeff(int16_t *dst, int coef, int esc, GetBitContext *gb, VLC* vlc, int q) +static inline void decode_coeff(int16_t *dst, int coef, int esc, GetBitContext *gb, + const VLCElem *vlc, int q) { if(coef){ if(coef == esc){ - coef = get_vlc2(gb, vlc->table, 9, 2); + coef = get_vlc2(gb, vlc, 9, 2); if(coef > 23){ coef -= 23; coef = 22 + ((1 << coef) | get_bits(gb, coef)); @@ -231,7 +240,8 @@ static inline void decode_coeff(int16_t *dst, int coef, int esc, GetBitContext * /** * Decode 2x2 subblock of coefficients. */ -static inline void decode_subblock(int16_t *dst, int code, const int is_block2, GetBitContext *gb, VLC *vlc, int q) +static inline void decode_subblock(int16_t *dst, int code, const int is_block2, + GetBitContext *gb, const VLCElem *vlc, int q) { int flags = modulo_three_table[code]; @@ -249,13 +259,15 @@ static inline void decode_subblock(int16_t *dst, int code, const int is_block2, /** * Decode a single coefficient. */ -static inline void decode_subblock1(int16_t *dst, int code, GetBitContext *gb, VLC *vlc, int q) +static inline void decode_subblock1(int16_t *dst, int code, GetBitContext *gb, + const VLCElem *vlc, int q) { int coeff = modulo_three_table[code] >> 6; decode_coeff(dst, coeff, 3, gb, vlc, q); } -static inline void decode_subblock3(int16_t *dst, int code, GetBitContext *gb, VLC *vlc, +static inline void decode_subblock3(int16_t *dst, int code, GetBitContext *gb, + const VLCElem *vlc, int q_dc, int q_ac1, int q_ac2) { int flags = modulo_three_table[code]; @@ -281,32 +293,32 @@ static int rv34_decode_block(int16_t *dst, GetBitContext *gb, RV34VLC *rvlc, int { int code, pattern, has_ac = 1; - code = get_vlc2(gb, rvlc->first_pattern[fc].table, 9, 2); + code = get_vlc2(gb, rvlc->first_pattern[fc], 9, 2); pattern = code & 0x7; code >>= 3; if (modulo_three_table[code] & 0x3F) { - decode_subblock3(dst, code, gb, &rvlc->coefficient, q_dc, q_ac1, q_ac2); + decode_subblock3(dst, code, gb, rvlc->coefficient, q_dc, q_ac1, q_ac2); } else { - decode_subblock1(dst, code, gb, &rvlc->coefficient, q_dc); + decode_subblock1(dst, code, gb, rvlc->coefficient, q_dc); if (!pattern) return 0; has_ac = 0; } if(pattern & 4){ - code = get_vlc2(gb, rvlc->second_pattern[sc].table, 9, 2); - decode_subblock(dst + 4*0+2, code, 0, gb, &rvlc->coefficient, q_ac2); + code = get_vlc2(gb, rvlc->second_pattern[sc], 9, 2); + decode_subblock(dst + 4*0+2, code, 0, gb, rvlc->coefficient, q_ac2); } if(pattern & 2){ // Looks like coefficients 1 and 2 are swapped for this block - code = get_vlc2(gb, rvlc->second_pattern[sc].table, 9, 2); - decode_subblock(dst + 4*2+0, code, 1, gb, &rvlc->coefficient, q_ac2); + code = get_vlc2(gb, rvlc->second_pattern[sc], 9, 2); + decode_subblock(dst + 4*2+0, code, 1, gb, rvlc->coefficient, q_ac2); } if(pattern & 1){ - code = get_vlc2(gb, rvlc->third_pattern[sc].table, 9, 2); - decode_subblock(dst + 4*2+2, code, 0, gb, &rvlc->coefficient, q_ac2); + code = get_vlc2(gb, rvlc->third_pattern[sc], 9, 2); + decode_subblock(dst + 4*2+2, code, 0, gb, rvlc->coefficient, q_ac2); } return has_ac | pattern; } diff --git a/libavcodec/rv34.h b/libavcodec/rv34.h index 84789625ce..4bb81b4965 100644 --- a/libavcodec/rv34.h +++ b/libavcodec/rv34.h @@ -63,12 +63,12 @@ enum RV40BlockTypes{ * Intra frame VLC sets do not contain some of those tables. */ typedef struct RV34VLC{ - VLC cbppattern[2]; ///< VLCs used for pattern of coded block patterns decoding - VLC cbp[2][4]; ///< VLCs used for coded block patterns decoding - VLC first_pattern[4]; ///< VLCs used for decoding coefficients in the first subblock - VLC second_pattern[2]; ///< VLCs used for decoding coefficients in the subblocks 2 and 3 - VLC third_pattern[2]; ///< VLCs used for decoding coefficients in the last subblock - VLC coefficient; ///< VLCs used for decoding big coefficients + const VLCElem *cbppattern[2]; ///< VLCs used for pattern of coded block patterns decoding + VLC cbp[2][4]; ///< VLCs used for coded block patterns decoding + const VLCElem *first_pattern[4]; ///< VLCs used for decoding coefficients in the first subblock + const VLCElem *second_pattern[2]; ///< VLCs used for decoding coefficients in the subblocks 2 and 3 + const VLCElem *third_pattern[2]; ///< VLCs used for decoding coefficients in the last subblock + const VLCElem *coefficient; ///< VLCs used for decoding big coefficients }RV34VLC; /** essential slice information */ From patchwork Tue Sep 26 22:16:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43938 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209702pzh; Tue, 26 Sep 2023 15:20:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFR+iAdb4J6m6qzHYyo6EcHFHqF29MAaPgEHdlKgrE0FORCS5JicFUtmCDVYvWkkEUXmJDo X-Received: by 2002:a05:6402:296:b0:522:6e3f:b65 with SMTP id l22-20020a056402029600b005226e3f0b65mr282889edv.33.1695766801654; Tue, 26 Sep 2023 15:20:01 -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 m15-20020aa7c2cf000000b00532c440746fsi12444433edp.178.2023.09.26.15.20.01; Tue, 26 Sep 2023 15:20:01 -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="o/XkTYDy"; 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 4D82768CAF7; Wed, 27 Sep 2023 01:18:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2030.outbound.protection.outlook.com [40.92.74.30]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BB88868CA93 for ; Wed, 27 Sep 2023 01:18:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g927rOTZtxZp0lx0zV56dBBAvpouqvfIgJl7RdjNPpnbCQSRKTBr6P0zwrqoHq6M7w1jiWOgD4FgDSP2bl6nuwAa1hisvxzaMK2YHM3Y9ZUbXLRRnVbhnb7tCRjkexjiJbOxY/rJ/eY7rEKDLMv4RRRuENFgxsEPce7gDHfweaG6B+mjzJvHAp6BebjLdgQFXbCfBDhabl4iA7hkPqBnrvBwKOm/UbqwCepVx/qAJi2+hYsmbtMlI4+uaYM8efPBv9GWkrBJTTH7MTsvk4hzBaEtGti5JOR6Oio0/ZTGpSYxDpFZhRgozzO2KjxKJLGv9NGAG1662RPYbOMTT4tkEQ== 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=QNJO1lst2qQVBkNuQiFbIe6uHDvewCBPCCfBC1bYPQA=; b=O5yMfYds59whOzVfSbuDESRgLmA2j8STBGQVX6H8lzkmLEmmLk2O66KT8UsRMSykbrK3ToGcOb3N95W8FpE4+ONS/jp1K7GPzXWZ786iaNm7V6H/BWKs14VkYGl6EnpxTSONzkZMUrVcCqt6mjTiceNu34R2wnEnlj4i5KHSFDH1FGYJdljNHg2cBNRC0rUwTC4WWtEzC173W3cshnu7GYdCd+9MBP/F0cm+4yVkw0EmyIop6EY738U8IBHHdPy+RBPg19RRVInovXmHivbcwthHZ5isPazH/OxPfeqbbxdzY1Lto42T2jEHi3VxGZT/quGRNqqq6HbH1iQghxpfdw== 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=QNJO1lst2qQVBkNuQiFbIe6uHDvewCBPCCfBC1bYPQA=; b=o/XkTYDyFLNvRPRuCLfeeJmX2K5sKWNchhaSODjzDC50EHvV667S4wWSjFd5X/0Ympuk5ZMuFHObrGkVstYCA4C3ombSrZffpZcrb8bb5V/FRfovryiOvds/FAYNQU3/B/EA8vSI835IT6+4JoZsv3ZkmfJ3mexYIRD8+g3ac0HXUsLXk0AqKvlaY6Fui6l/nKtJXtQSynCaQy1Rh3HYp8H61qvXqkL26/sviDsBUqYQr9dVGwqL2AxcZ+JaV7qqSmW+2r8vwI6LshQf7FruoXR5oPLyup4QXy4oiU0QjjRyy6VTcxwNsypGkHfWB0orSLLHmM2IaOLBoyKEjkGYBQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:20 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:56 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [amsvipfUgZTzW6+Ibn3vrQyMHEKBw3hU] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-24-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 40b84440-7df3-4a10-2f69-08dbbede7d77 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d9nAy5Ne4cDlhqM3hv8e65dbC41XbLGLafHUTbdzhxL1W+VDd9U5fg6ghxyJ5e8+7GIvI8N55Hzc+zBTNyUTQkVBOj+/y78Vjyy5SvvLD0GmMrQU16XXSmGn6o7udf+Jzq+MWMc4Zc1rBMuWr8WXz6TAYjd86AoBgy+t4yARtxMmEBGrJa8sStqvGt0FVd14xlhYWmBLtr/3fBfv3fGseKyEIvpZQbptysIdVt7/o6aAZxHd7QgNmC9fWVwWEfbRJQJBl7MH8sroBgjrhPvqwlvO5xUbhLpfJ53n7uprv61wAzn1aIZuI4I3UUIElMBWAktjzpQZ1JtVULM3rK+0nhxT93/J1IQmsc4+j4L75g7OCrOD3mRiGsaz/C3SuEFbrsiD9mdRAvCg3Hud7uBYtfmGdgKRAkpC27+6pWCFBaz6tuLrdcwNHF8OxhVdd2HCdIm0ZJhGzj8YOqBIFwmrHEn/FSvsuB08ZSSLf8RvE3Ujqm48gfp4EA+tThqTkq2+s0SPY6Whs2CkvEcK3glxQfK7EeUoqpn6FRARxlBtA8xWliDyflq58ilamMJcJSLkWwTWq1X8hhMRvcl1oSQEuXSzmZ0JjjJiQtzYe9eh6bPf/XJlDo6z5rjKO/h2eB7i X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: U5pgPS4qo5CBRyQ28yDNvzCCIjiK+bPbIzbyTQ2f2eA/I8Odj+IxeoVUy2GUQolZax2zqJn1HT3Kd2d0jdrwSssoJY8IZ3lmXqfrHJy/7qtAce+C3wZWcI65yMqOQ4v/Ib3zp2pAX1sH6D3bgKJ/E30dEiwLI5Jz+1tmT4AFThl4/ZaI1vEUcM8V/oTSpPEeS6bygGki1YTW995QqSWlzuMkMFKYvri/LfFe2V1OSkwjKPKwkBboJu2HdO4ycyIFZew6vHQbXITkW+/6MIky6XEGei4sNoEI8rMYU/OmK935MpuWoWmOq6EvqStq+X8huuCA1ZRBx0y6JIkrhyJNVllj/E5DSHcQ7zoh7BmGE0cYnNqUSPKY24WnklAaPNkfgsTR1WcAQoQzyAmpsVHjRVUcwF1NLNl2bIqCIO5xtAxf7lMWRMPx0P323PkyJUyNyt2BWFMCON/HihsTdIdLd1jGUTF5kGAjQfncCP3j7jk3+bUEeKeDSBAkLc6UNwWKkwRKdYXe3pS+lYfBsbYHkrXR9JfSStjv7bbvaQurn5PsE2PVRkNvnBR2Z3sqlsz/KuP44z7rBLmTZ6HEA4+L+e8rCeIn3K2PdeMkMzMWsv7Net0ShbQXoikrhFPCQsOfIQgj0V0FdTlwLQlgg820nzRJWnf3Y521JRZdwGQ9scaNyQrc7o9mIU5OuhWr4sQwGVBLexOphyGZl0mTUPfCjwJiGnR7xUrEepaLtMsv7YssMeD8qdFpG2qXH0fmugOdXgiI2YOnU2NATmus9PqdrjCT9rDc2j7gXMTLnTANXfJWbopYcSrCdpjeZdgUUlY2+hFYOD3MJf7/9z9Q8WfVAr05dr7LrO0FTxcPzKlla8p8afrPzqILH359pYlg5gM7MRLY76cMypmaCjrgaYsTunG/1WlAocA1LPH/2RKkRxeJ+ss6KS/IFjJOKJ8QXT2M39hmHdFPibRXxrIcJoXsyKW8rwn+RV77jw0e+vmariOH6KIbPValwkaNCAufT73TBY0foL98mA/O7Jza2wT3HyTfmjJsAjDtE9djfzM0gFzpT0/Z6hqU8Wep0SpsMTLavawCHZtCtTTCD60GRv63e667LS9OZ8VZzlzqO9F8u8qFw6gY8Ji4hSXsm17w660taRK1tuWJq1MqdiISFkHY3IFE+Ajw6sptln+dxzCZ/T55SSefZBeDxOsW1D9gPtXjNchJm2yBUlQs5tEapLNjmWQCpiExITOtbc5Uz83b+GWWSqwk9kCgBS40zP7CwUtR X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40b84440-7df3-4a10-2f69-08dbbede7d77 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:20.2390 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 25/61] avcodec/rv34: Constify pointer to static object 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: G/reP7diNgmv Said object is only allowed to be modified during its initialization and is immutable afterwards. Signed-off-by: Andreas Rheinhardt --- libavcodec/rv34.c | 5 +++-- libavcodec/rv34.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index a7bc8efd8e..3e065d14b1 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -186,7 +186,7 @@ static av_cold void rv34_init_tables(void) /** * Decode coded block pattern. */ -static int rv34_decode_cbp(GetBitContext *gb, RV34VLC *vlc, int table) +static int rv34_decode_cbp(GetBitContext *gb, const RV34VLC *vlc, int table) { int pattern, code, cbp=0; int ones; @@ -289,7 +289,8 @@ static inline void decode_subblock3(int16_t *dst, int code, GetBitContext *gb, * o--o */ -static int rv34_decode_block(int16_t *dst, GetBitContext *gb, RV34VLC *rvlc, int fc, int sc, int q_dc, int q_ac1, int q_ac2) +static int rv34_decode_block(int16_t *dst, GetBitContext *gb, const RV34VLC *rvlc, + int fc, int sc, int q_dc, int q_ac1, int q_ac2) { int code, pattern, has_ac = 1; diff --git a/libavcodec/rv34.h b/libavcodec/rv34.h index 4bb81b4965..6fe1f8087d 100644 --- a/libavcodec/rv34.h +++ b/libavcodec/rv34.h @@ -92,7 +92,7 @@ typedef struct RV34DecContext{ const uint8_t *luma_dc_quant_i;///< luma subblock DC quantizer for intraframes const uint8_t *luma_dc_quant_p;///< luma subblock DC quantizer for interframes - RV34VLC *cur_vlcs; ///< VLC set used for current frame decoding + const RV34VLC *cur_vlcs; ///< VLC set used for current frame decoding H264PredContext h; ///< functions for 4x4 and 16x16 intra block prediction SliceInfo si; ///< current slice information From patchwork Tue Sep 26 22:16:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43939 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209793pzh; Tue, 26 Sep 2023 15:20:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF/LgAtkIdgAUeFi+yd6YPvWKhPacZoWN76k+3idJWzv3sVeq3Kkr3sC+Ia8WnrEj4zq6AO X-Received: by 2002:adf:dec7:0:b0:319:79bb:980c with SMTP id i7-20020adfdec7000000b0031979bb980cmr3671wrn.64.1695766810250; Tue, 26 Sep 2023 15:20:10 -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 gs8-20020a170906f18800b0099381745ba7si12032103ejb.878.2023.09.26.15.20.09; Tue, 26 Sep 2023 15:20:10 -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=dSzmatbN; 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 532E668CAFD; Wed, 27 Sep 2023 01:18:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2108.outbound.protection.outlook.com [40.92.74.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B35368CA85 for ; Wed, 27 Sep 2023 01:18:26 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N+VtEtnvwlrCjYsPrNSze+G+8eyY7fWhk7APRcu2jhj8kwQ3qbTUutBCkHBRYhjzvdFtfb7U6/xk0IN95laXSBKW6CiXMOjBs+dKaxCY8zOFNwQb5lnt7xnjK2uYiJSNUs6MJq4665/0zgMGcb4JzaLweQxFh3X2HdU1oRYA1pcybwVH32wq+fU8QU1+VHej6WvcKM5ZnpUBQ838mh8Lv/smw7Bmr9oOOiJyTD0ylPcP5jOP8LiA0YcbQ1jaFwvh/TRL/r/WlwyUUctoOMptlf2/DA/2W8bphd2GOXzxU5PMA2Qz0G1iU9f+HLB8nlS8L4bLjMVjdPIS7+xV5Yr4sg== 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=7g4bJpEQn1pgd3fGGGuMjHIg0etAADTPFSzlmn2KNRg=; b=CUjXDyT+gnFsPHgAaQQs6r6YIJ6imtlk3JXbjfsIEuI98PsL52UJ+NnPzlR+tOO3+AFXrhPJ7DQQEpw+oCi/AAF6YNZ3c1FczCPpvzWn52kpiGDNZF1DA5SAOTuJmMLYG3c0UNGELNAb5wA81FwZCqysYUO6d8qSEvxSwDiZoTY1AKOG+UpegqIa4cgwLQFEZ5veuxJmh4koS33Dpi1fi06db+PijZ/jtJkGED88BYteQAZ/xF2xMUIuNswyS98kPnXZKMOtPFD1DjcskYviYgp3FkFsRBNLe900R95zs9eJ3//ixcOjg9KKrexEi1CjMETeqn9f6RUQ2aNUbYqWPQ== 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=7g4bJpEQn1pgd3fGGGuMjHIg0etAADTPFSzlmn2KNRg=; b=dSzmatbNN+S2VvdJIBDisGm1ExyxuTOf6ccqWeWxcUNAR87HFZ61+7AdSK3TVwQ5UfW57JtseS5CJBlKQwi5yFzyflayVix5zvVsXmS0n1piVukbK/HKJNjeLHddseQHQwxAqOzIdWTcUBBkyKwVT6N9MtjICdaLfY56ArQ34ogGK3hbeUH0RLetRMa22OVASIgwQeAhaLGtoCiONQ/oNGqVymQJlbtpQDmNHrOADHf8Uq4gOPPNPcnINsTECv9kVZQq+6nfYIMfpSeP7jc5LvVvqSIsMQHeX1gQbglTj2L+pCYThaa2iVIomqTY/Du/0/PItlTN/icMauikTg7Cng== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:24 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:24 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:57 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/HkWmnpwKwxDsdAJDB3IXPHOuSIeoG0q] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-25-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fbf063b-84ef-4ff5-eb71-08dbbede8038 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u/J6Zkt4+t7jrKifDds2ylChD3pJwYfAOPPF/6lo2OevWSKNlKXp54v92+wx3KkbnIImUDc8hsMCwTTDog6OpJPcRHq0ibLqN9tBYAECGGzRU1/WV+i0sBj5tb9DfSMsCO9wXIWLZgOXUuAgNxIs7KGGLME2sJBlFGL/2Yqqi1/gQMuA6PG5222rtT4jJ0lFEegRrC9xTV9GfS0c5V6pOaorDNURKRZQNF5FcPfck+QA+dh/P9JFrMEGjRpCkUFJzjstUb3i1I4txng2eITp+QItcBMKkSda5H1X6BAvPISbbqJw75X/Mrrh50rcO4e0YI3819TzsrtygBPIx0S4jbypiChkvH653Ww5IVDgQ+heTB+rHN7mwi/vT5qQ5c9a32yhnGlW4NzKFFRrDcpTfMcNGVQSgRVJwwMJsTZNDuMwNoIyvKp1IFEhDtTOzVJHX+zqK2DqD/dbdgu2PvyYc5sdiQNy3DGOoKY7GOyGBaqozdwlBqiXC8JyHBcXRvEvodF2oSxaCyw+mVvLksFWzjznZjgsVCEtWlBOZs5Yanp6G16eL7QsD8V+0vD+1pHUETP0YaxV8Ui0SZD9EI/A6g4lWkst3vpUpsgpqK17kiF8wyca7bwQzP9jN+jLY1Mk X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: J1cq7uW5ExcTJdzqXoJICEu7b/Fy2hnPmJg726J0ACeVAtvuzeSxMFCYj9OLvNiizpdB3+ZKSzozGkQutrP8hGNvjcaXd7aWxmGd5iPjBe7r+1YPdO34qA4H6zFNze9//r8CRCBmbYzVhCgtbymE+Z/EEXhRumCaAcBEwdXD3KDFFg+ADHB0z4b5yDg1aH00fHyEx1eSfCiort9nlBhZtfaxPepq8mf2YKKUGb6K7ykkSpBP9QFdTNRL1F6sy8krLnZG8gVjMMeujY5BG45Ii7OR6RAYNurRU8fKNbI/rWQrGNnjN+zwVYvSVhp/KH93X6kQjUlNT8Z+SWCdBJLx/oTOUEMn9tUPufMX/CmaNs5gx+qusKGVDbYZtAXWg9B+VhcaJa1HxKwSrXanaRzIo6crbCXv4rJhVxEUIvGJlkb+wzdBUwIVHq5JsueVECmI2ojkpoQNuMKIfdcuQcAiFfWvLrZjACtYWf/RE5V7AqRynz1RMaQDM5ESE92Xc/RCxp3mn9Pnj/gZSEQPx4hovxVHThitv28ghcWIqxgTj48tJoKuNv0aDjRU/d4+agQXhfNOa6CiBGy1wGq8iE1me7YtWzF85c1doyL+Up9B1S7Nzm9XFyaOOXILENmITR8b5zlWM0upS147cFFRzS9Y7va5iJbvkPOA2RFcOFLavaAz4lTCsOpzNZup3PZMK54f9dWW0q/S9EgQsEFXUIieqHOr428Y3lhcx/NY93kmz0OHmBsiGvzut695qBpW20FPZ5/v5sJItI9h+fiYPNhoHh7icahWh6Y0IgAHVvfbRNMit7mlLmqmSONZfrZ91/lodqqaQIhcwsoW3hB3/sQc+vNXvJWZ+y0pKXdNsvRuq3OegC95p/XL5OIMKSkJkNNyLDYjApWbVHW1pis5LU/ZRycDzOmWb/7kPUZHp7VaBMHwwTt2fYEs4v1gAglJgTwvJMa5qOSHRyDRRKQPKhwzFZkTfhkNy3Cc9aMd8DlvXGF2S/Wxjkl20Z74H4L/IZD6d6AmWnTaomZe5CPGv4kTUrfzkBkt94l1/5ef8h977h0jDYsj8vwh7riWXOkyFdJF7LUEsXl7GI67CGcA07Ljer43MizN20JeUfrv3skzvU1SVSqrMj2g+MS1FclYB84nXTmKWkuE8XmL6poOnzpE+IUXMFZn9gw7z9gJGO8o/lzuMkpUCzPlpdjTBz6X4551gBnP38zVbaHB1uz5iHV28Ua5JRUwVWy0sVlsvE4aiT7qhAXXdnKpPC/FIPEYYqVy X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fbf063b-84ef-4ff5-eb71-08dbbede8038 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:24.8631 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 26/61] avcodec/wnv1: Avoid unnecessary VLC structure 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: uyx02XmBpbCm Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/wnv1.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/wnv1.c b/libavcodec/wnv1.c index ffc9174ab2..0e8dae598f 100644 --- a/libavcodec/wnv1.c +++ b/libavcodec/wnv1.c @@ -39,12 +39,12 @@ static const uint8_t code_tab[16][2] = { }; #define CODE_VLC_BITS 9 -static VLC code_vlc; +static VLCElem code_vlc[1 << CODE_VLC_BITS]; /* returns modified base_value */ static inline int wnv1_get_code(GetBitContext *gb, int shift, int base_value) { - int v = get_vlc2(gb, code_vlc.table, CODE_VLC_BITS, 1); + int v = get_vlc2(gb, code_vlc, CODE_VLC_BITS, 1); if (v == 8) return get_bits(gb, 8 - shift) << shift; @@ -115,10 +115,10 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *p, static av_cold void wnv1_init_static(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&code_vlc, CODE_VLC_BITS, 16, - &code_tab[0][1], 2, - &code_tab[0][0], 2, 1, - -7, VLC_INIT_OUTPUT_LE, 1 << CODE_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(code_vlc, CODE_VLC_BITS, 16, + &code_tab[0][1], 2, + &code_tab[0][0], 2, 1, + -7, VLC_INIT_OUTPUT_LE); } static av_cold int decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:16:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43940 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209866pzh; Tue, 26 Sep 2023 15:20:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFonuzK9MZvWuzzZwh1xeIpSbHJKhZVb2d9td7VUx6kAUJsIPOzPbB1AdglKPIAe4/F7RB/ X-Received: by 2002:ac2:4e08:0:b0:4ff:80d4:e132 with SMTP id e8-20020ac24e08000000b004ff80d4e132mr109602lfr.29.1695766818908; Tue, 26 Sep 2023 15:20:18 -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 by11-20020a0564021b0b00b005307affc86fsi11458170edb.14.2023.09.26.15.20.18; Tue, 26 Sep 2023 15:20:18 -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="g/lIiEG7"; 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 3F3B768CB02; Wed, 27 Sep 2023 01:18:37 +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-vi1eur04olkn2063.outbound.protection.outlook.com [40.92.75.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9FC2368CA85 for ; Wed, 27 Sep 2023 01:18:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RUiIXQ1lCDR8CBuupaINy0mEMzuoMwegqjeJnWFq6vIpzSUnJM9np5HXnVh30Se5vaa0hw1UqA7jixo3QJ2Sm+tLSVZxJmjSa8/gEY0iRkxMulvuHPXCzhhg8QgUYaRMradfudQT9mwK8Tt1wr2xcBehrUsvgsiIQais6LziSxCLEADp7AKrGJ0EE1j3RJGbA+FHAS6UnTVfE+aRQl9V8/SmCidgmAQlUFdM8MWFKpYVib2PvAIC//ocsDxjXpc/RPO71JXUteN108/bEg/wQ3xhrqefZrAp6auv+IsCwLdD5bYMTdmoYS0fK0I2BWVqwqTqQzV9dTrV8eu0Qx6D7Q== 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=ikUsEgN9mDlCYIYbpBPOVitq63/rGyCD5q4hIdWOLhU=; b=h+/o+VnkgH6Om3Dmd7hSdQ3hRvVhw6vJ9fEsXSmovybJ4wSAEBTjg5qI8esCkkSdBfy4gq3tdk0bPBi/xHtmhjSN+dyMVC2zxdEfgkhLa0PLwqcXqcD8VqXxoiuiN0zmU2sfXUe1SEw5eYoEfc/4fD7lxZweWJ6c7rSKOFQdSsA4maemXvTKI/WImpk7xeYc3vovgx9I79jBvLLvu5hBWadpjnal8REOUV2kM7ffREXNxPVjRYG7Z2hOwqYvGhUjMJl6hRgpvlhnPlfQxNa4Zyhqc5OexPc2DvzHFhcN3jYm3QgF/v50BzzigVoexzx3Kjdx8qU8aHVi7gkqDDhP2w== 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=ikUsEgN9mDlCYIYbpBPOVitq63/rGyCD5q4hIdWOLhU=; b=g/lIiEG79en/vilzpXnc3hVwrr7aHm1itqt5AnWh7yjWBIMdcmKlRHAomWqcM6T+6XfB/mS2kot6DU+r2M3ymN1EWOzaBuMRXNEtFl0MowyfeOwQSnTJR+GAjy3JbUYhjJ2DYdCgEKbHY6inbwCGhhjlEnf4DGiEDj5jCq91tIGoahZaZL60G5EMriFng2Tdxir6ZYhRaRP68IXg/MlXxf27UkRaq76TuhrTnxnpALO8y74RELlOmA80S4FQMzZt+5XF+TprIxLF5Z2nf+agNhK1jxj17jFjGOmGiIciAn7CZvJZnCff1hEP2pqtdGTz8G2LYZViXKJXkD1H2UJ30Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:58 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [zFNzDwCtPcV7zL8kZP4i48zr6KVE5pVy] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-26-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: dc19e257-5e77-467d-229e-08dbbede85e0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cdYO9F/p3dlbJY/BqzUw3aUdZsIPj+VjO9jhJXi4bLXKRY8tofbl9NTknHeWQiYIGQXHC8CCGlvgih2jndpQgarxuLxQQza2Qbu2Axf3LbZ8alzh7+a8HtYOUFtK6blCAdd7tt3Xzv3tuOaX8352VeaZQulrWGeJIEK90XhLDnbmADI5RK/EHNqwk3IbqIhYKcU01GXJfVhPwBCoIPYdREP33Yk8vkOBykG2WfzN8CCgmlIf0iUBVr3sPIYTPeqT8+AAhWnrUxcNESCz4DcbDH6Sry5WfSr4su4p5jiWbQPpw8n+sfctI6zfCjD+IrWK5BeuH8cW4VQY0Lhzk1ScS9Ce1CXkHcHGSpe/De9+077igkUjOOdodZcZAjpa1kHv4aKUvU4Q4KRzqjA6qp7CpATlmMzz1zMCMQEFNkPJB5F7qoCPlXOEsqDo88hjtRLxZ/Wfdby6KrWs9ILuYdN5FeDGpqcmO+zdG0wSaGHvlYbqthVn3guNmNcNF3YSYeaZL+ADNfD4++AW3B9EHO3CVdt2c5tJRB5HYtfnJxtuZLWEf1NVDI8ZuwSPl++A/w5atqszfAliMHOMEU5wYBNDJQ54Gb0azNU+DYAMD+QMeczTi9deVdQlkwrBVPyo1EHo X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z7xk13dPRjFAW5Fu6O73fF5UAbeB4UuB2fVU7mEmB+QOkOblF2tfFIDcfqkZWK1wQfdy+mQMN4WZD8hjBWtgKvVWrRLiRI4cz1RGnvHA1QHDnHCDlOkBmr37oj/N12GltRscqaLxZtjYVNXSKfeng4L1Zxthfe9HUCR5r36LzjaSuBCOR3x+QE7+wz8SuToEayduASN2wjHcVo9xSGboTHy3pRt7v2ZfDFD72g5dudEQmK/lqZ9mMAFj9YxXpShSW1DLcUpQnykhuvxmssIaYAacw3TyLTvDvDxvzEIi/1JclaWkEXnwEflGWF/9Yqet3sb4Dxw89iJP97gZvNLCFpfheU+yGjzsjJ0RDWvYOrfaAu0D5X0dpeKUjIMc6QxmdB/Ti4xD2A1XMRsAwkCIMj55TaseleOHmd//vmjKL093mrFF46opsOmhLdCw/dxL9RzU7/EXdHT1zPjMJ7mFaTk2jHEwk2xqianOBXrcJTMne+r0Z3wZ8rEuYKLnvfKHIE677jsY20b1++j7PiSva+CjCsEXpGQ25r3Q8dgrO3qQoXnjqaRWJ8csqU+pVxrck0iDqsirhyYH5ZtYqQQ4Sj6Z9csT/XEUu+gcF4z0YHKF+6MCcdnY6orAz6I17BfO27bCgTxaDLv0GcdTtq7W0Cv/bXt4Nunm2RmdFFFVqzbcGpjOcqfLnhykL7TpCyvw7urPgx0af6dKrkcuBzK1ppHZ7U3n5nGMMWd1pQN6VQH4S4ABDO135dhPG6SofKS6SHfYfRaU5MIczomE/Icao6tSr6WMvIVZXGw1LYlvsb9f5GQt8GRcxf5A74u5AYvykeS3SxlvPBeaORGB5pyzYEX5pPr/yqUV+HNgxaTmfEuvgj9B15FP4UojmVr9n0HygbfkSQA1yEauCt6Ou+0vovFzdf1BGy8aUNs6U1i4MDGkVTNiYW788ssgoHz28Yr40a+1NWSLFevVh54DaWn1uEzB+4n1biluRkbhzp6BbgQ2fKaVnRmLyTeoDoMoba8+B08hwdYOpiZIjS6fk7uHPHKtnsiUrfs2HEbHdtOHkIphjrRHswzUU1ePlMjzWA/AB12HbakHTckSS7i+h1zy4lwWbjtiG7wSK//dw6K+8RM7uc2hz0n4LST098ejq219oOlQGJ4eiYCMxTQIqYCQ80hZH09aJ2W/X+F6idjT4//k6sW0XCNOFjOJ5cmk7Pp+K5q9iWN0M67jXEf6DEsjxZI6fJpxKNWodEGL68/cDNb0VRdO+2mTS3Pxv57nmAMW X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc19e257-5e77-467d-229e-08dbbede85e0 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:34.3998 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 27/61] avcodec/mv30: Avoid unnecessary VLC structure 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: 8UuaLVFFqZzM Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/mv30.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/mv30.c b/libavcodec/mv30.c index 9c72c0080d..8c45c8304b 100644 --- a/libavcodec/mv30.c +++ b/libavcodec/mv30.c @@ -59,7 +59,7 @@ typedef struct MV30Context { AVFrame *prev_frame; } MV30Context; -static VLC cbp_tab; +static VLCElem cbp_tab[1 << CBP_VLC_BITS]; static const uint8_t luma_tab[] = { 12, 12, 15, 19, 25, 34, 40, 48, @@ -379,7 +379,7 @@ static int decode_coeffs(GetBitContext *gb, int16_t *coeffs, int nb_codes) memset(coeffs, 0, nb_codes * sizeof(*coeffs)); for (int i = 0; i < nb_codes;) { - int value = get_vlc2(gb, cbp_tab.table, CBP_VLC_BITS, 1); + int value = get_vlc2(gb, cbp_tab, CBP_VLC_BITS, 1); if (value > 0) { int x = get_bits(gb, value); @@ -657,8 +657,9 @@ static const uint8_t cbp_bits[] = { static av_cold void init_static_data(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&cbp_tab, CBP_VLC_BITS, FF_ARRAY_ELEMS(cbp_bits), - cbp_bits, 1, NULL, 0, 0, 0, 0, 1 << CBP_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(cbp_tab, CBP_VLC_BITS, + FF_ARRAY_ELEMS(cbp_bits), + cbp_bits, 1, NULL, 0, 0, 0, 0); } static av_cold int decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:16:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43941 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209928pzh; Tue, 26 Sep 2023 15:20:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IECdqzcMDzkMJVaFGYXW694mPYiyRmswtDpmtaK5vyykCWrt2ktyB6R3YF1xfvUOj4l9+3J X-Received: by 2002:a17:906:454d:b0:9a5:cbb2:3fab with SMTP id s13-20020a170906454d00b009a5cbb23fabmr52171ejq.2.1695766827929; Tue, 26 Sep 2023 15:20:27 -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 he44-20020a1709073dac00b009b14f688e21si11197899ejc.146.2023.09.26.15.20.27; Tue, 26 Sep 2023 15:20:27 -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=qeWbmVFb; 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 4085768CB07; Wed, 27 Sep 2023 01:18:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2042.outbound.protection.outlook.com [40.92.90.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E9C3A68CB01 for ; Wed, 27 Sep 2023 01:18:41 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iDx941aDHfvw2GyiGsuPaNT6FRjThzGELebI2yzcmAfNt/XAXzm6AFID2PMrvc2cDcqJHVAVJA58KVf+aJzVhHDoPxnasE5XGe1G/9i5fGbVIvmnpgVmEBjCKK4eCMbgTvXSpndhp+94q6ouy/43HxgmgUeircw/dCAM4zYaZ4mocr+mB8ItSuUhz9FhAAgD4uDCicERnm7j0RHUJMv3caR0XSVI8zTKIRArcbVPh9oJyHvN1+KwUocKMwLGOD5uad2PiObQ+k4Vw1GT/G9DtWhj4gfSB6uJB28wcCXA6aOfB7oQrU7+TYCbHV2S/JUTr5/c+rqxnRBEYqF1EDM57Q== 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=YqZE9H7q48Gp7anROArM6uEdFsOEyl4IY8EgEjNKne0=; b=lkoHQdDPe/v7aqQaGiZPG8JbyAdxUCtWQIMFH8MxhZdEd0GTeoKjC3IAytRtVEzbqedqmMS1BSdj4KTuN6MphcbFiTP06REXnoV6itJAwyWe3txhFguWbics82uaXMnjrOFiE2jwOzBkBZiQ3/7GKoK3BrmenWMJ7BX5TB5SGi8czOmamdWOLV7wq1SSVKCQ57iFXxcVE5nGkpB+Y/G/S4OY7sKTWIOkcOS3QpW4bjLMTEVqLdGdnKWi+0u9XxNoz6Tl4+GHaoHhltubmq3U2vhdi46nCFEfxaXiMXHld4vfJkq4ECsdKDcQaiE0+i6V3FWWCXl8AFHzMsJs2uid4w== 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=YqZE9H7q48Gp7anROArM6uEdFsOEyl4IY8EgEjNKne0=; b=qeWbmVFb2qsz8IhNXdTkM5wr8f+CQ9U4jqAidPqkyS1TqnAhjiyYCEIQMIxGLT9v1DQiT4iTjhVh5StMpTjLMWjT5FXJrTDGicb/sxN2EfHKBmKGrQNgAlSish0WATv+q1l0XRL4aSmTmXPvaeeTv8Rq/uerl3wZcnnl2+vGSED0ARiylWzqh18wsjCySynMoXtel7+v6oPrLp/smvXh1Q9+InSG/RgRkXOJBdQKCLqR9mMw7IKhZEm/oJ8W25lRgsNVkeMoG0K2fc35eN9ln9Fn77/KjqBM+j3A6CUSkTchGsFHhrEDBWHgeaJsBvyTSqMM5qUYu0pD/hicvEoeZQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:40 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:59 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [nEKV6/Ho59Ux7jkr+smkxpiYFadTcowP] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-27-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: d422028f-acdd-48c1-0c46-08dbbede8976 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tyaYq+NbMYoPC4We8onFiRmhQ/QiSSOUMKsEMEa9BKrFirXut7efCvQ4qghuNNjFuzay8Azya0et2vKo19weXb4jEUPPKWG9Pckdk6PpPGHugXeao1NTWwHXobYtIEy3SHcfptMIPffRaEaHNGoc3AqK/966CL/IB/InpemXuAaHCEk6SOoelu802mhWADTk2z3wlo8tb94uo2sZ99OPnREuEZZ2yMf3wsB1qW8Cvz5ja+R3Efz/3Jp4q35EUFLgRlMdHjEJd4h6IoT4OFC0eY4d992SZ9hVq7u8XcbPakx2TM/DHdpppB23jY4h+uaMarjrH7bCXCvqjC4mpSjhcVINHQjx4P93R1iQv1YrzAM3NitzGNScXZL4jUznN3EmQlybcHtiSXSm/WdjK1otQ3wwZX03OQAXyeDYJOzy8EfukJMxgdheEj9DX2Gc3UzWfHNJgM4u6GJkJIhknBoTKdvMkvlU7HQlwOu07wZ7OKP4N2xu9+zR4o6GTy0fDV+DqOLhyoCpYLYKbQojXgBsvQbgnXP9B0xvHHARmb1eXDixtDUVt3Unww/egoV83HOHrKqKkUJK/VlhXliEe1ErvFyilmUKHWAjnMm3fvr2GR2Ryqpq9/WH0gcM1n/Sap5t X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Q6lHnDPyqzCxzLtH4OUzby0vN9QhEhz49IbaqTsGk9sh8DO4qDKcj0xAS7a9m43PUhI6LSjdZFB7m9m3dQjiGgKJvHCgbUOg/5LC3Ep2eKFkkatoLOC6yrPbKaR6IdrjlW26IE9LF7YNgUEM3+tAMk2/TN9ZDsHI5uiHCON4ppteUBBpoWFSvyZFvogSAZL7OijlP7z/KzH5FKF0CySGOk5Jr44Ng6M9T9eARafTYsDRVxz9HMIEFl12JrhaRUORJzJnQ3dIRBfOWHjnxc0ux4IpCrrhQnGfAi/S98zCdJuik7Y8RiOh5bfmr2L5m4SyXFixEKpTysP7lVdvZPvImF1ftHQL7YxLnHnsQ+kfTj5ybtGmfd2NrQkJDJ3CP1n2oefiNQy7Jo54cMz7XMPoKE8QrKZtupQRXnN/BVZFF+VDB4tG9njAIir/nVO4Nm0VTpwVUKh8LsuYJiU65VYlXDQiTuyvHIWMQ9yB212LwH1/2lCtBIdpdMKB7s6L6R881yzQjpODGL/DDH103nYBYAJnxr5GcPKa6XINkBhuNqmzCFCSO/P23JwnU8mCnzQhDj2riU+e5P/jI2KbAGvXyY1Zb9NovqnVR1viNkycAe8po1cf7eW8/RwgI1sZrifW/BgB5thGOFzHOnAXSZXoqWjmQ9tvtA724vztfT8cGZgR6t+i58eecO/1TJyVvMMHJT9K11ZtSnWhsTw/ivG05T4gUNWxENxhAj06EGoYq8IvwjN6ku4FG5b/usBwVas0tNwUROC4KwirdcmMOlKOkl7AQEOFw2GW1wXgvbvlQZTPwY2nfKZFGIrOJ4kIwjHNDu2mcbwaK6TyDUART+0SZ9gACe4H0+KJngrSjItaaGBnpgEyEU5KubD47GBUiRPI9DhuVo8gARusMUpmQzLwy/MFbOG94utKP79Jk3Ugg4UMo7CxT8Q1jfPyv3kidzMlyzc35lc6pbwmyVTfQ4gU1JO1lpuOQHturTpDJIFe3hn/Htnbqgw8T+Ggd0rkEGB2dByRSLBfKhRLGtTGrmy6K9EHMQG/bUJdFFDNqF+zcNlYGD9OFiV4mRAyYPD+0RTdLS/hBs/OQD9SgZ3egDogSQ4j4ygdFG/wPNxkQ8CTWWKNny4e8BPLJ28nGdfVtyh3KenPAtERSFCTUtMA/80cx+iC05XDcy0tGxxRrvTUMPtOQbrvQFJF6CTaDngbmeUDmyP1L7GRkZCqb6G7NEPUF240sCk7jKLVVHVFXQg0PYhhNrtnLMohCH+21d3ePoDr X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d422028f-acdd-48c1-0c46-08dbbede8976 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:40.3435 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 28/61] avcodec/vqcdec: Avoid unnecessary VLC structure 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: SAxq3r792jQ1 Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/vqcdec.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libavcodec/vqcdec.c b/libavcodec/vqcdec.c index 462d810a2f..dc9248d99f 100644 --- a/libavcodec/vqcdec.c +++ b/libavcodec/vqcdec.c @@ -49,14 +49,15 @@ static const int8_t vector_symbols[] = { 2, 3, 4, SIGNED_8BIT, -2, -3, -4, SIGNED_6BIT }; -static VLC vector_vlc; +static VLCElem vector_vlc[1 << VECTOR_VLC_BITS]; static av_cold void vqc_init_static_data(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&vector_vlc, VECTOR_VLC_BITS, FF_ARRAY_ELEMS(vector_nbits), - vector_nbits, 1, - vector_symbols, 1, 1, - 0, 0, 1 << VECTOR_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vector_vlc, VECTOR_VLC_BITS, + FF_ARRAY_ELEMS(vector_nbits), + vector_nbits, 1, + vector_symbols, 1, 1, + 0, 0); } typedef struct VqcContext { @@ -171,7 +172,7 @@ static int decode_vectors(VqcContext * s, const uint8_t * buf, int size, int wid continue; } - symbol = get_vlc2(&gb, vector_vlc.table, VECTOR_VLC_BITS, 1); + symbol = get_vlc2(&gb, vector_vlc, VECTOR_VLC_BITS, 1); switch(symbol) { case SKIP_3: dst += 3; break; case SKIP_4: dst += 4; break; From patchwork Tue Sep 26 22:17:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43942 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2209988pzh; Tue, 26 Sep 2023 15:20:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFbFuAfmRvL5mj1XImWlZ4tQx2ZnK2x/M1hGOO1HnhSFKdxWKfM6DFwtrFCVT3IxZ+XPgBg X-Received: by 2002:a5d:4e86:0:b0:31f:d5db:a13 with SMTP id e6-20020a5d4e86000000b0031fd5db0a13mr6021wru.61.1695766836551; Tue, 26 Sep 2023 15:20:36 -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 f4-20020a170906138400b0099cd34c0f5esi10986408ejc.466.2023.09.26.15.20.36; Tue, 26 Sep 2023 15:20:36 -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=DCwqnh9z; 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 5B22668CB10; Wed, 27 Sep 2023 01:18:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2087.outbound.protection.outlook.com [40.92.74.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6AF0E68CAA5 for ; Wed, 27 Sep 2023 01:18:46 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lm2mwUPjzjAjkFCuW9dmOxF+lk0yGYIrpP6vPl1JGiwqdgtYUYCHKCNI7qO5K0tE/pEb7SXwSAChw5EpCl421A4v8xtvls6tiRjdqfLYKTjfC+iWmI3KwcloqtP61EbLWlfrhAF3MGJMj/iwHjxrekbVwaWw9nCI5Nda0IdHvwwMJLSjGSJOHXrtTLJCqYq59xEobYkhTa7ubWzC0SHDNX96NCht8J/a9Fz4WBhAMHRZ4JJg7bIlhahYj2L1xZK0Rn1QN8nmr9w4yADixSxh3qVjGpGv1coer7o93evlqW0Xvo80XAnRo4Ktq9bB8oa67s95Pm/tMhaM6A7fQDqx+A== 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=fiWnCQBcltX7ESrEYWNGw7AHuEK8U5VL67kt/0rqUnk=; b=FWZrQHSuaCKDa0zsflLP1ORbM6T+6BUOJ05nFSeIYWsQkpAZfpiA4rmbvbTJbsFggL6TlyLfCZ2n5i/jBwE2WY85pOHLCkowMaXjJhmUqZ7YWDNi/17/rdnpS5liz4TRH/CzF0mW0PhVtrFjvzbN8mq2MAEp4lRpOY/wCahtknDhlcLh9jbNFMuLIw0XOM+4TaQZGotYIp5scRwUaiCweDgO4bIpLg5ySykPQk7ZTPUhtTxT8NQ/PXAHu988sfvjKD1NyTBbB9OrSv7t7viUTtQ2DA54vSGE0geLYNHH7IFADICiQjChloJgIsADWj3Jnuf0mo4v3p60BzjC2/bfRQ== 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=fiWnCQBcltX7ESrEYWNGw7AHuEK8U5VL67kt/0rqUnk=; b=DCwqnh9zAmU+fft8Oofskv2M6Rfi8ihPKqbLIUAI4/0mGtesD78HVXVwNbSaCBFLYbILmg6snJLYkksUPyyrCDQg0kyqy+kP1SUGsOT87c5KJUKQWJay7VaYqGUVURcfedtb0k6HWSRlR0jtSoKM26eKgNyeJEsiBjRVOaKlcbdYpoiPcATLAAk+7fmIwo0dTYtEPrVGDMOFm8UBdkRRSeMNL2mtVMWZiEhjog/+tWlAOBwYehPol25hw/RYJHjF8MNGVh4VlXT8yiBjfNht9Gb+LZTdzYpcF4gjiuJCfjNVD4zXbCOGHgjJtNaSRiG6z1oR6DhQ22iphL7L9j9nJA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:45 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:00 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [rlAlmYa55bl5oZoqpxexYAN9jUcZDbXG] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-28-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 72a26b7a-ca98-427c-00ef-08dbbede8c33 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K4TXQaEX3l79g/4Ta+r8lnAPR0VO33QcdZuI4/xIYzqSjfLVJXL0/RmBpW4hBaLXbxgZWsLcwu4gF9Gu7kthhtgOlJrAtlwdTVpKMGvN6243NeYQHEdwctmTe/Akqh+nlLdK9HrcyPoRUw8IqaS0b4maqw7ORJ6/4BRJaSoVUvYwwm6K2Sc+WB06iEogZudFMdVUgt9S1fxGmSTr3ytdCAFDl7sc/30F599uw2kHoVe3b2G5yM4/ejA90MEj7o1viTXe6EzyVs+7EIiGWlqVnPu1B/IB4IwiCPU2Mhpsl835MX1o6fz1n4JhHeUGCXR0/RWM0MT3DD4q5GQvtS3CA7yAEN0FQuQvJTy9zLz16cZUSpXIvvAWRVT+rNWnxw9WSwTl8kAaWaZXh337ajKvVoFXicpRO2FfBDDzHxcqu3M+eFSL23KIKuUglq0QxsdJd0zH8iweTREK7RjxhYcn6GgYn7eV9VJ8m7oJeTAqeuVh5+iYpkCrLz+MnkPuDqyf2ezwfMwCAfC5ZtW31OeSoRHWpuO4Am6kmsZkRtinCB8PEcXxqbfGXYkd7s3Di0GtQZKt5BH8BhjrF6KZTWG0XLch8/3krCQ62qHmIUdwDVM= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CB3r0VAnVRpL9/bJGiMQB/glBpY+c0yfiORjpzwU+vkjLdQaCm/5ghBPiiZE0JYQxiDHu8g4jVykWjg+Ywm9V9pRFvKJKvE+JDoHxStt46g2hpR5ilgqb1LoqnCflMhO55OtKUFnGrjTvXLzMWPpsopzKWB+rPUCfdV6K6+pXdW3WFjszBu/OdiE31uoDymxwqm4iDZOz9+D6R3Zcp+HAWTuUAD+HzTAOIs5dWN7DR7ATh0zDi9LaWHsx9e0VGn2KBrvmCHkrkifnKagXpyt6XX5sXtd3Xm2ubuXNGUclp6EDHEVAHyyYEg8Mt3mVeiVk7j2dSLAyyAEYx13/xKs0vYz2KN/6ojHuaoHcj0LDESUAOs3qWVY7OtTjVVSh3H1mDsTq71fBvM4+nnzTVDYw4OZ2Lv6NXgrYrwLMLUBoG6ri09RZWKB8qUjFo2dmzzdWNpHulD4ZQOP5xLmsJ4iJca7UN8l86gkiHzI46fvdnJ9mA8RCK93htlYDD+HPSIfDPi2tCEMRevazT8j+AzTakBF6vEOWd0CBvAf1+hoXusvHy/NEGuRC/g4LppVmjc9dFb527ZFXuGw9sGhVq9rQ4/1IIhR5VjYfVJBqnBGb1v0TOUPpku0YaKIe1MHooc2gJclXXMohI9cu972LZiEZ4f7w+WHcOoyLO7rhaozFfeF8eggpS9a99vJov7QiqMmSwwA1O9f7uQugtCd1NZ9TCAEu8uf1zaa9gMd0PbvMMM8AjDwhLZoPpQyG/A6EixcxtUqpb7LdvCXro1mEib7HcRiFWA/QtVvyQLzwarOJQART7bkI/2A6xb2RZsIY4QzkmEQHDm3Yvrzvzeyk+eVJGUbRCmFPSU7eOTyb1YFMKoQOgGljkSIpyUsbt5oFn6/pOSAOdZCcjcQ4OrdpsuElNc2IKas1rww0XsYFV1zxy3g+mfu6bGLOAGVMkQFmkm5aI1oNFCmBgxkyUkiCoMRsZzgsBjHk7+hRyTAxh9DZ9BdnTmNJYmZV854OQOb5z5DoJwCn0wRiCzcaTYinODunpp6s4siklJiBeN2L/4IokZn7E0mY7kBoWv4B2uWgYLQUeS/zai844K79tVxd5SMkCIKT0Xdb45UA4fMSuUrKA/hBImNzYJSgRMg23b/GX8+rWP5Lw4IDOAdtJWdUT+0rmNUZt0GWxwHoCcNcokRpOg0VYtCUrqj4Suo+RUc9M0/27Np20pUBSpExE/ayhWnmwBbdSJOUTC2DxucMB4BBSsbBz6QtyfpIamV9iKnqwWV X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72a26b7a-ca98-427c-00ef-08dbbede8c33 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:44.9718 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 29/61] avcodec/mobiclip: Avoid unnecessary VLC structure 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: 1UGCXwujzeqS Everything besides VLC.table is basically write-only and only VLC.table needs to be retained. Signed-off-by: Andreas Rheinhardt --- libavcodec/mobiclip.c | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c index 98c0f55a5c..144fec6363 100644 --- a/libavcodec/mobiclip.c +++ b/libavcodec/mobiclip.c @@ -274,28 +274,26 @@ typedef struct MobiClipContext { BswapDSPContext bdsp; } MobiClipContext; -static VLC rl_vlc[2]; -static VLC mv_vlc[2][16]; +static const VLCElem *rl_vlc[2]; +static const VLCElem *mv_vlc[2][16]; static av_cold void mobiclip_init_static(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&rl_vlc[0], MOBI_RL_VLC_BITS, 104, - bits0, sizeof(*bits0), - syms0, sizeof(*syms0), sizeof(*syms0), - 0, 0, 1 << MOBI_RL_VLC_BITS); - VLC_INIT_STATIC_FROM_LENGTHS(&rl_vlc[1], MOBI_RL_VLC_BITS, 104, - bits0, sizeof(*bits0), - syms1, sizeof(*syms1), sizeof(*syms1), - 0, 0, 1 << MOBI_RL_VLC_BITS); + static VLCElem vlc_buf[(2 << MOBI_RL_VLC_BITS) + (2 * 16 << MOBI_MV_VLC_BITS)]; + VLCInitState state =VLC_INIT_STATE(vlc_buf); + for (int i = 0; i < 2; i++) { - static VLCElem vlc_buf[2 * 16 << MOBI_MV_VLC_BITS]; + rl_vlc[i] = + ff_vlc_init_tables_from_lengths(&state, MOBI_RL_VLC_BITS, 104, + bits0, sizeof(*bits0), + syms0, sizeof(*syms0), sizeof(*syms0), + 0, 0); for (int j = 0; j < 16; j++) { - mv_vlc[i][j].table = &vlc_buf[(16 * i + j) << MOBI_MV_VLC_BITS]; - mv_vlc[i][j].table_allocated = 1 << MOBI_MV_VLC_BITS; - ff_vlc_init_from_lengths(&mv_vlc[i][j], MOBI_MV_VLC_BITS, mv_len[j], - mv_bits[i][j], sizeof(*mv_bits[i][j]), - mv_syms[i][j], sizeof(*mv_syms[i][j]), sizeof(*mv_syms[i][j]), - 0, VLC_INIT_USE_STATIC, NULL); + mv_vlc[i][j] = + ff_vlc_init_tables_from_lengths(&state, MOBI_MV_VLC_BITS, mv_len[j], + mv_bits[i][j], sizeof(*mv_bits[i][j]), + mv_syms[i][j], sizeof(*mv_syms[i][j]), sizeof(*mv_syms[i][j]), + 0, 0); } } } @@ -410,8 +408,7 @@ static void read_run_encoding(AVCodecContext *avctx, { MobiClipContext *s = avctx->priv_data; GetBitContext *gb = &s->gb; - int n = get_vlc2(gb, rl_vlc[s->dct_tab_idx].table, - MOBI_RL_VLC_BITS, 1); + int n = get_vlc2(gb, rl_vlc[s->dct_tab_idx], MOBI_RL_VLC_BITS, 1); *last = (n >> 11) == 1; *run = (n >> 5) & 0x3F; @@ -1195,8 +1192,7 @@ static int predict_motion(AVCodecContext *avctx, for (int i = 0; i < 2; i++) { int ret, idx2; - idx2 = get_vlc2(gb, mv_vlc[s->moflex][tidx].table, - MOBI_MV_VLC_BITS, 1); + idx2 = get_vlc2(gb, mv_vlc[s->moflex][tidx], MOBI_MV_VLC_BITS, 1); ret = predict_motion(avctx, width, height, idx2, offsetm, offsetx + i * adjx, offsety + i * adjy); @@ -1272,8 +1268,7 @@ static int mobiclip_decode(AVCodecContext *avctx, AVFrame *rframe, motion[x / 16 + 2].x = 0; motion[x / 16 + 2].y = 0; - idx = get_vlc2(gb, mv_vlc[s->moflex][0].table, - MOBI_MV_VLC_BITS, 1); + idx = get_vlc2(gb, mv_vlc[s->moflex][0], MOBI_MV_VLC_BITS, 1); if (idx == 6 || idx == 7) { ret = decode_macroblock(avctx, frame, x, y, idx == 7); From patchwork Tue Sep 26 22:17:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43935 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210060pzh; Tue, 26 Sep 2023 15:20:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEVx06mfx+fiNBnvzuP2EtijLwb+UHo3Z/xY/ioBvqBIMfylWZrZToXwl6JRIHdg7gNCXCe X-Received: by 2002:a2e:b810:0:b0:2bf:b0d3:20f9 with SMTP id u16-20020a2eb810000000b002bfb0d320f9mr222156ljo.5.1695766845071; Tue, 26 Sep 2023 15:20:45 -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 lv3-20020a170906bc8300b0099cb1e742e7si10817784ejb.224.2023.09.26.15.20.44; Tue, 26 Sep 2023 15:20:45 -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=cTvKKTwk; 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 697D468CAB9; Wed, 27 Sep 2023 01:18:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2082.outbound.protection.outlook.com [40.92.90.82]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 627DF68CB0D for ; Wed, 27 Sep 2023 01:18:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XN7vSd+gQTPVg7O1kpXeWe1wAOKa/PFKB/htjNnQMPPILjMCBDn7Lj7AW+foLIhVFlsYsklcZN9z2kFOLLAIkmvMabzBTokcdCX1EGDWPIB3O98NLoj89C8epjRdDvPPoaphtJbmCoHHod9c99zvJZUEm6+fDcQIu0OprJwnfZItj8gTX5TPMFYKQqGW1afJNKH7BsU7XeEVqa1WhEp57Y1X1UPy/r45pmaRxA0L5lp077k9fPyZt4BW7lKdQCcQBZ2Zl216xqC2cO9N1SC8WhLePIJzO/bpkYG0Au1LMmsnr2P4MlQ/ICcISAfFg8JnRrf25BgmLuDtFUZRFbNhPQ== 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=3+sZey2ehgfI76zqK2qKV3zEIU9uIMh2IXUw1ZNVA2k=; b=J+ZWwBFAcUXSZmF5rLYpy67eCdtGGBtJ/fZmCBWvAUa0L1qM8py9EEGOZPSzWZoflAJnf4l+DDa8QOtMOilpgBvUK5fk41tQkkFdq9i9gqq23tNgKWTcORGxUzI7myoZzKB0tG1Dy/2Zhl8R4a7ZS2uGiOdQC3aI4fYCHoHuCwjF4oqb4Oi6UZjUf/F+PqEAPLDlzvbbeGEcNEPygFh7hMz86swBccF4ApBmNhFQR1vz1iBLgCSX+2AI56d58NsSmESBbLCgQ4WVdhq9VIQVmNvd18AKT4tFtPhxT1ToBBGSrNziQFEgSAl18fs3eI7t3HPa6Zziq9HrkGU9rfiHIQ== 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=3+sZey2ehgfI76zqK2qKV3zEIU9uIMh2IXUw1ZNVA2k=; b=cTvKKTwkFXA8t06Kf+Lj+QTJdGEO71eRRFu7D3RzWezoROVHkj9Crz7bcAg6J6A8daMPa25474xIot+sgRLHizprz/niYqZb+27UZT0D7bBAML7Dzpz1g7bGvXo4VpLKoVEqI0CWj3XyVFid6j/tDL2A5bIbPZfBCQVLOnYOSJSM6P1IJj8S52BOu2E9BwE+WUvNX0yjjJCnyFuKXTlwmSQU8LtACxp959nj0Nvv6O4ESEWslvDGEzHPPPCi4ZotIy6ylR2vf3yS8pITbnaKSGHDd/LStrqQYJDw5kTo2b0mUavuNOXKfvbQnz1trUvnZc30+7PBGHbe4LAOFpMACQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:49 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:49 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:01 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [tuwA5lJ+cyi7FuB0cqhX4j+78NzUcQuh] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-29-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b967a11-5e11-49be-6fa3-08dbbede8ea8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8cDFrH4hAmZYD160MwQy2pznctkWRuDb7Bbr9BKLizTiagPXQcQ2aMkZH9ae9J0r80lU7fsx1maI8/3VuZu3sm5pVFU63zP5BZYz6p+IOqQQwalguDmL1m/YbCi8ggJGKTn63N8aRhRdBqIE6bHvqyv/k+ix0nFMvaJ/67bXfuvRvu13XPEbVZsxGQtBZq0CodjdQaptYjidWLdTOEmhzujhEMP6qEAjyhFbHYbFGfClSTOsqY1t/lq85Q3NwORqtVVOw2WXNxdP6tX9cTmw28pEbKEH+BjoTF+e0HKRJCAR+YQI4mUKFVnPy2Eykh/MX6UdJs8m2+hbfvBjm8FLCyCeNeZXKwOAXbGQRJ9BafafN9PrOT+WYj6KXRfLp6qhmlCCL2JWYR06x7t9o3+Nf1yOltLFW1QW3ITcsEhJZzceptW6pLnfPvfLASjPYMyxv6ZsPVcf5KKLZdkvHE51CoQyB4Abg37j6AtaFJ6S5u16u+oqpitRCYne2bpkdmn850nnKSkesodVavXTdiHF8ep6M84c5a7zN6RXCQwWlivLfQ8UIbEQujbsALn9ep/Cit0cYnTkuuAxf3RVqgCl9k5QLMeoDd/0pKoJsvlvyJQAG9wHCL8eGIeXmfI6uZF6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ReNPjGDVa5V5pDb2tWpfI6IYoYGFwTLHiQo6XOClRxAX/w+MnjMlGRyoDbTD7NmMpqnKHjZrZbejG2tldbR1R2QLFSOd+i0RJYHyK2iIrKHXD2J7oBRMG5D6ythGPZBYOJijYpW7ShOSt+R6rUpwSrhOLxb2FHzENPBU8hOMzIQIti8gZsBxkBqZdfjdB9w3/3PmVVhoWZL9uaZVz+6O797nwz/rPkWyQHwenGWNqu/tSml63dz6whYw3bvS2n/ex7LOYMP5oSqVyEOZ2BUH/Ha2Z0BofE3xj4ZWkyqjt28NK1tE5Fhkolc6gwcwkvS25pJau9Yp/BPZWZ+VmNtp1/IATRTLgZSvpbxr9ESBkNjn14qyc0eYR0ei/vw8Ll4ZBa1ul0piVX/2vQAkJjpiLYSHFi0K+bBPaGQe3WNE6jkH0EYYXyPRQBIY5i3ENkhQOlfL5s01DtPz4PIHxq18qmqmpseQm+3KZfcu3zg34Sc6wuu1OKG8aDlGznhLS8Wzo+lCbZspjq7/umgvTljo8vujQmjR7dHvggvGHsk8aXOYIF9ytve752XWyz/Jwk/QWPGy8qzQv/eK81FXsHTH+RlKdS9OCAktYu7B12Br1rz2I+YW0oiL1WdXaG2vaClXUmumYF6xvPtfBDWvBWIG/XLZXUEC7wK2Htj5B6aYXEQvn0vHhUF86jjwwswaRKsYPjrIPgEhCf2/TpGF4YGUD/F+LvkNHPGB1N/GEs7VgzzSxTlkpy7GbOXzLv5qKfHzLylXLCk5paxNx+7YsipwsN/cq8spQ+oJ4EzsrrcK+rVjESJvHQw+UYNBg3ja18+vjbYWy1dcRDO1bUaTEuW48ig6c+UhRgcFE/SCghyEFfCk6+Sdo9vv7bDkP7UY2m9VMtAmakgbZ3Lyy+KrlArbjR25GJbczvXHofR3bY4oZK6IHZWNSHqgLRCT8equIF0SfwhJBx3s9gqj7VkzHMmrrEErbupTrQmxdhUkYw9vcCt6na6ya4Z9iONudyREIZd36pFv0VMfPR+9hcikRHCI9HOZ5yNO1sEIz/BXhIyrhVqiLD95pAJhEuWaeP9OSC28Mbc0ZM7L3RSOKBqDeoBVxApvIE0J9b0eTlhsIkB+X2wK30Y/bq9uolj3BMX+3Dc1F4ZoalHl8Y7cRUSPMX/ybTtAzY868hSgH986ui11Hf4n9qTVyb1zsYvrGuPpMxedddza8LnasaDWJg28MPWn3ENHztsHCcigJZlj0IPb47lTqS3sjuFwLOsCtIGi1Iaq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b967a11-5e11-49be-6fa3-08dbbede8ea8 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:49.0760 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 30/61] avcodec/mimic: Avoid unnecessary VLC structure 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: lFV2bRLkmdHY Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/mimic.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/mimic.c b/libavcodec/mimic.c index a846a07a40..62029e9dd5 100644 --- a/libavcodec/mimic.c +++ b/libavcodec/mimic.c @@ -67,7 +67,7 @@ typedef struct MimicContext { int next_prev_index; } MimicContext; -static VLC block_vlc; +static VLCElem block_vlc[4368]; static const uint8_t huffsyms[] = { 0x10, 0x20, 0x30, 0x00, 0x11, 0x40, 0x50, 0x12, 0x13, 0x21, 0x31, 0x60, @@ -120,8 +120,9 @@ static av_cold int mimic_decode_end(AVCodecContext *avctx) static av_cold void mimic_init_static(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&block_vlc, MIMIC_VLC_BITS, FF_ARRAY_ELEMS(huffbits), - huffbits, 1, huffsyms, 1, 1, 0, 0, 4368); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(block_vlc, MIMIC_VLC_BITS, + FF_ARRAY_ELEMS(huffbits), + huffbits, 1, huffsyms, 1, 1, 0, 0); } static av_cold int mimic_decode_init(AVCodecContext *avctx) @@ -226,7 +227,7 @@ static int vlc_decode_block(MimicContext *ctx, int num_coeffs, int qscale) int value; int coeff; - vlc = get_vlc2(&ctx->gb, block_vlc.table, MIMIC_VLC_BITS, 3); + vlc = get_vlc2(&ctx->gb, block_vlc, MIMIC_VLC_BITS, 3); if (!vlc) /* end-of-block code */ return 0; if (vlc == -1) From patchwork Tue Sep 26 22:17:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43943 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210125pzh; Tue, 26 Sep 2023 15:20:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGg/a5QfOhmBtrmfPS/+P990dtO9BCvuZi8xUfMRHpfnS9rGm20cUmsRilj1xJJHU9StFM/ X-Received: by 2002:a2e:86c9:0:b0:2bc:d6a8:1efd with SMTP id n9-20020a2e86c9000000b002bcd6a81efdmr372538ljj.39.1695766853849; Tue, 26 Sep 2023 15:20:53 -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 d8-20020a170906544800b009a5ef8663e6si11938877ejp.1033.2023.09.26.15.20.53; Tue, 26 Sep 2023 15:20:53 -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=qmV9zP8y; 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 87A2468CB18; Wed, 27 Sep 2023 01:18:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2074.outbound.protection.outlook.com [40.92.74.74]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8D9E468CAA9 for ; Wed, 27 Sep 2023 01:18:53 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U6RH3LrJmvM0PpB8cHKQxuMHKNhhHNYhTktJ9mbfA8uOzQrTMHI7D07r9Eul/SHJtH5/ZL7lQtvT5BSsiu8wh0MGJ0rv50LP6/7oEX27VS3ofva7mgN27rfooJP86EYOhsrgwRKeQSXDdUnSpNega/QWC0FnsXEVogMznQ6+M2l5Qn1v+0fikHnsspTJvLpygBveairLOCiKy6a1ujTbJSVk91ly99A2qTGukgtolDate/qCEJd/+hfhbK/iZdgdW0D5R9r4H8GrchmCxZO8SZlaHvHdmHQDrG/DOLoGlfEgP/eVrXzvLXr7FWn2CHedTksTcfG70wBt0MfimFhKrQ== 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=qZxi3tEpNEw3IN4JRX4wVB2DE+gGfUa59UB2FPthzZQ=; b=AeRmF7Ul2rczScII5f5mlmQpwa+CDB3GuTzCYq9ChzNVZG++UMAEdNwJalM4AO2ZVOi7DYOhbZV1Jm4lbW1tPd25ykk9b2nLYtTbk3F08hVcprAPLq7mbLfUHSpH5e58jAxUizPAafmLKt9mm3448yVTfTRDfagq8LdqsINCprSmoHNjQcmpsV/O5o4zLsLLtRh+rs1eh5j9b1ux+j1wO+/5ghPBbZiDyAsIjbY2SBdU5kOeQcDaB/S4L0iU8Q2SkmY7LLE3Y5mmpcYeAj/AGXa08jP55jHC6UaXAuxBvPSYLBktPe4Lf/4R+SsgWT0kgIfH3R8Z8xe100NjtZGbYQ== 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=qZxi3tEpNEw3IN4JRX4wVB2DE+gGfUa59UB2FPthzZQ=; b=qmV9zP8y4MB6gywV0vyoUe4J82JCWyxLPKGz/jlvGB+89sSF3pDl18edriJfTv5ob6KZjCqLcHZckjvdPq8DxQXUCyg9VUF3dOJFro2gPeqd5knb0js7H55iGkVuSpB5sKtBWA3TyuHVTDCxz16wEMz8W6ye6/jlnq3/k12/7yqwzW1XPtR/PxLXW/hRFMF9aQiftgkI3JTHIrSxq6n2ReN3fGed+Ra+p3molBrOBrhmLdz3WNdMaTn2DD3VWEER7/iWi62Emi/9wz0pB/RCpCo9bYdQ0Dykio43SQv0m5BS1oYHAOjCOhSx4BXi7r8CZWirS2HV6aG3LZ/43UXJDw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:52 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:02 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [uAVJh1/+XSd2xlriW+DutooYUbIvuAcJ] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-30-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e804072-3680-463b-1eb6-08dbbede909d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6pckj2pKkAT/QJWYKnRQirDfDT2seyjNXwmQ5uAAOLjyBINwED+1r/bl7JDGAPiyUdJWpI9h0mJMeejzJuuBKwsXJspSqqd0OYn7mtMe2nSp3YUly3Qh15e+V+9/kJSPH3dRlGVGNLoR5cHqDf8yAjXX9Baw88FlBqmH7Kiqfx77wqs7kgeUXI0nAQQbRTtRFaexDRUsykrEETTduN/kUHDb8iLXRsM9zCQ0JM0RHWKMWshQ3nBrVz9wIeThzsDu660JtWp0v5fzczRaRoB9fW5/cibsDaBkz2uDEAfuZwulo0JcRPP25GnoDdbnd7APZs2rRHXh/q1f9EYtoBXRPd7S6471YlPOX5l1zmocL6NGr4SK8VdATxMRL6a2n8Nj9zvwNDIZpMjuag1GzgWmnMzuAwDT+DSEBo4Rblyc2bfrUd/YGOVXmicY1NEdLeH1X5Uqm+759jpss8tD09vbAIMWfvkSKTeb9YfY7tut/TVED5EModMQFrZljk4fXldOwt1iunG3wWq6jbQEVla9rSl2VJ5sx+YKqVzWRR3GRG6h00HwWYN5CczwdJ8S8zYEzpB5dga/iSMXAncLgzLt/LvdeclkLpSX/9XvOERazNC4CORryFr9oh+seZUU4BSj X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G0MG2hJKy2Kak0Bp5aLdi4vgNIJnbkva3P25Oz0df2aPUJWavhmDc3kRzt96t/UNm+ibvrrZ2Sf4hGJTS1XOgbZLBkkfBdX7T+c4JXNx3rjrX4lmHz1GGMpYwrt4UILohIqdBtzIXowU2niOlOcRaljWPfHOcdNQOLyiRVNHTaLqb7ETb1mjuBJ0CLHynzPy0Rpq0yWhR7lE2HbRO2wK6SjAunMPvw7LCLNlY9UoFP/Qns8v5FKL5sWcFNSlyvdnRS88kTb7sLbGX66QZr3blrDcOn01CMh013u3Y1qkb5EngSgGznNId6diV5aULvCFF2n2YyvGUoYkUYz/65OyBdxw3CzCGEX7aTYwYTVMi0cTejWV7Phqqr72cBjCgP+T4OwTFLqbwB1v5TGS6MC0dlGfIfo1GT4LXvWAWwZfTU5u+/rVqZWHPZ0CK3wV2OGIqFK9mKIwWX9YA48/bS0Ir29idmsZjGNy16AzpfU31GGxRf95SWvFSW59xueCQL6U7vo44xl67NlNDGQ5FdLfqjw1LzMddf0mEQ2Nj/PjEQYuCGpy+zdpPVnobotX6REOGf34Q0EzF54fIXC4B1R8pWNAs0I4++vPQnzMSd7UQXmxTaI4GrioGLEgkAjVTC7jESLCAkPxdCANFC+6D4jFkWzJ5QK0MCVrKP4SVSFaCShGjlwcA0LKpxwpjoNATTgVAVZZ4EgrNRxZo+tqZjdwTP5ScGjJYHJTUD4jAHa1zK+RYFbYrsS06Z4KNqhyAw3DOBzuzPzxVWFZTUM0L1C0z3ayXh8yU3polQ9bT1RkNApw+2ulg88l/FHtAhppa6R4K8dZfyTKibvFXH9irY5RhYT45OYPoLtIvcE9VMtg4xCleTVX8wNIS0M+XxmDFUT3oRpgzqT3xgxEAq28PiY04JQNjqTu3KnuIY8zJk4g0DUPGMJN68KApsbmcW0/Bn5LQ2w6bp6wgTmTSrPiIb+OBCyrVfX/U3VCuNQm935Lw/4tG2FCnVgq6MR+YN60yQO7sSboXFYUU+NWspxg3+fJNW4dd75kI9SjPw9QxKm2VjcJgvrDSMcyEzbA0ri1V4F+CI7IHE91Ogavowah9DmDoOaAEpcTCKi4aGKfHiD9WwJFuP+AKyMTccHNBQX+T4TjICMJbRa83x1ZkmN09DGIMrSFl4oyCyfK2SVMQ+wr+h8oM4tgs9sTAvNeIIEH7uoWcH0c0dArVT7HWYQ5UEB/j17FMKXevudMUgV3QmW7/FKO+AdSwnAnXXwJmCIMeb3E X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e804072-3680-463b-1eb6-08dbbede909d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:52.3554 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 31/61] avcodec/imm4: Avoid unnecessary VLC structure 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: w0Vb4ImroiDD Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/imm4.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/libavcodec/imm4.c b/libavcodec/imm4.c index d4011b33c1..656fc9c05f 100644 --- a/libavcodec/imm4.c +++ b/libavcodec/imm4.c @@ -108,16 +108,16 @@ static const uint8_t block_bits[] = { 6, 5, 5, 5, 4, 2, 3, 4, 4, }; -static VLC cbplo_tab; -static VLC cbphi_tab; -static VLC blktype_tab; -static VLC block_tab; +static VLCElem cbplo_tab[1 << CBPLO_VLC_BITS]; +static VLCElem cbphi_tab[1 << CBPHI_VLC_BITS]; +static VLCElem blktype_tab[1 << BLKTYPE_VLC_BITS]; +static VLCElem block_tab[1 << BLOCK_VLC_BITS]; static int get_cbphi(GetBitContext *gb, int x) { int value; - value = get_vlc2(gb, cbphi_tab.table, CBPHI_VLC_BITS, 1); + value = get_vlc2(gb, cbphi_tab, CBPHI_VLC_BITS, 1); if (value < 0) return AVERROR_INVALIDDATA; @@ -134,7 +134,7 @@ static int decode_block(AVCodecContext *avctx, GetBitContext *gb, for (i = !flag; i < 64; i++) { int value; - value = get_vlc2(gb, block_tab.table, BLOCK_VLC_BITS, 1); + value = get_vlc2(gb, block_tab, BLOCK_VLC_BITS, 1); if (value < 0) return AVERROR_INVALIDDATA; if (value == 0) { @@ -221,7 +221,7 @@ static int decode_intra(AVCodecContext *avctx, GetBitContext *gb, AVFrame *frame for (x = 0; x < avctx->width; x += 16) { unsigned flag, cbphi, cbplo; - cbplo = get_vlc2(gb, cbplo_tab.table, CBPLO_VLC_BITS, 1); + cbplo = get_vlc2(gb, cbplo_tab, CBPLO_VLC_BITS, 1); flag = get_bits1(gb); cbphi = get_cbphi(gb, 1); @@ -287,7 +287,7 @@ static int decode_inter(AVCodecContext *avctx, GetBitContext *gb, continue; } - value = get_vlc2(gb, blktype_tab.table, BLKTYPE_VLC_BITS, 1); + value = get_vlc2(gb, blktype_tab, BLKTYPE_VLC_BITS, 1); if (value < 0) return AVERROR_INVALIDDATA; @@ -473,20 +473,20 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, static av_cold void imm4_init_static_data(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&cbplo_tab, CBPLO_VLC_BITS, FF_ARRAY_ELEMS(cbplo), - &cbplo[0][1], 2, &cbplo[0][0], 2, 1, - 0, 0, 1 << CBPLO_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(cbplo_tab, CBPLO_VLC_BITS, FF_ARRAY_ELEMS(cbplo), + &cbplo[0][1], 2, &cbplo[0][0], 2, 1, + 0, 0); - VLC_INIT_SPARSE_STATIC(&cbphi_tab, CBPHI_VLC_BITS, FF_ARRAY_ELEMS(cbphi_bits), - cbphi_bits, 1, 1, cbphi_codes, 1, 1, NULL, 0, 0, 64); + VLC_INIT_STATIC_TABLE(cbphi_tab, CBPHI_VLC_BITS, FF_ARRAY_ELEMS(cbphi_bits), + cbphi_bits, 1, 1, cbphi_codes, 1, 1, 0); - VLC_INIT_STATIC_FROM_LENGTHS(&blktype_tab, BLKTYPE_VLC_BITS, FF_ARRAY_ELEMS(blktype), - &blktype[0][1], 2, &blktype[0][0], 2, 1, - 0, 0, 1 << BLKTYPE_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(blktype_tab, BLKTYPE_VLC_BITS, FF_ARRAY_ELEMS(blktype), + &blktype[0][1], 2, &blktype[0][0], 2, 1, + 0, 0); - VLC_INIT_STATIC_FROM_LENGTHS(&block_tab, BLOCK_VLC_BITS, FF_ARRAY_ELEMS(block_bits), - block_bits, 1, block_symbols, 2, 2, - 0, 0, 1 << BLOCK_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(block_tab, BLOCK_VLC_BITS, FF_ARRAY_ELEMS(block_bits), + block_bits, 1, block_symbols, 2, 2, + 0, 0); } static av_cold int decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:17:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43944 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210194pzh; Tue, 26 Sep 2023 15:21:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrvPrUUEigAXDSyuAp1abUav3BWfbbDD8p46iOVX+QOUYd4O3sLeeS4XfWEqbb3dFXM1ty X-Received: by 2002:ac2:43c2:0:b0:501:bdde:5a49 with SMTP id u2-20020ac243c2000000b00501bdde5a49mr77241lfl.15.1695766863184; Tue, 26 Sep 2023 15:21:03 -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 d17-20020a05640208d100b00530c8b6aae7si11935971edz.387.2023.09.26.15.21.02; Tue, 26 Sep 2023 15:21:03 -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=AfcN5D96; 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 92BF468CB1D; Wed, 27 Sep 2023 01:19:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2053.outbound.protection.outlook.com [40.92.74.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB28168CAA9 for ; Wed, 27 Sep 2023 01:19:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j502sLOP47XdHe3tm3HTCTq3lx2nMta3s3TMlkyg0mjgIsU3qCNqtFG2I2lStJXmPo5BGPollRhHSuP4wVYy0m9bfkOzdwx9YJo5Eafe80J8oYOiL18GSM348Q0nvROXyPs3clETc903akK4SZp/C4K8KPzc1vOon+NA/ldttLw/Xwye1MnVyUmIaciGolmFZ6WwiyaH6phjnavQXd6usDlispSuzR8DQMyxaWnWvWUTjTIFOfif3GoIVRrkc2n+L0Yi9Jzgs+n/Hy/1+PCs9zPw1BXAFukwM6z8kTe11CKCMA16O5FrcO80JiWWMDHcZhltmPCUqTgmV6pz0aAPUA== 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=XQ1DsQp5QV7OEqiG0bilh+p4lax4DimWLFjOUO38TIU=; b=G7vlpW04/g3vLKy2boOu86oYF8ZOGf0ytWBMprlLnbASt+sVc775nIgO4sQdegVX+OSnO+nqCEjJhh8XnsSaUvwwhXA0fKWZAKOalQjlvPNmVBl8cJ6NrUANaKFK2qDqwvHqlUIZB+3h3WeWDfk16i9/Sl/zxNjqHjPCfyMXeNZtVJKn5OaG1uzYelZiTlEoYiNlXmL/EeeI2HJpNGlqGXMNV1mTCPMdH1m0JRqfHkX8OEB/YxVwXVU9C2IeCaY//zh8FlSAbroGJHEF9vgUr56dVkI2CEfLPhtr8fC0KU2ewZxvkcvf7MLLL2osxv2zkQAr62rfq/X8MDcGiXX+nw== 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=XQ1DsQp5QV7OEqiG0bilh+p4lax4DimWLFjOUO38TIU=; b=AfcN5D96ZiGhlvr5q+ai5pAfQ0BDzw3FYQFRmHpuv9OJsWXytE0SSzNrcKrHuEkAmajaJOpgubSIX1Jx8I0THTOYO3YUNvn29FJVXJ2B9Z4Ys40g/dGUHNLhvAVXEk77B8dCjFe+cEi2orutHGLXonqHmo/nRHMmluhZqmIovrCYb/HrvD0jxgrc/pnvMUo9oqgCa5FXdwNj9FH/fFb3Ji1ihcn2lstPHMyFipEnPH//pTYAcoR4wXZ8JPDQZaKVcce1qbFLvUArZwuo3Q8qcTNMhjPvTX6Tn71pUwyGuc5hl9QmAj+VRsUbvbVSqWUF8nqZYq6N5Bb1OT1HT3fAwA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:18:59 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:18:59 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:03 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [F1s4iGsV88vMNT3/6FsIdXiX6sILkQFh] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-31-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: 6188e203-8849-48c7-0753-08dbbede94af X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4ctEsqP2PHA05ifRjUEArfPy427KFWNn1Kb5JDR0JhH6Qw1zsAavRxiZ5lSO1EnxeZjWRzbrjMfgCPapKgLpyYheY0aJyCBC446qPBqisXqvU3aXTTU3dssOBwZWLZeideRcRFDggXJh3f6kGbKnVGrr9N+gU9wtnpFooCSk5mezwZ2I8FIlWyW5f2r5Qt0OJizxnRSBijXrwHly11j2WliCz/kZA9Pw8f71OIxJiZ7W6KBaNh8geqtI8zjOncg0ORmW/ni8LZf8Hnfjv6EDbiFJeJcvL5OvNAHsLKOFJM6w9ZxH8kuo9SzW82CGpV4wNCv69iQ717DaTYao9zyXUb2enoje+WAJ94nhPM4xJjgO/ddhi9UibTk1dEKizQaqv7YndOnIlWe+4/JfunhdS+GOEmbl4ZRckyt6IoNGrleuNqV9biKRA04HAw9DZiLqbHn040CVMf7NpqVC3LUiX0LNoQEG9bXqsSG+jy3gMTI2JfdWWPYhoDvWAvBqAV9CUVYKsdr0KOD03Z8/YSVt1TfcFeHQHoRtA3q261TwZHfZhHmScS6hFwtUQ/SCcWRTCI2VKd19YnsuvSwf+KVIyytOD2U/Aer/gOJLi95bccDjCh+BxsOXXaHypSlKbMeH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +MPuNWRgTFfUp5kZQJI2dXZRVNo5utKi2OE8lU//jMm13spjX4vqmO7ItPHrZtHmLHAK5go1OSzc3+qc6nK7WgffbL5DmV4x2s3EzH358w7grDEFVRRV32eEdzng5/dPs9O1Crdjzk4y6plnqYLvdfYkXSslRaZx5OHE3vSJVnYljrjRFAvG25jaV1MbnGdTx/mrf6poSy7ba47p2DXBOsURa6pKsi7G17oAHkEFV4K6hngw0XUdeHDAsesGT1CcvX26eoevvfk1qEkXAGSsCRpr/Uet1KIvR3TtSrisr5aRIOhhOeIwWhzppkLcJWwJnFkRB8o5Lg0ePvjOuWzqom9cU/aVg9+oehPNTkkfv2v7FkidZU3I7wkOR6YBHTwGVwHEyhcnYsLC+zSVdNvWa3ftRIu+MLdWmLJur+WoxcskW0QlClsZjzZTkTqmc9UzF6qU7sb1tLlTGmILqlOPpx2FBDGH8z6Ldq28M4SpYhQ4/HELt/bE3HrCtUXHe+zEaheXEb1LEnvm1P4d0BOSSqG6vfGnp1Dx4yJTOh3Z3Ofi2OJ1BPhS7iLvhOeb6FGDdACqy+NOLjn3qyhwT3m5WXWWcz0s+sIhS1cwceZjY/sifB/6CaM6KWgELwuiUd1IOpAx5iVNiDQhIrUZQ3rTJ+og0x00Lm7LlqTr3yl8G6uFekrlzji39ehI3AYOijVy5rdPJ2P01iNWKwPe3ffG9J/JWG3os6lqnkMpklO9ulIVYuRxidpzTt6MzsDVjmHWioel/tDOhHir0Gz3TvXOYqM6qzIxTzGtFWQQgpDyASRbPNQxkkN0dTRxKgLS2gFmTxdHKUJLrl7YnxodNr+EsDyFEIhQ6u2eSehE2pXhTyfw9KNovqHV/pGL76wXKoJJdtVkbWdl9AjM8EGyc4F0Ux1WJ3WVb4gj0dmgWI9/X58MVySngSZQY9JDvauG6ILScvLXsDx7KQqyp7zM10tjqhT8loQxRiLYsUzs3C1Nzz++SJCWI6+iE38XdgXJ5EjJ9UOdLBCualbtFNmtHROZwFQhJhs2iGFMZnm1SvPUgGp6lvy7K+kmG9CG+6LVG1/2fJjm1Hyptu81EbrKfk/EgEjbEv4IcNCDx4PTJhR46uUP0mHrK5uF/U1QPeVf/RL2xFLa807KtAMhyW1zPTmR5lFdh1oYvCKYEeVVI0/3CxEip5QvEss2RMRsr83t05+fNsfGKvuNKsEnDl8p3x/ASaHFMZg5/aab5XKXN+oq5RG6AZSlmhj4sckJ/eq0Fpxb X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6188e203-8849-48c7-0753-08dbbede94af X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:18:59.1913 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 32/61] avcodec/lagarith: Avoid unnecessary VLC structure 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: AKVXr6yXyddo Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/lagarith.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/lagarith.c b/libavcodec/lagarith.c index 3288c0517c..3c6635f763 100644 --- a/libavcodec/lagarith.c +++ b/libavcodec/lagarith.c @@ -60,7 +60,7 @@ typedef struct LagarithContext { int zeros_rem; /**< number of zero bytes remaining to output */ } LagarithContext; -static VLC lag_tab; +static VLCElem lag_tab[1 << VLC_BITS]; static const uint8_t lag_bits[] = { 7, 7, 2, 7, 3, 4, 5, 6, 7, 7, 7, 7, 7, 6, 7, 4, 5, 7, 7, 7, 7, @@ -85,8 +85,8 @@ static const uint8_t lag_symbols[] = { static av_cold void lag_init_static_data(void) { - VLC_INIT_SPARSE_STATIC(&lag_tab, VLC_BITS, FF_ARRAY_ELEMS(lag_bits), - lag_bits, 1, 1, lag_codes, 1, 1, lag_symbols, 1, 1, 128); + VLC_INIT_STATIC_SPARSE_TABLE(lag_tab, VLC_BITS, FF_ARRAY_ELEMS(lag_bits), + lag_bits, 1, 1, lag_codes, 1, 1, lag_symbols, 1, 1, 0); } /** @@ -136,7 +136,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value) { unsigned val, bits; - bits = get_vlc2(gb, lag_tab.table, VLC_BITS, 1); + bits = get_vlc2(gb, lag_tab, VLC_BITS, 1); if (bits > 31) { *value = 0; return AVERROR_INVALIDDATA; From patchwork Tue Sep 26 22:17:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43945 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210264pzh; Tue, 26 Sep 2023 15:21:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGM/88ciPH6wehh/yXhTaqR57gPlZoEyVhLJkImbpadkdYT/7f6TcfedB43PNeaKXcW+wNw X-Received: by 2002:a17:907:9490:b0:9a5:aa43:1c7c with SMTP id dm16-20020a170907949000b009a5aa431c7cmr5417804ejc.26.1695766871816; Tue, 26 Sep 2023 15:21:11 -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 n25-20020a170906119900b009ad8acac02fsi12145199eja.29.2023.09.26.15.21.11; Tue, 26 Sep 2023 15:21:11 -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=FruxRUag; 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 898A568CB0F; Wed, 27 Sep 2023 01:19:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2090.outbound.protection.outlook.com [40.92.90.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88BD468CAA7 for ; Wed, 27 Sep 2023 01:19:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aLGk58nzZuv7A9VSfvAhPc4Yw1gFAl0x+n/1cF3+Eh00lzymdxJ5KHcTZ8WqM3lwYmGzRn2fAcCbf3CLnMjSB0x+ZFUaS+ssnInuGXhca59osLHc+wbtS3T2cfZITuke1CN0g9HLVIqcZhTV28Uj45wSfj51PkRnFb53tReS5x8B4KFk0h++93nt5iesg5LuRGIBEdV5klROG5EdcksoRtlaiaf1hXvWIOPfyKyVSQacnu3D/vmDVaTH2PTuoor9iMYVWJ1oGicqYuHQzuPrXBg0S2+/fYCNRnz25T7/7j1SoN/oOhVFl9YEeN0QonkZeG4GAuL0J4sr8eZ0G5XYCw== 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=FqWynko3JIS/udIk09UJzNoYfUEqIZMK55rVEXIUWbg=; b=oOXkX+LHGebTbLbnwVv0pAH/5myO6OVRybP3zA3pTA9ABqHiC2U0unAP+h522iO376irRrMIr3sZnYt4CGyJmev5J7sKFlMO+rE55IDawB2xhvwRKqBZMqlJxTqjoYxREherWFhq5DFzM2K+0rppmWPdHE9WtaVc925JL0DSLcryvkanTMbCwaOTKmD1XGrNf7jFiIvmAg5ncfTmX9uyZnRijk4HOC1A+GdPaXVsa9FZxufVMvlOKnxZ4tLR/sqbQKRjDZvtQt5pX+lvLDA0Tnz6qVjQppYNCJ+AD1HeYKq+LACnsCS00j3B6XyqfrgnHd0psroX9n4bbkMBfiCItw== 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=FqWynko3JIS/udIk09UJzNoYfUEqIZMK55rVEXIUWbg=; b=FruxRUag5FshqgEflL45SZfhNBAFuNb2a5N69g9YHGMzVyjqhwbeiHG+u/zudldBHhVNDLreTQKKRTZ3JcDPAFJXSk26pAPBLraest0bjnK2mhwogReOmOOCkXdHYKQsmo6zZK6chPnMen6pvQmE4LjOQ+xx30ZHhBdZjbcCwbeL462fiLTPhvio1028uvQ3pglpmcFMptmEqsCGdrBSIkReqFiuIhxUsffXkRv7CJL1EiKDkB0UR3TIg8pIvhFlxZLqmQD1vEZsPX7fzSUhRCGPcGyVXs1400DhS4NTVZPIPgwCNb1tSRrk3l4svYBggWhKXJNUzwdKlHVJ3vfk/Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:19:05 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:19:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:04 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [+jQycy1OqHraIh81t4HpKjURz35r2G5X] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-32-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: aa6ea8f4-0277-459c-42db-08dbbede9853 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: heTj4JjCEsrLA3q8KbZH3JapZMyowrLm/C43JsVvG+SvsLI1H+pvL3h3rYwCzmM8BfMpzImdVAyqnp63v5/0xNbmvV/VY8l8rXUFLmF8TzfhFvR1WC85I1vfhTL5Yoa6rzvIGWCaHjHOZ9nWZzIeF2VB+xqd8Y6LNaCAIShLDtZMLgVdXi25MhejFbSPiCt9vQ4DY6GrWrvQkX0C1HyJH2xgSQaxM1WTeJzfj1EFLdx5P8htGY1PvAnmXCDclvWSfBVhrNMbhwY+YiKjVmPyhjzVgBM6yX7JW/+0XRk9skXFOCa7Xm8Z5a4lp77VFbIfLLyF/oYr2Lj3JWkn1GHcCK34fYjo5KbnueAKyAfCgaG6qE/GSo4REoWUqQFiN2zW9PS6CY9uPw31KNe+vwip9VXguyFgLUBa3EpBI7ZQfkvBv2ZSsuz5D4pRQxThaBpqqGh2qFdExGHVQJej9YEQ2ia9zn3qKp/+oigj0KhHZ/B9yWEgsDy3NkrkCPnJKTiB+5rAaZ/yPDILjB+JJGqgb9aOzfUUf/jwVyj7rkc1DJDXKySivH25VZlLT9zZtKKJ7z3DNT/BfAz+pTSM1j7ndjMl07kConx8N++kKKiMo8a+aKKboLUrmxIz1XeF4tJu X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: haYURybtI9TDvVrD1DQlOgIgYx9XBwI+VSof9qCg1W/8S1czVTS2n3VCBJeWGwTTjrbswBxikTq6Og7crYb8KsvGbRx7EOIrA9fwebnSLxKUfJYg5+jpM8FIo4NUk0NsIVRw6l/OWBGj92pA6fgXwdivRgwInv8FuyWY+JaChOZBBRpdFafifvMFAqA2xCvu0k0dXYL0L3/7owryBryecJwOQY4f6MjJn5mdqGjtd6f+0S6qfGwZ1oUZtkaZUwqOK33Sb6se5ttkTtUhADAdouMamvrDPHjj17Dd/6I/FGBCvxVj7imtlGlhxRJJdZUoobbLdtC6igWvtqtUndwlSsQ4FR/rvGletm1BLiI1ehIbt2EsgVOpxIBNW1B2fVkYOYdnavX2QIXgqkVugPPLgklw+0MiubBhXkTevKhdgHvm4vPePKCcebVy5nMEI6UmL/gn7z+HbTYZ9sgydyOtbWthJ3N45fDQ/lm3WZTV5HehIhqlq4DEJQpQHaKO6K46/as352xvNMKGNulCs1gj5V4jLXEy1vpyxhiRGKgJBmd2HfNQSxsiIKz4f6nD7YtdiZZzHM3aaDaioNf/uPIWtCqbr/qvQbF7t2PHgxzKShdWgi9iD00rHSZn1r087KupMoefOwIF/rLL7H/MopkJFTmUaHARKURjARLFzOwyWkjN+L+/uqMw2VLvWQ4eFGgM5BXfinBV8xyNJCIDW6mCMgiJyTsYLNM5bg6LYLN/X3SayfNwEHIz8mUIMHYX29/bAh2hrVd9b+9rM31s2/9ZrIEu2vZZJ8MIIlALb9e/PPZpPr5OznWY3n+6PXVJ6jNk6E2t6NKI6KN3YUnydlXkxpQA+pZAROR+yHYG6e6N4dMa6thRd+Bj7G+XRDVs9fGikbeGygX7gEozlihLCbvLwfih9Fii8XOwGi23uti05FxfaDQtt7WJbsViCKOLF2hSC3Za0c7mu0JbbH1V0v567cQokN1vq0GqM/Q6vWYyfAKHWVG96a1248hT7L6/cEDC9mSFVrcwDlksRR6z3eouKPFWa25Vyu7QrHYMzx/9dMZBvson20wy+wmKHLqFti9bY2LgZQgDNS2TN/WAjpVJJczeyaSZpYd29osrYZI9Vtn/Ox8HfIbltDRDa+h9+SmMxFZDmclM+cJBm2bS9ljKlPTr2FqnHxJZFV84rCnmktn2VSoTWROoDGNfwVJmRPEGtElYlxGHxPACOSVe5YbzfHGAoLSiF+NW3c2SdAfGM/ioYim0wtg7Yjddoy1Z5nkf X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa6ea8f4-0277-459c-42db-08dbbede9853 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:19:05.2991 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 33/61] avcodec/speedhqdec: Avoid unnecessary VLC structure 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: UEzKoehq/dil Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/speedhqdec.c | 52 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/libavcodec/speedhqdec.c b/libavcodec/speedhqdec.c index f3e84ab348..d3605b0649 100644 --- a/libavcodec/speedhqdec.c +++ b/libavcodec/speedhqdec.c @@ -71,10 +71,10 @@ static const uint8_t unscaled_quant_matrix[64] = { 27, 29, 35, 38, 46, 56, 69, 83 }; -static VLC dc_lum_vlc_le; -static VLC dc_chroma_vlc_le; -static VLC dc_alpha_run_vlc_le; -static VLC dc_alpha_level_vlc_le; +static VLCElem dc_lum_vlc_le[512]; +static VLCElem dc_chroma_vlc_le[514]; +static VLCElem dc_alpha_run_vlc_le[160]; +static VLCElem dc_alpha_level_vlc_le[288]; static RL_VLC_ELEM speedhq_rl_vlc[674]; @@ -83,9 +83,9 @@ static inline int decode_dc_le(GetBitContext *gb, int component) int code, diff; if (component == 0 || component == 3) { - code = get_vlc2(gb, dc_lum_vlc_le.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, dc_lum_vlc_le, DC_VLC_BITS, 2); } else { - code = get_vlc2(gb, dc_chroma_vlc_le.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, dc_chroma_vlc_le, DC_VLC_BITS, 2); } if (!code) { diff = 0; @@ -109,7 +109,7 @@ static inline int decode_alpha_block(const SHQContext *s, GetBitContext *gb, uin int run, level; UPDATE_CACHE_LE(re, gb); - GET_VLC(run, re, gb, dc_alpha_run_vlc_le.table, ALPHA_VLC_BITS, 2); + GET_VLC(run, re, gb, dc_alpha_run_vlc_le, ALPHA_VLC_BITS, 2); if (run < 0) break; i += run; @@ -117,7 +117,7 @@ static inline int decode_alpha_block(const SHQContext *s, GetBitContext *gb, uin return AVERROR_INVALIDDATA; UPDATE_CACHE_LE(re, gb); - GET_VLC(level, re, gb, dc_alpha_level_vlc_le.table, ALPHA_VLC_BITS, 2); + GET_VLC(level, re, gb, dc_alpha_level_vlc_le, ALPHA_VLC_BITS, 2); block[i++] = level; } @@ -506,11 +506,11 @@ static av_cold void compute_alpha_vlcs(void) av_assert0(entry == FF_ARRAY_ELEMS(run_code)); - VLC_INIT_LE_SPARSE_STATIC(&dc_alpha_run_vlc_le, ALPHA_VLC_BITS, - FF_ARRAY_ELEMS(run_code), - run_bits, 1, 1, - run_code, 2, 2, - run_symbols, 2, 2, 160); + VLC_INIT_STATIC_SPARSE_TABLE(dc_alpha_run_vlc_le, ALPHA_VLC_BITS, + FF_ARRAY_ELEMS(run_code), + run_bits, 1, 1, + run_code, 2, 2, + run_symbols, 2, 2, VLC_INIT_LE); /* Initialize VLC for alpha level. */ entry = 0; @@ -546,24 +546,24 @@ static av_cold void compute_alpha_vlcs(void) av_assert0(entry == FF_ARRAY_ELEMS(level_code)); - VLC_INIT_LE_SPARSE_STATIC(&dc_alpha_level_vlc_le, ALPHA_VLC_BITS, - FF_ARRAY_ELEMS(level_code), - level_bits, 1, 1, - level_code, 2, 2, - level_symbols, 2, 2, 288); + VLC_INIT_STATIC_SPARSE_TABLE(dc_alpha_level_vlc_le, ALPHA_VLC_BITS, + FF_ARRAY_ELEMS(level_code), + level_bits, 1, 1, + level_code, 2, 2, + level_symbols, 2, 2, VLC_INIT_LE); } static av_cold void speedhq_static_init(void) { /* Exactly the same as MPEG-2, except for a little-endian reader. */ - VLC_INIT_CUSTOM_STATIC(&dc_lum_vlc_le, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_lum_bits, 1, 1, - ff_mpeg12_vlc_dc_lum_code, 2, 2, - VLC_INIT_OUTPUT_LE, 512); - VLC_INIT_CUSTOM_STATIC(&dc_chroma_vlc_le, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_chroma_bits, 1, 1, - ff_mpeg12_vlc_dc_chroma_code, 2, 2, - VLC_INIT_OUTPUT_LE, 514); + VLC_INIT_STATIC_TABLE(dc_lum_vlc_le, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_lum_bits, 1, 1, + ff_mpeg12_vlc_dc_lum_code, 2, 2, + VLC_INIT_OUTPUT_LE); + VLC_INIT_STATIC_TABLE(dc_chroma_vlc_le, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_chroma_bits, 1, 1, + ff_mpeg12_vlc_dc_chroma_code, 2, 2, + VLC_INIT_OUTPUT_LE); ff_init_2d_vlc_rl(ff_speedhq_vlc_table, speedhq_rl_vlc, ff_speedhq_run, ff_speedhq_level, SPEEDHQ_RL_NB_ELEMS, From patchwork Tue Sep 26 22:17:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43946 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210327pzh; Tue, 26 Sep 2023 15:21:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF+jAIvS77vZu324algryaKCpIjbRbdcGNgggTF95tTl44Faf8R6yJ+5rWRajb7u+c9j3bS X-Received: by 2002:a05:6402:899:b0:530:db58:61c8 with SMTP id e25-20020a056402089900b00530db5861c8mr297013edy.23.1695766880886; Tue, 26 Sep 2023 15:21:20 -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 c23-20020aa7d617000000b00530c2e7963asi7216009edr.168.2023.09.26.15.21.20; Tue, 26 Sep 2023 15:21:20 -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=YFRpFsZl; 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 AD75A68CB25; Wed, 27 Sep 2023 01:19:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2043.outbound.protection.outlook.com [40.92.89.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 691C668CB11 for ; Wed, 27 Sep 2023 01:19:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B0jLSWHOxY30qCfE183sxEGdEdblcoWMg04piGq67cW49K24BO3CxRywkn5G151sc7HCjGX7Kuf/6M+aMNbvMSlRoeWNUJt8m+N0Slqwt1LXiUA4icK6M3YTrf0Jafi6d8hkIBs+z4nXImWHp42aNKbxj0FYNpXAe7D6Xc8WjXEa0RAYM7MXrdKgAX4RRxNYZ7SR6YBnlQm4bdzmsD/95JiGf3+YCtthdLwqviozZBG9jwjX58YVa1sQfhg6he8Y7WZoRmY5BXcTCepptBA3oXxz6tajL6ss6kkSK/SjQfQx3jdjY7WMNB5z1dyWHZpNyKE1ZPNcQYImD89FizVd4A== 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=k6S5j1MZWK2BqHIfIL9szOEQrdVc/zLM3uo/Y7+iu5Y=; b=CQBRoYwaqmgWiqlfcXF0jzKVXvR7mKDFJGfKoPXxn6U5777YnEUxCuwXEsZBStem/hNzI4huNGXlx4hfY/dsRhEdrIVjS6nmZhwcHgzVgos0qW74nPviy7/78eglW75Og+OkRgZkMsQ3ojQN5luV4net6j8PDiKxPP0jHRXgBqkFN619A1iOhtYenZmAgJv8apkI921UCbr2WxZpOg5lBNJYeUiuMnw3EDKmJ3UCceADOfrGYZMy826Q+HfEMHaQ6xcChinw4fC7zvNC0kVd4E2k10McyfSQK+q0W3xgKsXHM+3jLplHxR5IgtvENVmRMw3Zzaw3XhU7mmC+vlpopw== 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=k6S5j1MZWK2BqHIfIL9szOEQrdVc/zLM3uo/Y7+iu5Y=; b=YFRpFsZlVa4QmGOI/wsfIVcB8kG5pobfdzBUs0/vvWr+cvXObZKd1Icgj5V9hLFjwZrxTYnZsi3//7Zoj7DhVAFZSHrQWenVZLLxJTyaNYPpHSOg42MVtnltmMfPTfpqzlyr9N+1IKSk24pOXS0JRs6RLoB+6M1XG1y0Uyvw7QulTuqkQuh/vs63DTHNs4CeW9OW4qEo7rX+3Q1sCsOSd+qKbWeWObJX71o+Aq3HTTD3oClkP+4xppgmJRWM5qSC8vIGYJT2nXWAY+3wQvwkKUhYrAd0mXl2m9bdXi8Ns/a60ThN0yDF2uS8oLsw8FECzBKGLFIFaSiUx7MysT6kjA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:19:14 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:19:13 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:05 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [nTaIyDzz4/XNZaoF8Gk03gyMraWQrnUJ] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-33-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fb94585-0caf-4398-2dc3-08dbbede9d51 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u7EdfWG0ZPzk+sNrw3vqi/bVz8fF0sYEYE8GfrgY2L1W6jzPCOdrg/airVqBxXWuVzLTUJEei5m8IQ5k54CRwQmZKMhuLx/AyofrEzbsWMQbnD4OtSIUPbge8hzuDwSlogMkx/S4nT5cT5lbg1e6pc4VzGcR//yCZUSwuIXHw2yeDiDWRnJBoOa8vVQpoeN7dcGVLbCdSLCj2/ojPID8kcrNecjktE2KEL1p4wEYTkiGaBcBFll7zq6C5xgSpmJ+76k1LQrXRpMe0Lx2rrb2i+Hql0JX5tIsSKO4VZ1XTbV0Gb71xzn+QXgmJPqIAm4COO/Rp5nMoQDLcvWv5dxuR9Wbt+2m0fA8oL1SQ/wspHz6sRwQEZNVXZXoRWupGVDD737YGjGpP4Ea/K/eKQAHxHJj+2Yt76aq7zBLRxjLk8HiHWeHMpMXrHBagcclX+Hz2kPz9gCRRlfjCHdnkoeWefdnScmCNoPNaM0ic15ZbADhaJ44q591Ih4Q0NzrurtuWq894Qp9JWwp4uTHkrtym8HgScn/D9/MnHFMzWA3daxdsqbH21BiwtMSjTL019xwNPbX9xYPlSnJXE8PdUNO+YvHM/iwtrpb5G1DlUJ65jyWRlVlOgQ/TUaFmBf6hPVj X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tSthMMVTRZcIlt0O/lOpc8uqKmUzQguszatJj5m90SmgdmbGyzlaYtNaoBTeRpx9zc1SrOuvfjVfo82WZ8pHiPBLHTdvgUT9GGpSzhduavObnSWHn176k89+R3z7kr71sAFDJLI3j7fRWNP0+6cNDiAMhBnp+O2AHrhs97gYkgfGvf9cZUKasb3u0QHj7ECf341z1tHCdpy9rMdsQgQgW9mrTHzgw5+hWQeXGx3D0miDlIDsj4zGeEatFIpUvf12G6IvX6XALvFc6yyG6qL8q7dMnwiPHrRJMJY4QtGvA/T07ROPrZGazLC1PCDmIdrJFUlRuiThhuIPWRVqlBs6/jKJmMVcMFsH8rXxWG4QlzSEKy1NVxQXRl8NdNHMLKYm14auq9eAyqpUUI7zwzwOjMGtADGHJgCtlfIm99jpdqQc+HKlElTBCMz9hBIRQy8VeX2X+sV2iRZd/0sRdQtt+2d4OlXe1lKS54EjiZzv14T2UyWGVTkmVQEpdPG97mdBAdR61ubInB/J5lLhWWnfiZh9e9JgSIBwJLP0eyRHFxabzKmnDRGs2gpi1xlMp7XhvUNF1ABfIzmbCjHQvRZxRSF91Y4/rh8v8lG7tWpI0p5WJZDOz7PpPUO66SwsblJ/+9q6V8F32qINWeIKZmE9rj80oXeJBmUw/zA1TDd9DjLBIzTLsiJ2Wy4LY9tmI2dHxTPRoOFZO4akCcOZyfrBY2D2Q6CtUpnEGbs65I7/VQRNP3r22tCiy7VfEakGLHkXqTCRTNaKba/iPMLLUH9UBfcV0xMxeMYKoxR1NGqxwCmDJ0/+UeJHb2XmRuMtW8NQTFIZiuBnrAKD0nmIANM0poXJk+RETpbAaHxKUa1N3jDZa9csMaGVcsOIz7WbZV0eejuGbf0DkqYXwYfkFr32x/j2BeN3w5Dh5n/p8Lc89RtUUSXvKhMqcutVbKeioV949aCHZReLOleEadF6QR1uMdQBx2H4Cezzz3f61t/txfTrps4Am/WAM4Qmu6+S0x8Rqr3QLy6bLH3i49P6TGdOdEAeO1aGUr7+SHN6Nb+5E43V2LnyIlyXxqfihq8E+2D55s2f8gVKrNn4ZU38WVkZ68EBPTLCjdbXz+QmiPc0LO2HtWE+to3MgJ6e6a4Wcy0dgo7a7437Ja+GDMyH5ViNiYrowaY0fcfoIEOmmDisH4nS6y/hff+ckWCSEyrcRN/gv5HzS39WkPpZn8DlOdmvnAv77sJej/RlqBocj7281hq4XX+pub33V29RoBlPZTBu X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fb94585-0caf-4398-2dc3-08dbbede9d51 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:19:13.7222 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 34/61] avcodec/vc1: Avoid superfluous VLC structures 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: y7nR4+zvGjB6 For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in some cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/vc1.c | 60 +++++++------- libavcodec/vc1.h | 10 +-- libavcodec/vc1_block.c | 74 +++++++++--------- libavcodec/vc1data.c | 36 ++++----- libavcodec/vc1data.h | 36 ++++----- libavcodec/vc1dec.c | 174 +++++++++++++++++------------------------ 6 files changed, 180 insertions(+), 210 deletions(-) diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 795c6db541..e234192fdd 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -104,7 +104,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) height = v->s.mb_height >> v->field_mode; stride = v->s.mb_stride; invert = get_bits1(gb); - imode = get_vlc2(gb, ff_vc1_imode_vlc.table, VC1_IMODE_VLC_BITS, 1); + imode = get_vlc2(gb, ff_vc1_imode_vlc, VC1_IMODE_VLC_BITS, 1); *raw_flag = 0; switch (imode) { @@ -126,7 +126,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) y = offset = 0; // decode bitplane as one long line for (; y < height * width; y += 2) { - code = get_vlc2(gb, ff_vc1_norm2_vlc.table, VC1_NORM2_VLC_BITS, 1); + code = get_vlc2(gb, ff_vc1_norm2_vlc, VC1_NORM2_VLC_BITS, 1); *planep++ = code & 1; offset++; if (offset == width) { @@ -146,7 +146,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) if (!(height % 3) && (width % 3)) { // use 2x3 decoding for (y = 0; y < height; y += 3) { for (x = width & 1; x < width; x += 2) { - code = get_vlc2(gb, ff_vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2); + code = get_vlc2(gb, ff_vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 2); if (code < 0) { av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n"); return -1; @@ -166,7 +166,7 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) planep += (height & 1) * stride; for (y = height & 1; y < height; y += 2) { for (x = width % 3; x < width; x += 3) { - code = get_vlc2(gb, ff_vc1_norm6_vlc.table, VC1_NORM6_VLC_BITS, 2); + code = get_vlc2(gb, ff_vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 2); if (code < 0) { av_log(v->s.avctx, AV_LOG_DEBUG, "invalid NORM-6 VLC\n"); return -1; @@ -765,7 +765,7 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) /* Hopefully this is correct for P-frames */ v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables v->cbptab = get_bits(gb, 2); - v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab]; + v->cbpcy_vlc = ff_vc1_cbpcy_p_vlc[v->cbptab]; if (v->dquant) { av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); @@ -804,7 +804,7 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) v->s.mv_table_index = get_bits(gb, 2); v->cbptab = get_bits(gb, 2); - v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab]; + v->cbpcy_vlc = ff_vc1_cbpcy_p_vlc[v->cbptab]; if (v->dquant) { av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); @@ -1061,19 +1061,19 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) "Imode: %i, Invert: %i\n", status>>1, status&1); v->mbmodetab = get_bits(gb, 2); if (v->fourmvswitch) - v->mbmode_vlc = &ff_vc1_intfr_4mv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_intfr_4mv_mbmode_vlc[v->mbmodetab]; else - v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab]; v->imvtab = get_bits(gb, 2); - v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab]; + v->imv_vlc = ff_vc1_1ref_mvdata_vlc[v->imvtab]; // interlaced p-picture cbpcy range is [1, 63] v->icbptab = get_bits(gb, 3); - v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab]; + v->cbpcy_vlc = ff_vc1_icbpcy_vlc[v->icbptab]; v->twomvbptab = get_bits(gb, 2); - v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[v->twomvbptab]; + v->twomvbp_vlc = ff_vc1_2mv_block_pattern_vlc[v->twomvbptab]; if (v->fourmvswitch) { v->fourmvbptab = get_bits(gb, 2); - v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; + v->fourmvbp_vlc = ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; } } } @@ -1158,7 +1158,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) /* Hopefully this is correct for P-frames */ v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables v->cbptab = get_bits(gb, 2); - v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab]; + v->cbpcy_vlc = ff_vc1_cbpcy_p_vlc[v->cbptab]; } else if (v->fcm == ILACE_FRAME) { // frame interlaced v->qs_last = v->s.quarter_sample; v->s.quarter_sample = 1; @@ -1167,18 +1167,18 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) v->mbmodetab = get_bits(gb, 3); v->imvtab = get_bits(gb, 2 + v->numref); if (!v->numref) - v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab]; + v->imv_vlc = ff_vc1_1ref_mvdata_vlc[v->imvtab]; else - v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[v->imvtab]; + v->imv_vlc = ff_vc1_2ref_mvdata_vlc[v->imvtab]; v->icbptab = get_bits(gb, 3); - v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab]; + v->cbpcy_vlc = ff_vc1_icbpcy_vlc[v->icbptab]; if ((v->mv_mode == MV_PMODE_INTENSITY_COMP && v->mv_mode2 == MV_PMODE_MIXED_MV) || v->mv_mode == MV_PMODE_MIXED_MV) { v->fourmvbptab = get_bits(gb, 2); - v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; - v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab]; + v->fourmvbp_vlc = ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; + v->mbmode_vlc = ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab]; } else { - v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab]; } } if (v->dquant) { @@ -1234,16 +1234,16 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) "Imode: %i, Invert: %i\n", status>>1, status&1); v->mbmodetab = get_bits(gb, 3); if (v->mv_mode == MV_PMODE_MIXED_MV) - v->mbmode_vlc = &ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_if_mmv_mbmode_vlc[v->mbmodetab]; else - v->mbmode_vlc = &ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_if_1mv_mbmode_vlc[v->mbmodetab]; v->imvtab = get_bits(gb, 3); - v->imv_vlc = &ff_vc1_2ref_mvdata_vlc[v->imvtab]; + v->imv_vlc = ff_vc1_2ref_mvdata_vlc[v->imvtab]; v->icbptab = get_bits(gb, 3); - v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab]; + v->cbpcy_vlc = ff_vc1_icbpcy_vlc[v->icbptab]; if (v->mv_mode == MV_PMODE_MIXED_MV) { v->fourmvbptab = get_bits(gb, 2); - v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; + v->fourmvbp_vlc = ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; } v->numref = 1; // interlaced field B pictures are always 2-ref } else if (v->fcm == ILACE_FRAME) { @@ -1268,16 +1268,16 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " "Imode: %i, Invert: %i\n", status>>1, status&1); v->mbmodetab = get_bits(gb, 2); - v->mbmode_vlc = &ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab]; + v->mbmode_vlc = ff_vc1_intfr_non4mv_mbmode_vlc[v->mbmodetab]; v->imvtab = get_bits(gb, 2); - v->imv_vlc = &ff_vc1_1ref_mvdata_vlc[v->imvtab]; + v->imv_vlc = ff_vc1_1ref_mvdata_vlc[v->imvtab]; // interlaced p/b-picture cbpcy range is [1, 63] v->icbptab = get_bits(gb, 3); - v->cbpcy_vlc = &ff_vc1_icbpcy_vlc[v->icbptab]; + v->cbpcy_vlc = ff_vc1_icbpcy_vlc[v->icbptab]; v->twomvbptab = get_bits(gb, 2); - v->twomvbp_vlc = &ff_vc1_2mv_block_pattern_vlc[v->twomvbptab]; + v->twomvbp_vlc = ff_vc1_2mv_block_pattern_vlc[v->twomvbptab]; v->fourmvbptab = get_bits(gb, 2); - v->fourmvbp_vlc = &ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; + v->fourmvbp_vlc = ff_vc1_4mv_block_pattern_vlc[v->fourmvbptab]; } else { v->mv_mode = get_bits1(gb) ? MV_PMODE_1MV : MV_PMODE_1MV_HPEL_BILIN; v->qs_last = v->s.quarter_sample; @@ -1295,7 +1295,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) "Imode: %i, Invert: %i\n", status>>1, status&1); v->s.mv_table_index = get_bits(gb, 2); v->cbptab = get_bits(gb, 2); - v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[v->cbptab]; + v->cbpcy_vlc = ff_vc1_cbpcy_p_vlc[v->cbptab]; } if (v->dquant) { diff --git a/libavcodec/vc1.h b/libavcodec/vc1.h index 3b6be78141..0e01458c89 100644 --- a/libavcodec/vc1.h +++ b/libavcodec/vc1.h @@ -279,7 +279,7 @@ typedef struct VC1Context{ */ uint8_t mvrange; ///< Extended MV range flag uint8_t pquantizer; ///< Uniform (over sequence) quantizer in use - VLC *cbpcy_vlc; ///< CBPCY VLC table + const VLCElem *cbpcy_vlc; ///< CBPCY VLC table int tt_index; ///< Index for Transform Type tables (to decode TTMB) uint8_t* mv_type_mb_plane; ///< bitplane for mv_type == (4MV) uint8_t* direct_mb_plane; ///< bitplane for "direct" MBs @@ -334,10 +334,10 @@ typedef struct VC1Context{ int intcomp; uint8_t lumscale2; ///< for interlaced field P picture uint8_t lumshift2; - VLC* mbmode_vlc; - VLC* imv_vlc; - VLC* twomvbp_vlc; - VLC* fourmvbp_vlc; + const VLCElem *mbmode_vlc; + const VLCElem *imv_vlc; + const VLCElem *twomvbp_vlc; + const VLCElem *fourmvbp_vlc; uint8_t twomvbp; uint8_t fourmvbp; uint8_t* fieldtx_plane; diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index 751ea57617..a6ee4922f9 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -227,7 +227,7 @@ static void vc1_put_blocks_clamped(VC1Context *v, int put_signed) * @param _dmv_y Vertical differential for decoded MV */ #define GET_MVDATA(_dmv_x, _dmv_y) \ - index = 1 + get_vlc2(gb, ff_vc1_mv_diff_vlc[s->mv_table_index].table, \ + index = 1 + get_vlc2(gb, ff_vc1_mv_diff_vlc[s->mv_table_index], \ VC1_MV_DIFF_VLC_BITS, 2); \ if (index > 36) { \ mb_has_coeffs = 1; \ @@ -282,7 +282,7 @@ static av_always_inline void get_mvdata_interlaced(VC1Context *v, int *dmv_x, } extend_x = v->dmvrange & 1; extend_y = (v->dmvrange >> 1) & 1; - index = get_vlc2(gb, v->imv_vlc->table, bits, 3); + index = get_vlc2(gb, v->imv_vlc, bits, 3); if (index == esc) { *dmv_x = get_bits(gb, v->k_x); *dmv_y = get_bits(gb, v->k_y); @@ -519,7 +519,7 @@ static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip, GetBitContext *gb = &v->s.gb; int index, run, level, lst, sign; - index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3); + index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset], AC_VLC_BITS, 3); if (index < 0) return index; if (index != ff_vc1_ac_sizes[codingset] - 1) { @@ -530,7 +530,7 @@ static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip, } else { int escape = decode210(gb); if (escape != 2) { - index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset].table, AC_VLC_BITS, 3); + index = get_vlc2(gb, ff_vc1_ac_coeff_table[codingset], AC_VLC_BITS, 3); if (index >= ff_vc1_ac_sizes[codingset] - 1U) return AVERROR_INVALIDDATA; run = vc1_index_decode_table[codingset][index][0]; @@ -1124,10 +1124,10 @@ static int vc1_decode_p_block(VC1Context *v, int16_t block[64], int n, s->bdsp.clear_block(block); if (ttmb == -1) { - ttblk = ff_vc1_ttblk_to_tt[v->tt_index][get_vlc2(gb, ff_vc1_ttblk_vlc[v->tt_index].table, VC1_TTBLK_VLC_BITS, 1)]; + ttblk = ff_vc1_ttblk_to_tt[v->tt_index][get_vlc2(gb, ff_vc1_ttblk_vlc[v->tt_index], VC1_TTBLK_VLC_BITS, 1)]; } if (ttblk == TT_4X4) { - subblkpat = ~(get_vlc2(gb, ff_vc1_subblkpat_vlc[v->tt_index].table, VC1_SUBBLKPAT_VLC_BITS, 1) + 1); + subblkpat = ~(get_vlc2(gb, ff_vc1_subblkpat_vlc[v->tt_index], VC1_SUBBLKPAT_VLC_BITS, 1) + 1); } if ((ttblk != TT_8X8 && ttblk != TT_4X4) && ((v->ttmbf || (ttmb != -1 && (ttmb & 8) && !first_block)) @@ -1328,7 +1328,7 @@ static int vc1_decode_p_mb(VC1Context *v) } else if (mb_has_coeffs) { if (s->mb_intra) s->ac_pred = get_bits1(gb); - cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); GET_MQUANT(); } else { mquant = v->pq; @@ -1337,7 +1337,7 @@ static int vc1_decode_p_mb(VC1Context *v) s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && !s->mb_intra && mb_has_coeffs) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); if (!s->mb_intra) ff_vc1_mc_1mv(v, 0); dst_idx = 0; @@ -1393,7 +1393,7 @@ static int vc1_decode_p_mb(VC1Context *v) int intra_count = 0, coded_inter = 0; int is_intra[6], is_coded[6]; /* Get CBPCY */ - cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); for (i = 0; i < 6; i++) { val = ((cbp >> (5 - i)) & 1); s->dc_val[0][s->block_index[i]] = 0; @@ -1445,7 +1445,7 @@ static int vc1_decode_p_mb(VC1Context *v) s->ac_pred = 0; } if (!v->ttmbf && coded_inter) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); for (i = 0; i < 6; i++) { dst_idx += i >> 2; off = (i & 4) ? 0 : ((i & 1) * 8 + (i & 2) * 4 * s->linesize); @@ -1539,9 +1539,9 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) skipped = v->s.mbskip_table[mb_pos]; if (!skipped) { if (v->fourmvswitch) - idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_INTFR_4MV_MBMODE_VLC_BITS, 2); // try getting this done + idx_mbmode = get_vlc2(gb, v->mbmode_vlc, VC1_INTFR_4MV_MBMODE_VLC_BITS, 2); // try getting this done else - idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 2); // in a single line + idx_mbmode = get_vlc2(gb, v->mbmode_vlc, VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 2); // in a single line switch (ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][0]) { /* store the motion vector type in a flag (useful later) */ case MV_PMODE_INTFR_4MV: @@ -1583,7 +1583,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb); mb_has_coeffs = get_bits1(gb); if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb); GET_MQUANT(); s->current_picture.qscale_table[mb_pos] = mquant; @@ -1617,13 +1617,13 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) } else { // inter MB mb_has_coeffs = ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][3]; if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); if (ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][0] == MV_PMODE_INTFR_2MV_FIELD) { - v->twomvbp = get_vlc2(gb, v->twomvbp_vlc->table, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 1); + v->twomvbp = get_vlc2(gb, v->twomvbp_vlc, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 1); } else { if ((ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][0] == MV_PMODE_INTFR_4MV) || (ff_vc1_mbmode_intfrp[v->fourmvswitch][idx_mbmode][0] == MV_PMODE_INTFR_4MV_FIELD)) { - v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc->table, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); + v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); } } s->mb_intra = v->is_intra[s->mb_x] = 0; @@ -1672,7 +1672,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) GET_MQUANT(); // p. 227 s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && cbp) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); for (i = 0; i < 6; i++) { s->dc_val[0][s->block_index[i]] = 0; dst_idx += i >> 2; @@ -1742,7 +1742,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) mquant = v->pq; /* Lossy initialization */ - idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_IF_MBMODE_VLC_BITS, 2); + idx_mbmode = get_vlc2(gb, v->mbmode_vlc, VC1_IF_MBMODE_VLC_BITS, 2); if (idx_mbmode <= 1) { // intra MB v->is_intra[s->mb_x] = 0x3f; // Set the bitfield to all 1. s->mb_intra = 1; @@ -1757,7 +1757,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb); mb_has_coeffs = idx_mbmode & 1; if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_ICBPCY_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2); dst_idx = 0; for (i = 0; i < 6; i++) { v->a_avail = v->c_avail = 0; @@ -1792,7 +1792,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) ff_vc1_mc_1mv(v, 0); mb_has_coeffs = !(idx_mbmode & 2); } else { // 4-MV - v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc->table, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); + v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); for (i = 0; i < 4; i++) { dmv_x = dmv_y = pred_flag = 0; if (v->fourmvbp & (8 >> i)) @@ -1804,13 +1804,13 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) mb_has_coeffs = idx_mbmode & 1; } if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); if (cbp) { GET_MQUANT(); } s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && cbp) { - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); } dst_idx = 0; for (i = 0; i < 6; i++) { @@ -1914,12 +1914,12 @@ static int vc1_decode_b_mb(VC1Context *v) return 0; } if (direct) { - cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); GET_MQUANT(); s->mb_intra = 0; s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); dmv_x[0] = dmv_y[0] = dmv_x[1] = dmv_y[1] = 0; ff_vc1_pred_b_mv(v, dmv_x, dmv_y, direct, bmvtype); vc1_b_mc(v, dmv_x, dmv_y, direct, bmvtype); @@ -1952,11 +1952,11 @@ static int vc1_decode_b_mb(VC1Context *v) } if (s->mb_intra) s->ac_pred = get_bits1(gb); - cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); GET_MQUANT(); s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && !s->mb_intra && mb_has_coeffs) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); } } dst_idx = 0; @@ -2025,7 +2025,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) mquant = v->pq; /* Lossy initialization */ s->mb_intra = 0; - idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_IF_MBMODE_VLC_BITS, 2); + idx_mbmode = get_vlc2(gb, v->mbmode_vlc, VC1_IF_MBMODE_VLC_BITS, 2); if (idx_mbmode <= 1) { // intra MB v->is_intra[s->mb_x] = 0x3f; // Set the bitfield to all 1. s->mb_intra = 1; @@ -2040,7 +2040,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb); mb_has_coeffs = idx_mbmode & 1; if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_ICBPCY_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_ICBPCY_VLC_BITS, 2); dst_idx = 0; for (i = 0; i < 6; i++) { v->a_avail = v->c_avail = 0; @@ -2118,7 +2118,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) if (fwd) bmvtype = BMV_TYPE_FORWARD; v->bmvtype = bmvtype; - v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc->table, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); + v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); for (i = 0; i < 4; i++) { dmv_x[0] = dmv_y[0] = pred_flag[0] = 0; dmv_x[1] = dmv_y[1] = pred_flag[1] = 0; @@ -2134,13 +2134,13 @@ static int vc1_decode_b_mb_intfi(VC1Context *v) mb_has_coeffs = idx_mbmode & 1; } if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); if (cbp) { GET_MQUANT(); } s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && cbp) { - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); } dst_idx = 0; for (i = 0; i < 6; i++) { @@ -2200,7 +2200,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) skipped = v->s.mbskip_table[mb_pos]; if (!skipped) { - idx_mbmode = get_vlc2(gb, v->mbmode_vlc->table, VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 2); + idx_mbmode = get_vlc2(gb, v->mbmode_vlc, VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 2); if (ff_vc1_mbmode_intfrp[0][idx_mbmode][0] == MV_PMODE_INTFR_2MV_FIELD) { twomv = 1; v->blk_mv_type[s->block_index[0]] = 1; @@ -2228,7 +2228,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) fieldtx = v->fieldtx_plane[mb_pos] = get_bits1(gb); mb_has_coeffs = get_bits1(gb); if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); v->s.ac_pred = v->acpred_plane[mb_pos] = get_bits1(gb); GET_MQUANT(); s->current_picture.qscale_table[mb_pos] = mquant; @@ -2323,12 +2323,12 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) if (!skipped) { // inter MB mb_has_coeffs = ff_vc1_mbmode_intfrp[0][idx_mbmode][3]; if (mb_has_coeffs) - cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc->table, VC1_CBPCY_P_VLC_BITS, 2); + cbp = 1 + get_vlc2(&v->s.gb, v->cbpcy_vlc, VC1_CBPCY_P_VLC_BITS, 2); if (!direct) { if (bmvtype == BMV_TYPE_INTERPOLATED && twomv) { - v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc->table, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); + v->fourmvbp = get_vlc2(gb, v->fourmvbp_vlc, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 1); } else if (bmvtype == BMV_TYPE_INTERPOLATED || twomv) { - v->twomvbp = get_vlc2(gb, v->twomvbp_vlc->table, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 1); + v->twomvbp = get_vlc2(gb, v->twomvbp_vlc, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 1); } } @@ -2438,7 +2438,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) GET_MQUANT(); // p. 227 s->current_picture.qscale_table[mb_pos] = mquant; if (!v->ttmbf && cbp) - ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index].table, VC1_TTMB_VLC_BITS, 2); + ttmb = get_vlc2(gb, ff_vc1_ttmb_vlc[v->tt_index], VC1_TTMB_VLC_BITS, 2); for (i = 0; i < 6; i++) { s->dc_val[0][s->block_index[i]] = 0; dst_idx += i >> 2; diff --git a/libavcodec/vc1data.c b/libavcodec/vc1data.c index 5ebf20a0f0..4046ea042f 100644 --- a/libavcodec/vc1data.c +++ b/libavcodec/vc1data.c @@ -102,26 +102,26 @@ const uint8_t ff_vc1_pquant_table[3][32] = { * @todo TODO move this into the context */ //@{ -VLC ff_vc1_imode_vlc; -VLC ff_vc1_norm2_vlc; -VLC ff_vc1_norm6_vlc; +VLCElem ff_vc1_imode_vlc[1 << VC1_IMODE_VLC_BITS]; +VLCElem ff_vc1_norm2_vlc[1 << VC1_NORM2_VLC_BITS]; +VLCElem ff_vc1_norm6_vlc[556]; /* Could be optimized, one table only needs 8 bits */ -VLC ff_vc1_ttmb_vlc[3]; -VLC ff_vc1_mv_diff_vlc[4]; -VLC ff_vc1_cbpcy_p_vlc[4]; -VLC ff_vc1_icbpcy_vlc[8]; -VLC ff_vc1_4mv_block_pattern_vlc[4]; -VLC ff_vc1_2mv_block_pattern_vlc[4]; -VLC ff_vc1_ttblk_vlc[3]; -VLC ff_vc1_subblkpat_vlc[3]; -VLC ff_vc1_intfr_4mv_mbmode_vlc[4]; -VLC ff_vc1_intfr_non4mv_mbmode_vlc[4]; -VLC ff_vc1_if_mmv_mbmode_vlc[8]; -VLC ff_vc1_if_1mv_mbmode_vlc[8]; -VLC ff_vc1_1ref_mvdata_vlc[4]; -VLC ff_vc1_2ref_mvdata_vlc[8]; +const VLCElem *ff_vc1_ttmb_vlc[3]; +const VLCElem *ff_vc1_mv_diff_vlc[4]; +const VLCElem *ff_vc1_cbpcy_p_vlc[4]; +const VLCElem *ff_vc1_icbpcy_vlc[8]; +const VLCElem *ff_vc1_4mv_block_pattern_vlc[4]; +const VLCElem *ff_vc1_2mv_block_pattern_vlc[4]; +const VLCElem *ff_vc1_ttblk_vlc[3]; +const VLCElem *ff_vc1_subblkpat_vlc[3]; +const VLCElem *ff_vc1_intfr_4mv_mbmode_vlc[4]; +const VLCElem *ff_vc1_intfr_non4mv_mbmode_vlc[4]; +const VLCElem *ff_vc1_if_mmv_mbmode_vlc[8]; +const VLCElem *ff_vc1_if_1mv_mbmode_vlc[8]; +const VLCElem *ff_vc1_1ref_mvdata_vlc[4]; +const VLCElem *ff_vc1_2ref_mvdata_vlc[8]; -VLC ff_vc1_ac_coeff_table[8]; +const VLCElem *ff_vc1_ac_coeff_table[8]; //@} diff --git a/libavcodec/vc1data.h b/libavcodec/vc1data.h index 0900469ab2..e71593d023 100644 --- a/libavcodec/vc1data.h +++ b/libavcodec/vc1data.h @@ -56,42 +56,42 @@ extern const uint8_t ff_vc1_mbmode_intfrp[2][15][4]; */ //@{ #define VC1_IMODE_VLC_BITS 4 -extern VLC ff_vc1_imode_vlc; +extern VLCElem ff_vc1_imode_vlc[1 << VC1_IMODE_VLC_BITS]; #define VC1_NORM2_VLC_BITS 3 -extern VLC ff_vc1_norm2_vlc; +extern VLCElem ff_vc1_norm2_vlc[1 << VC1_NORM2_VLC_BITS]; #define VC1_NORM6_VLC_BITS 9 -extern VLC ff_vc1_norm6_vlc; +extern VLCElem ff_vc1_norm6_vlc[556]; /* Could be optimized, one table only needs 8 bits */ #define VC1_TTMB_VLC_BITS 9 //12 -extern VLC ff_vc1_ttmb_vlc[3]; +extern const VLCElem *ff_vc1_ttmb_vlc[3]; #define VC1_MV_DIFF_VLC_BITS 9 //15 -extern VLC ff_vc1_mv_diff_vlc[4]; +extern const VLCElem *ff_vc1_mv_diff_vlc[4]; #define VC1_CBPCY_P_VLC_BITS 9 //14 -extern VLC ff_vc1_cbpcy_p_vlc[4]; +extern const VLCElem *ff_vc1_cbpcy_p_vlc[4]; #define VC1_ICBPCY_VLC_BITS 9 -extern VLC ff_vc1_icbpcy_vlc[8]; +extern const VLCElem *ff_vc1_icbpcy_vlc[8]; #define VC1_4MV_BLOCK_PATTERN_VLC_BITS 6 -extern VLC ff_vc1_4mv_block_pattern_vlc[4]; +extern const VLCElem *ff_vc1_4mv_block_pattern_vlc[4]; #define VC1_2MV_BLOCK_PATTERN_VLC_BITS 3 -extern VLC ff_vc1_2mv_block_pattern_vlc[4]; +extern const VLCElem *ff_vc1_2mv_block_pattern_vlc[4]; #define VC1_TTBLK_VLC_BITS 5 -extern VLC ff_vc1_ttblk_vlc[3]; +extern const VLCElem *ff_vc1_ttblk_vlc[3]; #define VC1_SUBBLKPAT_VLC_BITS 6 -extern VLC ff_vc1_subblkpat_vlc[3]; +extern const VLCElem *ff_vc1_subblkpat_vlc[3]; #define VC1_INTFR_4MV_MBMODE_VLC_BITS 9 -extern VLC ff_vc1_intfr_4mv_mbmode_vlc[4]; +extern const VLCElem *ff_vc1_intfr_4mv_mbmode_vlc[4]; #define VC1_INTFR_NON4MV_MBMODE_VLC_BITS 6 -extern VLC ff_vc1_intfr_non4mv_mbmode_vlc[4]; +extern const VLCElem *ff_vc1_intfr_non4mv_mbmode_vlc[4]; #define VC1_IF_MMV_MBMODE_VLC_BITS 5 -extern VLC ff_vc1_if_mmv_mbmode_vlc[8]; +extern const VLCElem *ff_vc1_if_mmv_mbmode_vlc[8]; #define VC1_IF_1MV_MBMODE_VLC_BITS 5 -extern VLC ff_vc1_if_1mv_mbmode_vlc[8]; +extern const VLCElem *ff_vc1_if_1mv_mbmode_vlc[8]; #define VC1_1REF_MVDATA_VLC_BITS 9 -extern VLC ff_vc1_1ref_mvdata_vlc[4]; +extern const VLCElem *ff_vc1_1ref_mvdata_vlc[4]; #define VC1_2REF_MVDATA_VLC_BITS 9 -extern VLC ff_vc1_2ref_mvdata_vlc[8]; +extern const VLCElem *ff_vc1_2ref_mvdata_vlc[8]; -extern VLC ff_vc1_ac_coeff_table[8]; +extern const VLCElem *ff_vc1_ac_coeff_table[8]; #define VC1_IF_MBMODE_VLC_BITS 5 // as a placeholder for VC1_IF_MMV_MBMODE_VLC_BITS // or VC1_IF_1MV_MBMODE_VLC_BITS since they are the same diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 449d2fea5e..fe0158d1fa 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -470,122 +470,92 @@ av_cold void ff_vc1_init_transposed_scantables(VC1Context *v) v->top_blk_sh = 3; } -static const uint16_t vlc_offs[] = { - 0, 520, 552, 616, 1128, 1160, 1224, 1740, 1772, 1836, 1900, 2436, - 2986, 3050, 3610, 4154, 4218, 4746, 5326, 5390, 5902, 6554, 7658, 8342, - 9304, 9988, 10630, 11234, 12174, 13006, 13560, 14232, 14786, 15432, 16350, 17522, - 20372, 21818, 22330, 22394, 23166, 23678, 23742, 24820, 25332, 25396, 26460, 26980, - 27048, 27592, 27600, 27608, 27616, 27624, 28224, 28258, 28290, 28802, 28834, 28866, - 29378, 29412, 29444, 29960, 29994, 30026, 30538, 30572, 30604, 31120, 31154, 31186, - 31714, 31746, 31778, 32306, 32340, 32372 -}; - static av_cold void vc1_init_static(void) { static VLCElem vlc_table[32372]; - - VLC_INIT_STATIC(&ff_vc1_norm2_vlc, VC1_NORM2_VLC_BITS, 4, - vc1_norm2_bits, 1, 1, - vc1_norm2_codes, 1, 1, 1 << VC1_NORM2_VLC_BITS); - VLC_INIT_STATIC(&ff_vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 64, - vc1_norm6_bits, 1, 1, - vc1_norm6_codes, 2, 2, 556); - VLC_INIT_STATIC(&ff_vc1_imode_vlc, VC1_IMODE_VLC_BITS, 7, - vc1_imode_bits, 1, 1, - vc1_imode_codes, 1, 1, 1 << VC1_IMODE_VLC_BITS); + VLCInitState state = VLC_INIT_STATE(vlc_table); + + VLC_INIT_STATIC_TABLE(ff_vc1_norm2_vlc, VC1_NORM2_VLC_BITS, 4, + vc1_norm2_bits, 1, 1, + vc1_norm2_codes, 1, 1, 0); + VLC_INIT_STATIC_TABLE(ff_vc1_norm6_vlc, VC1_NORM6_VLC_BITS, 64, + vc1_norm6_bits, 1, 1, + vc1_norm6_codes, 2, 2, 0); + VLC_INIT_STATIC_TABLE(ff_vc1_imode_vlc, VC1_IMODE_VLC_BITS, 7, + vc1_imode_bits, 1, 1, + vc1_imode_codes, 1, 1, 0); for (int i = 0; i < 3; i++) { - ff_vc1_ttmb_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 0]]; - ff_vc1_ttmb_vlc[i].table_allocated = vlc_offs[i * 3 + 1] - vlc_offs[i * 3 + 0]; - vlc_init(&ff_vc1_ttmb_vlc[i], VC1_TTMB_VLC_BITS, 16, - vc1_ttmb_bits[i], 1, 1, - vc1_ttmb_codes[i], 2, 2, VLC_INIT_USE_STATIC); - ff_vc1_ttblk_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 1]]; - ff_vc1_ttblk_vlc[i].table_allocated = vlc_offs[i * 3 + 2] - vlc_offs[i * 3 + 1]; - vlc_init(&ff_vc1_ttblk_vlc[i], VC1_TTBLK_VLC_BITS, 8, - vc1_ttblk_bits[i], 1, 1, - vc1_ttblk_codes[i], 1, 1, VLC_INIT_USE_STATIC); - ff_vc1_subblkpat_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 2]]; - ff_vc1_subblkpat_vlc[i].table_allocated = vlc_offs[i * 3 + 3] - vlc_offs[i * 3 + 2]; - vlc_init(&ff_vc1_subblkpat_vlc[i], VC1_SUBBLKPAT_VLC_BITS, 15, - vc1_subblkpat_bits[i], 1, 1, - vc1_subblkpat_codes[i], 1, 1, VLC_INIT_USE_STATIC); - } - for (int i = 0; i < 4; i++) { - ff_vc1_4mv_block_pattern_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 9]]; - ff_vc1_4mv_block_pattern_vlc[i].table_allocated = vlc_offs[i * 3 + 10] - vlc_offs[i * 3 + 9]; - vlc_init(&ff_vc1_4mv_block_pattern_vlc[i], VC1_4MV_BLOCK_PATTERN_VLC_BITS, 16, - vc1_4mv_block_pattern_bits[i], 1, 1, - vc1_4mv_block_pattern_codes[i], 1, 1, VLC_INIT_USE_STATIC); - ff_vc1_cbpcy_p_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 10]]; - ff_vc1_cbpcy_p_vlc[i].table_allocated = vlc_offs[i * 3 + 11] - vlc_offs[i * 3 + 10]; - vlc_init(&ff_vc1_cbpcy_p_vlc[i], VC1_CBPCY_P_VLC_BITS, 64, - vc1_cbpcy_p_bits[i], 1, 1, - vc1_cbpcy_p_codes[i], 2, 2, VLC_INIT_USE_STATIC); - ff_vc1_mv_diff_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 11]]; - ff_vc1_mv_diff_vlc[i].table_allocated = vlc_offs[i * 3 + 12] - vlc_offs[i * 3 + 11]; - vlc_init(&ff_vc1_mv_diff_vlc[i], VC1_MV_DIFF_VLC_BITS, 73, - vc1_mv_diff_bits[i], 1, 1, - vc1_mv_diff_codes[i], 2, 2, VLC_INIT_USE_STATIC); - } - for (int i = 0; i < 8; i++) { - ff_vc1_ac_coeff_table[i].table = &vlc_table[vlc_offs[i * 2 + 21]]; - ff_vc1_ac_coeff_table[i].table_allocated = vlc_offs[i * 2 + 22] - vlc_offs[i * 2 + 21]; - vlc_init(&ff_vc1_ac_coeff_table[i], AC_VLC_BITS, ff_vc1_ac_sizes[i], - &vc1_ac_tables[i][0][1], 8, 4, - &vc1_ac_tables[i][0][0], 8, 4, VLC_INIT_USE_STATIC); - /* initialize interlaced MVDATA tables (2-Ref) */ - ff_vc1_2ref_mvdata_vlc[i].table = &vlc_table[vlc_offs[i * 2 + 22]]; - ff_vc1_2ref_mvdata_vlc[i].table_allocated = vlc_offs[i * 2 + 23] - vlc_offs[i * 2 + 22]; - vlc_init(&ff_vc1_2ref_mvdata_vlc[i], VC1_2REF_MVDATA_VLC_BITS, 126, - vc1_2ref_mvdata_bits[i], 1, 1, - vc1_2ref_mvdata_codes[i], 4, 4, VLC_INIT_USE_STATIC); + ff_vc1_ttmb_vlc[i] = + ff_vlc_init_tables(&state, VC1_TTMB_VLC_BITS, 16, + vc1_ttmb_bits[i], 1, 1, + vc1_ttmb_codes[i], 2, 2, 0); + ff_vc1_ttblk_vlc[i] = + ff_vlc_init_tables(&state, VC1_TTBLK_VLC_BITS, 8, + vc1_ttblk_bits[i], 1, 1, + vc1_ttblk_codes[i], 1, 1, 0); + ff_vc1_subblkpat_vlc[i] = + ff_vlc_init_tables(&state, VC1_SUBBLKPAT_VLC_BITS, 15, + vc1_subblkpat_bits[i], 1, 1, + vc1_subblkpat_codes[i], 1, 1, 0); } for (int i = 0; i < 4; i++) { + ff_vc1_4mv_block_pattern_vlc[i] = + ff_vlc_init_tables(&state, VC1_4MV_BLOCK_PATTERN_VLC_BITS, 16, + vc1_4mv_block_pattern_bits[i], 1, 1, + vc1_4mv_block_pattern_codes[i], 1, 1, 0); + ff_vc1_cbpcy_p_vlc[i] = + ff_vlc_init_tables(&state, VC1_CBPCY_P_VLC_BITS, 64, + vc1_cbpcy_p_bits[i], 1, 1, + vc1_cbpcy_p_codes[i], 2, 2, 0); + ff_vc1_mv_diff_vlc[i] = + ff_vlc_init_tables(&state, VC1_MV_DIFF_VLC_BITS, 73, + vc1_mv_diff_bits[i], 1, 1, + vc1_mv_diff_codes[i], 2, 2, 0); /* initialize 4MV MBMODE VLC tables for interlaced frame P picture */ - ff_vc1_intfr_4mv_mbmode_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 37]]; - ff_vc1_intfr_4mv_mbmode_vlc[i].table_allocated = vlc_offs[i * 3 + 38] - vlc_offs[i * 3 + 37]; - vlc_init(&ff_vc1_intfr_4mv_mbmode_vlc[i], VC1_INTFR_4MV_MBMODE_VLC_BITS, 15, - vc1_intfr_4mv_mbmode_bits[i], 1, 1, - vc1_intfr_4mv_mbmode_codes[i], 2, 2, VLC_INIT_USE_STATIC); + ff_vc1_intfr_4mv_mbmode_vlc[i] = + ff_vlc_init_tables(&state, VC1_INTFR_4MV_MBMODE_VLC_BITS, 15, + vc1_intfr_4mv_mbmode_bits[i], 1, 1, + vc1_intfr_4mv_mbmode_codes[i], 2, 2, 0); /* initialize NON-4MV MBMODE VLC tables for the same */ - ff_vc1_intfr_non4mv_mbmode_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 38]]; - ff_vc1_intfr_non4mv_mbmode_vlc[i].table_allocated = vlc_offs[i * 3 + 39] - vlc_offs[i * 3 + 38]; - vlc_init(&ff_vc1_intfr_non4mv_mbmode_vlc[i], VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 9, - vc1_intfr_non4mv_mbmode_bits[i], 1, 1, - vc1_intfr_non4mv_mbmode_codes[i], 1, 1, VLC_INIT_USE_STATIC); + ff_vc1_intfr_non4mv_mbmode_vlc[i] = + ff_vlc_init_tables(&state, VC1_INTFR_NON4MV_MBMODE_VLC_BITS, 9, + vc1_intfr_non4mv_mbmode_bits[i], 1, 1, + vc1_intfr_non4mv_mbmode_codes[i], 1, 1, 0); /* initialize interlaced MVDATA tables (1-Ref) */ - ff_vc1_1ref_mvdata_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 39]]; - ff_vc1_1ref_mvdata_vlc[i].table_allocated = vlc_offs[i * 3 + 40] - vlc_offs[i * 3 + 39]; - vlc_init(&ff_vc1_1ref_mvdata_vlc[i], VC1_1REF_MVDATA_VLC_BITS, 72, - vc1_1ref_mvdata_bits[i], 1, 1, - vc1_1ref_mvdata_codes[i], 4, 4, VLC_INIT_USE_STATIC); - } - for (int i = 0; i < 4; i++) { + ff_vc1_1ref_mvdata_vlc[i] = + ff_vlc_init_tables(&state, VC1_1REF_MVDATA_VLC_BITS, 72, + vc1_1ref_mvdata_bits[i], 1, 1, + vc1_1ref_mvdata_codes[i], 4, 4, 0); /* Initialize 2MV Block pattern VLC tables */ - ff_vc1_2mv_block_pattern_vlc[i].table = &vlc_table[vlc_offs[i + 49]]; - ff_vc1_2mv_block_pattern_vlc[i].table_allocated = vlc_offs[i + 50] - vlc_offs[i + 49]; - vlc_init(&ff_vc1_2mv_block_pattern_vlc[i], VC1_2MV_BLOCK_PATTERN_VLC_BITS, 4, - vc1_2mv_block_pattern_bits[i], 1, 1, - vc1_2mv_block_pattern_codes[i], 1, 1, VLC_INIT_USE_STATIC); + ff_vc1_2mv_block_pattern_vlc[i] = + ff_vlc_init_tables(&state, VC1_2MV_BLOCK_PATTERN_VLC_BITS, 4, + vc1_2mv_block_pattern_bits[i], 1, 1, + vc1_2mv_block_pattern_codes[i], 1, 1, 0); } for (int i = 0; i < 8; i++) { + ff_vc1_ac_coeff_table[i] = + ff_vlc_init_tables(&state, AC_VLC_BITS, ff_vc1_ac_sizes[i], + &vc1_ac_tables[i][0][1], 8, 4, + &vc1_ac_tables[i][0][0], 8, 4, 0); + /* initialize interlaced MVDATA tables (2-Ref) */ + ff_vc1_2ref_mvdata_vlc[i] = + ff_vlc_init_tables(&state, VC1_2REF_MVDATA_VLC_BITS, 126, + vc1_2ref_mvdata_bits[i], 1, 1, + vc1_2ref_mvdata_codes[i], 4, 4, 0); /* Initialize interlaced CBPCY VLC tables (Table 124 - Table 131) */ - ff_vc1_icbpcy_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 53]]; - ff_vc1_icbpcy_vlc[i].table_allocated = vlc_offs[i * 3 + 54] - vlc_offs[i * 3 + 53]; - vlc_init(&ff_vc1_icbpcy_vlc[i], VC1_ICBPCY_VLC_BITS, 63, - vc1_icbpcy_p_bits[i], 1, 1, - vc1_icbpcy_p_codes[i], 2, 2, VLC_INIT_USE_STATIC); + ff_vc1_icbpcy_vlc[i] = + ff_vlc_init_tables(&state, VC1_ICBPCY_VLC_BITS, 63, + vc1_icbpcy_p_bits[i], 1, 1, + vc1_icbpcy_p_codes[i], 2, 2, 0); /* Initialize interlaced field picture MBMODE VLC tables */ - ff_vc1_if_mmv_mbmode_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 54]]; - ff_vc1_if_mmv_mbmode_vlc[i].table_allocated = vlc_offs[i * 3 + 55] - vlc_offs[i * 3 + 54]; - vlc_init(&ff_vc1_if_mmv_mbmode_vlc[i], VC1_IF_MMV_MBMODE_VLC_BITS, 8, - vc1_if_mmv_mbmode_bits[i], 1, 1, - vc1_if_mmv_mbmode_codes[i], 1, 1, VLC_INIT_USE_STATIC); - ff_vc1_if_1mv_mbmode_vlc[i].table = &vlc_table[vlc_offs[i * 3 + 55]]; - ff_vc1_if_1mv_mbmode_vlc[i].table_allocated = vlc_offs[i * 3 + 56] - vlc_offs[i * 3 + 55]; - vlc_init(&ff_vc1_if_1mv_mbmode_vlc[i], VC1_IF_1MV_MBMODE_VLC_BITS, 6, - vc1_if_1mv_mbmode_bits[i], 1, 1, - vc1_if_1mv_mbmode_codes[i], 1, 1, VLC_INIT_USE_STATIC); + ff_vc1_if_mmv_mbmode_vlc[i] = + ff_vlc_init_tables(&state, VC1_IF_MMV_MBMODE_VLC_BITS, 8, + vc1_if_mmv_mbmode_bits[i], 1, 1, + vc1_if_mmv_mbmode_codes[i], 1, 1, 0); + ff_vc1_if_1mv_mbmode_vlc[i] = + ff_vlc_init_tables(&state, VC1_IF_1MV_MBMODE_VLC_BITS, 6, + vc1_if_1mv_mbmode_bits[i], 1, 1, + vc1_if_1mv_mbmode_codes[i], 1, 1, 0); } ff_msmp4_vc1_vlcs_init_once(); } From patchwork Tue Sep 26 22:17:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43947 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210423pzh; Tue, 26 Sep 2023 15:21:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHa6X9WNp2bkF1iPck6Ua3p7Ovw1qKgvnERC29hyddhLOyq5u8km6mVAKjoo6QaKUdvEd2v X-Received: by 2002:a17:907:7891:b0:9ae:6d0:84ee with SMTP id ku17-20020a170907789100b009ae06d084eemr54858ejc.28.1695766890760; Tue, 26 Sep 2023 15:21:30 -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 h11-20020a170906590b00b009a1a734e015si13147032ejq.1016.2023.09.26.15.21.30; Tue, 26 Sep 2023 15:21:30 -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=h4UaQvfr; 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 C4C8868CB29; Wed, 27 Sep 2023 01:19:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2102.outbound.protection.outlook.com [40.92.89.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6B14868CA6F for ; Wed, 27 Sep 2023 01:19:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YF4BIfBpxtNkOO1Ot/0ZAlfA0oemK5Wv+K22Mz1YVLA0N0FCJTyMV5dMze/u16wC0H+O+ssu884UNzds/YSqmrGlDJuootkQV++aQ+7rlmKo4FcN3IObZLWM8ARWJrpVtOXVRutzww9ahIf04ftyjY7PlVIQMJPqfraQrp4nsU0AVKQjdBpi3GcQ0zaz+MLc3A35tSuUlbzGOpapQPn/0unZPow3X9oEL0k39VJ3U7svge+21ObyKFhZOfiTGuPO1IaenoC+TVcnG7XvQ4oEmzKrFp/gTvmzoFv7uzza0fONj3D5hQMQQZW+sbcfuZ2lxT1W9BzfdsO5XV0KWsgZpQ== 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=Q7XnqIkJbQH0vShnCGmStnQgoDuX3IPFadWTrYF8Kok=; b=eSgyjxpdDptl7o/XRSzTi9FlM5InBdBb4APWqnspVNiFdi0gh+lRCFHtrCa5P92BH9c4mdSwgDGpYXU5Mzo0ydp6jWhJ8JowCdcgDVBEvIi+Qix/uBmf14QNXuQro4IJ6aQ+bO8hsE83mm6QBiS/+KvcgRUS/iVvJR41gfMJdvJtcQRBDhb2eoPXbnSJcXxF28s0TzZeb/87/ug8l24j3w8dKBx3h4qh7NQ26yH/j75iJAFfC+1Bosyderv4B0OjPygjtHMsqdCH7067sAMxfv/tDjasqG7HKaQSKC/XfvNP6kcX0semcL+9QVvCHcHJcf9/5ElnKCzARtLB7XzLmg== 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=Q7XnqIkJbQH0vShnCGmStnQgoDuX3IPFadWTrYF8Kok=; b=h4UaQvfrVVPpUfs73PXNncFgH02b9YQIt9oIeaJgPSWFTWoDwF4cUTFabzPnqtdGtXiTwY9tJsvht8TfTR7pQAQd+Fz8olUB35TEVPtt9RR6D8orOLF97EDNPBYGdH03WCR/lCA/AvT7RyJYaGIPf3E4hxRsaWXxihQfHk7kPVoUwvLWpMqJXPoBn4SjEk6ZXYbcijFFmFwIQp66Y20PbHywI2mq99RzR4hXl+gAaA5lW3EH2PPgg9gAOdbTkXftqILIylA4WXbmZClYsuKhPiS34NmLBb4NMEACpgTKKK4SVd3hFM+k+FsQTdBT2zTe0LPFkTGAzeNqjGyDr6p3BA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:19:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:19:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:06 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [lecfOfoZ/ESEyBdvjpHt7A86Yw/StKXw] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-34-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: ca643b0a-1c02-4e56-bcc2-08dbbedea24c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pIb+eS5nOYpDa+dBWEZS6Jllb/U3MLuTiSg847SVa2DT3TyMLx50wY8IgVc1q1Wtb+fGO5b1KqBdXNKOkT9poiRwfv8kp3+S4ARpB5ZXq5KW8vFDy9IDQ8goDK2/uxNq3HMgSVEwBj5u2ZhSPi+Xn+c7y0zV8+bNW1v4+izoYeOjWhNaT0I7CZTnI2nIdBLki4PPejMCseTpZxbSHZCmUl9GzsTd5Bj/Ee29ierAIIM5mLLs9KFcIAbCqd0vzrQhPT/iBjimfOBP/ENimw10+V+ymkAZj52V7Qbo+zwHFfFwP7p/uGIhi6CvIzodcbHg8cC1NnMC0VFkPYor3ob8Js3gEMVnMI7G0soTOcZBaNol41tx1Wdd8P28XCNtwuceNojltdFFxlzHMOEh/v5ruUeApIdjRZPk9Hmj3ZjXJ0oyqczK1uuqcI0ku6JN3l7MFQF/z/IGPHi5Wy0M4b6ViLNbPZgBGC6Yid6ooc4m9PA/kS8sOlLb1naphgZZ78LoiJ2OY7jNpoQIKHRTW+9fu/o3/RnZMFtUezmwvNT5bpGZ1QdJkoq/gkzRJieqkZfF+Dk6Gi6TdwK0HEycrfDLUcNHYwAAqNh8NlB7pSDg5eoLYSC4yqFvHV51/4IXLJ+l X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iaKGUyCWo/FCwAxth6Bqd0YFuSgSFYA2uydv4RD4V1solpwsBCnTujFWwi755G/P4WCnPEVh93i8CCS/xUdQNXG+3sNH8rNzsXgZGb5P8NxxV3TYxxcBZtjXHPXZNHoEOEJSr2Ff5JMeCsJXpthv6TlcD8kJh7KWV4Wcv3JjFT/ZkHyDtshgtc1j7hEk7N7/voqUE4KdPXdP8jl8Sx2yErd2Sj6uN1g7iBJ8ML761wDUN6Yfb1m+4wOG4LexUjQQvVEToqYUgFgvr8G/6XvnvNAZYqH8/285xYaUGuyF/oEcM64ZGFShNdloULc1NLU4Ijb6UgTU4FHNMGxhj0HVhCR036irb7OxY6M98reclD4ceNcvlnZ80zuqMZY6f1fhbcwEm376N8PfoZ79YJ4f0aM/lLMfdz8EEvPhWF1brqPKY+61VMUUx4MO8CdNazcq4IJA+9/sGvADPd2E3rSQr/9vYi+iPw/Wit05Zk5Vvhe4MrOmZcteyZMIw7rcDh6mI5OndLAd5QKC5XXA0pB6dbv8GuNJznL9y40KSG0z5mnRiJzjQGpxuAlcr32BD9pd7664d9uFpM6XO6udhTMMRqp2mO3sr0bGHUAbxgFUr2Gdcy/1K7rQmtiSgpYN/3+GqJq7HdCPpbhpOTvimN5J90vbUKObuf3GqB43Q57m+CZdJTZyTNhsW/tP7xcdwlfm3iRtg1oPSCgk+Uaij1xkMWOOElFzTWNZvRB390W/8orRVFJBczZ4V7B/AmABwn/HEi3JrvkDPV6jEa/qudb/IgmwisZFAAOFIMR4AhsJ0qzXOO13OZXmaNfcPmS4Qt2tmZcj8TZwZZKY8JJ/9Ubw0DqrYGWKcHtwXzxfMLTaBCwhCFx1+4DfkHklcQFRJAFwMYmavo3kzbtIiiUryQ0X0mIewy+9me2mgt6rvgpciK/Q1uoI/4EoQR3YmSUxADXFuSpdO4ID0oEJbO3jMa44i2KpJKVgeBYw81Z214IPRLLd0pg3FcnarxAkaeQ6RBR4iY9pVaOYbcPrErb6EiLujamtMA55O/3ENWW/ESS/QgvLm8Ysg4mh9VE0dDODAZUPyS8IJTdT7faKF7VvC/XMmd2ShMyfiBwJvYbI1y2cISwHDR5g30avmwUspIVfPZ9jGAjljRvD8jrUniWmFgvF+YkLWaBVC265t3XpFBWKlNQbuAmTpYiSGlz+XoAyfE9BP85qs3tFPTkEvvtMn7l4eLV7WlIiAWT/gQ8PqyEczF7W/7tlr2tKsRi6lLLm3ScT X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca643b0a-1c02-4e56-bcc2-08dbbedea24c X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:19:22.0173 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 35/61] avcodec/4xm: Avoid unnecessary VLC structures 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: Iu6AxGQFo8LQ Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/4xm.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index c3e3a45df5..158b37a38b 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -125,7 +125,7 @@ static const uint8_t dequant_table[64] = { 20, 35, 34, 32, 31, 22, 15, 8, }; -static VLC block_type_vlc[2][4]; +static VLCElem block_type_vlc[2][4][32]; typedef struct CFrameBuffer { @@ -250,17 +250,15 @@ static void idct(int16_t block[64]) static av_cold void init_vlcs(void) { - static VLCElem table[2][4][32]; int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 4; j++) { - block_type_vlc[i][j].table = table[i][j]; - block_type_vlc[i][j].table_allocated = 32; - vlc_init(&block_type_vlc[i][j], BLOCK_TYPE_VLC_BITS, 7, - &block_type_tab[i][j][0][1], 2, 1, - &block_type_tab[i][j][0][0], 2, 1, - VLC_INIT_USE_STATIC); + ff_vlc_init_table_sparse(block_type_vlc[i][j], FF_ARRAY_ELEMS(block_type_vlc[i][j]), + BLOCK_TYPE_VLC_BITS, 7, + &block_type_tab[i][j][0][1], 2, 1, + &block_type_tab[i][j][0][0], 2, 1, + NULL, 0, 0, 0); } } } @@ -357,7 +355,7 @@ static int decode_p_block(FourXContext *f, uint16_t *dst, const uint16_t *src, if (get_bits_left(&f->gb) < 1) return AVERROR_INVALIDDATA; h = 1 << log2h; - code = get_vlc2(&f->gb, block_type_vlc[1 - (f->version > 1)][index].table, + code = get_vlc2(&f->gb, block_type_vlc[1 - (f->version > 1)][index], BLOCK_TYPE_VLC_BITS, 1); av_assert0(code >= 0 && code <= 6); From patchwork Tue Sep 26 22:17:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43948 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210477pzh; Tue, 26 Sep 2023 15:21:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGDAYX41SBQknmj8xmO6/797QhEIbo4ZlFSdKKapeLj6f0qjpZS5Pw7f9q9sokyhUsAnLAh X-Received: by 2002:a05:6000:1c7:b0:31f:b7b2:d4e1 with SMTP id t7-20020a05600001c700b0031fb7b2d4e1mr42330wrx.20.1695766899900; Tue, 26 Sep 2023 15:21:39 -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 c19-20020a170906529300b00997bd26a559si12777552ejm.881.2023.09.26.15.21.38; Tue, 26 Sep 2023 15:21:39 -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="nk/msuS5"; 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 67FA168CB34; Wed, 27 Sep 2023 01:19:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2022.outbound.protection.outlook.com [40.92.64.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B08C168CB30 for ; Wed, 27 Sep 2023 01:19:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BsPLQt8Zw/cumhBHC0g5RAfAu/Hmc7x5043nPriBl8gAHMguRAeSHCfzpkdpKO39Y6dY9onAPCt0CdK22FB93wVHr7I9PZt4DC2ZVQ65t25gQ+cZ+B2NugnSkH94//9N044jZtpw/0SOrRNyg3R5/J81OYWe+p8+LKFio+7Lcu5JWtxVaJ8IWRC2EI5p/1469KMKpVHBTCoeoqVUSQ07xJ+GV31Y9Bc7sdeRprW0seEUbZ2MzNBjIp+F6oPv/bkFweZIllOWaJfLleD06KKKb7tdmr3sbWRmxHXiylYv7T/LMk3cs21/0xDl1v9b3zfHv6NpvPOkrpCz9nJ6umqS9A== 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=yx5cJZBP/sXZR1s/MreZ9EyjPcYSZnvB/NqUKZ1IcLI=; b=QQYLm1cgK0dWCxld9rK1s02O4VxTeDM9Ul0NI3vrOmrsX6oniy0Mq8tNruDa653tNESPu3Jq6jMixeQy7qONKwaRVInggVD+icgio+lcqQ9sO/dNxrusWFmNPo7c/5AeYZ1IVcHrermljNO6yysKi4lVDnpSh9bJ0CXbalZXo90yhr+x+vLEBqAgtwXkYyapAaK9hFpEVGpIiLUUFHRRt/CeZfAtJDi+jr/Ve/N3zPCKGbLR6+F8bVv1ZZZtoVTzSaU8QN5YaryNQbdc0V6N3WtBC3qDJgb/CH7L8f23qxE3dAJEjKRVlDA0bje0x1nsHcVBXxLy1MMVrAj0PrA/vA== 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=yx5cJZBP/sXZR1s/MreZ9EyjPcYSZnvB/NqUKZ1IcLI=; b=nk/msuS5pPC/9arw77aahhCIBSA4IzZDqVyMvaqsR5B4PQ8tp2SoJzRthAHtUzO6gHqDgl4ev88LphjOL8YC+ZSRb322tt5CsPMmRh3wdQXwZ3MYQTF7aoDTCzOgSZWYgBi0qEhirHCcGInLfqWpoRMLrtjDvhCSbh2RHSrgVSJ2kpb9M6qD98UDQZ1n3TFT+WkrYVIsB6xBtMc+Zo2EXeGzcvOt6nb101INn0lR4snaI+gFR7jXzZFvYrnsAJV4tQr7KG1fhNNMlHKK4tmNQgoO8maF4WcC9+wetJu/BihlqOPmPh09+pDtVCnL7u0a6wz0S5MsgDLU03XFKvzX+w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:19:53 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:19:53 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:07 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [DDiaDYxXoGcLEyAMehss3EXBQrjI6amM] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-35-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: e3bf2882-22b6-4ff7-761d-08dbbedeb4bd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8acliqRepSa4g8GF7noDBVC0LgBQn8aUOYpIdsAupq762Fb/Nksshp/9bU/20/+Hmh4zOJOGaK6ugWuB0L7L4CfaYAZdNq+02FdMj7M2+6EabkfduMWTwdFO1EPjsyslwAvYsKlvw00wcBT+0F+HRNHA5OxUacTl4043pBABOHnrwJVdvu9kbkfRosq69LpDdheOIpJpLlcvdZICKLrmFoaMTj+CnyNY5QBW0aPxufzt2p+6xj1Yb+Ivvz8TdRigDou8/PsqQjfPN/xsI9lszh66QVmNlTiE3K/kbFL5rybXuaKEGg6yiKeIjvKvMl5G/rxo6Oyn+nCKBQRwRQlwwFKKeNSJcd11GPMzEEXchgAlzasa8ALO+RNMTd7GiG1pCqEfCH7DPdtHs3akQZDWZsAggXF0RJT0NbwxsyF5XqB3A3CsaKDXifodQtNDypxyBT9ckNWKYWG1PwbZVjGDOMSaaqmgkqHBSiwF5gPyF3YNh0QUjihf6GpVO9nyHKs6tYXmS3K947XuNCVLiLB67RFBArwIPjdN9VwFAasLmjZG0Z2vJ8UWGyLYO5yam94cG5+jHFuBc1Q6aBFRvSh50A0Ae6jNcwspws1BV1TUfAoQcQQLCn8fSXVv5Uc6qPh6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MCJ/5tUu43OHsqlQLD8xWvCkMAn7An10VBtp5wMTPMza3xHgRIPgexZRpUhj4gsRpBlo7gOdUahk69c26/oF7umWSdqDHNIkSvvmwIBRiuA6+116kMoAnykox+FS3pkVZzHGTZDWZddJTfNnXqivurQhtkBK9V5wFB4Ey/3pWqX7vWKbFrmCHVTTn6h5Q9kMnm939zYdVcZ1OwUcwF3RXSdAJ7N5x7zazPDixXJmZ9VMDEaEwazKHrDcEjizmwJ3quiM3Kow/dGxrqR5T3PWGaciiUZWNEhY/1gAsiFzMVfV79RnCwENvoE6BCjvqYFt9jKA9LZlss1xZVZqo2L2f/3cnkmVbW2ocfE7rctqBqqajZtlb7mYGvA7ZAx8qh+oXcYGXKuy4tHRthRifH1ag335uoQFJEJKGnXvuLYan0DWfzkPGjuSp406UmunFUAZGXZ2X3didf28+UTmIaHWU802uxgMQ5JdKpfEIj5MPQc5hpRbpziA4iDn9GIxsdchlQEcVDm0AoQFpHoPjjg/fmNb63kwfVRGYdVO34xvwK08LLdjVsGwXK9FPZkPPzcU7xO+M3Z7VevQ6x2tSoddohAIv67D7HP/gYcXHG8HT9duUdEie9pQrxlLaedPZmv8YaJBCC9hRVs/nWR1Zf92BDZ0PJz983lpGev53VUruZwOj9yFwirrYa4J6awNatVPFtHF13LtkIV2A1GFT3E+SuV0mIGZgmi/UlBrS4qEN7dkc/tFes5el0vvAk0GNjbYxqMC+4Bf4NrN6OVtYcWlXTUj9Q2IIJWRPXoMLVpgeLmtsSZ1LBRsrxo41W1HMBQX0rtGGp8NvE5WuveAzv/KGtIOx5bXEyepB52HqcL+UpVtkPu9YFLBBge942n2HpdSVlNENnTrMslSps+ns8qZ0/EUJA4QRc2Yv3cJHk5owGi0rPFT7rnev6IDjKVQAWpIAxgMmAFr1ntr+seisNjfd7+4xnXjBNFwseeDdZdExXkCXqieaZ1z9CxlqORDjZxotQfAd4ZRPYose3IqQitbT+lpYvD57SgZJpyMB864cFcPhV1ItzubPouZUi+o4Jen5J4VPYeKd6l5DJaDa9iyS9wWkkHbc0UnlZcujM3/PlC7DstB0IDOjPmJJz9yNglfOht3No+nzM2bAeNALMSGLY/ypULLuiv/tey4GunwSaLBxcd0GpRNCdxTagfEaQGLVM1RkplsuQQ0LmvMJG+VVFoZD5sIHIH6xsgVoUvxNxg/ZFAA3y/sAniE8sU5Kczq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3bf2882-22b6-4ff7-761d-08dbbedeb4bd X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:19:53.0082 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 36/61] avcodec/indeo2: Avoid unnecessary VLC structure 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: 7O8fVtc266Pb Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/indeo2.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/indeo2.c b/libavcodec/indeo2.c index 2f64320682..6878ab7cb6 100644 --- a/libavcodec/indeo2.c +++ b/libavcodec/indeo2.c @@ -42,12 +42,12 @@ typedef struct Ir2Context{ } Ir2Context; #define CODE_VLC_BITS 14 -static VLC ir2_vlc; +static VLCElem ir2_vlc[1 << CODE_VLC_BITS]; /* Indeo 2 codes are in range 0x01..0x7F and 0x81..0x90 */ static inline int ir2_get_code(GetBitContext *gb) { - return get_vlc2(gb, ir2_vlc.table, CODE_VLC_BITS, 1); + return get_vlc2(gb, ir2_vlc, CODE_VLC_BITS, 1); } static int ir2_decode_plane(Ir2Context *ctx, int width, int height, uint8_t *dst, @@ -226,9 +226,9 @@ static int ir2_decode_frame(AVCodecContext *avctx, AVFrame *picture, static av_cold void ir2_init_static(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&ir2_vlc, CODE_VLC_BITS, IR2_CODES, - &ir2_tab[0][1], 2, &ir2_tab[0][0], 2, 1, - 0, VLC_INIT_OUTPUT_LE, 1 << CODE_VLC_BITS); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(ir2_vlc, CODE_VLC_BITS, IR2_CODES, + &ir2_tab[0][1], 2, &ir2_tab[0][0], 2, 1, + 0, VLC_INIT_OUTPUT_LE); } static av_cold int ir2_decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:17:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43933 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210529pzh; Tue, 26 Sep 2023 15:21:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH1dahW3QJRuaEHhO7gkeQVLfJhRGii5KVN8SB7EhkS8dRBc9MfaADOsuxcrzNBjBEULHBw X-Received: by 2002:a05:6402:150c:b0:532:e1a2:b0b8 with SMTP id f12-20020a056402150c00b00532e1a2b0b8mr309246edw.8.1695766907588; Tue, 26 Sep 2023 15:21:47 -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 c12-20020aa7c98c000000b00534878c3213si511920edt.165.2023.09.26.15.21.47; Tue, 26 Sep 2023 15:21:47 -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=bPeAZMwu; 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 7E8A568CB28; Wed, 27 Sep 2023 01:20:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2109.outbound.protection.outlook.com [40.92.74.109]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7339368C98A for ; Wed, 27 Sep 2023 01:20:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W8dbI9xv8JWuxKZ7P3WqK6Sj3lv7a2D0CyXRvizVUFglgaIYM1fIHKvBUhmfFwgAt3/nyb9WzrI0G8+Z0NzXSUWKrrDn68TmdPuMcpajtF+S6X8cghEBZFIDUNe/Ud0MYhhpnI27UxwzmuSbt+sh8Fe5+32zVup+lPLrUUR6ZdAS8NAwt3czK0BmslfRuJx2xoRhYr7nSdEPH74VyXRmidIzGQAIQNH+Sfgwq/gYzAoIPPalBBfTdE3KX3ehuD8jo/9vibzJ6GVYkd4uLI3PaQPeKppUXFEno887b2ej1Y8GQ093vbw3hOqhTSoAUKTZE29MWelmIYoXy/eE5zzAEA== 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=aN5eAo0Q1hEuD3iO6K4DhyLDpd2UwtWjVM/QMUa3CM0=; b=SLX9+SO41FNRG2pfZzze5txoOk5jVJ4sNeo5DQUX/OeXVSosxrK6t2Jf7ZcmyvaH8kV+MhKL9QBlxaPmBaHLvqCJ7Xbm/HTWOo3E4bq0ZmMtKmfeNkgmTD30gGeayrd6mVJcQNXhX+70rik9MPtiyzvVDzya9p0adXJn/HhmOi/vAGvfRnErcDUI5U/gE3Po/lA0EzVLKSoSaq7T73mu0skialIGWD/MKY8+he+JBZWRONt5R4Y2Ldr1YtYDrQ0Ue9EwHhtoZ1+I6VL9w+IhNsXmug1vER4UgCkEJrhbopHXdDhuoW+498DR1z0WjaX1LsIqzF+wYwW7D2Rb2t/Rng== 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=aN5eAo0Q1hEuD3iO6K4DhyLDpd2UwtWjVM/QMUa3CM0=; b=bPeAZMwumg9qZVnTmGFGXP5b1j8Cs3Icag5ZJCuu/Vy5BBz1mYwudi5Fq2ZfuQ5AQVHsmZBc6j9fBM/uDnHhzStWzO/5IAswcm8+V523J91SBbqeKbK+rzJMy3ib0x+ua2ACErx8sxZsOAsRvZkLZkIWzwh9w/JVI1CSQ1CTdqZoJnmlFLm71vmj1ODdAofl8HBYACw3psynHVH1FIjGaBwP0q6I+fwgPlDyb1s8D2KTgMYgNBIOuXSV5r2hERoQBMAmryhCl++V8GanVQESmM8cbmgUL1cfXmlCbsoVALA8593fbuE9+taBxOFm09Zv35H1O2V2vJX8fqX38FTq6g== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:03 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:08 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [KIL+gu+bR1gSnHdEC2AAC7uEVqkRtp7n] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-36-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 55344a32-d8a0-4573-a33e-08dbbedebb3d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9rVKEPhVyR61aidJuJBiezP7wEZAF/24izE03T4YSeKytlyrfLDn6ekkj47QEAfsq1lyJmP+nQM/z119tJ4ESMgtZUbklsFSJ+rCmV7qSKN6yBMYshWm4RllZuJ7WC4Wlx7P5+O4qSmeMq2+gQybthtpLPsWAQcO7/5Hy5aS8leIwlzeY/KLE5/kF5J++BtSygfCzPyjONX41ltbDiYXdpVZEQHOS7afWkFhZuky2xQWu7geyI0igjpZmj4N8lgDtKoG7L0PVfNz4t3B4WDOKAw4EvOwLaMFDrrNybXn0bU5NhvUUt0sntVkfvXoJ+HA+sbZtAf2utBuKlrSbzWr+7k5WNXzQQtBoe6mnOaE47U1EPT/RhaGD1WxpEIcXt6fSFUSrVVgii6c0vrpOpRBwQNpR0JA6zzYW/f10DpNQwEZQkzjs5O8+O10HZuSS/+/dgoAy3h2Qo9ACazDJhx+wVeRubLh/CPn0rUbD3E/TElKqTcdq9JX1uHOdobRlYmpTOdXEvMEZ7nhQ3l3h8YCnOYkbC8SgAZE3xHaZeWcbCVLJCUcvcQQkjiUwD4I7VvqRoZ7Iu09dpJLtpTkegq/1JE6HPUJaRKGP+0aUrdnnGEk1vGR8M0iAlUAzQTlsMny X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2IkmsXURabH65A6b7Svls0r0IcU97Flpu8G8ry4mSWj2930FM/sbQCNQ4ZFsqJjdYyXso+qocWTW/OzZxb1e5EZKR74VSKDvfs3htOPFFzK0W8dFp2eqzYSlRzVCcqV0MYAwf7LR6C9amcdOmvjH3WOUbYnHD2fD2cHEGGmQejyUrzpM3mVHMng9r4vIfcCoBWHAE+XwX22iTEziAAnhiH8uRfpELtx5vHfX5hHVVwuMdbRsyvAsllySRzUnFtUBcFfHJeTmzMA7c9RFejrFVjaUP5XyEBtw3tVsYyILLH+nqI2iVNpiFzXIKMYmyrIHT9vRvmyob7C2+pA9Uo5MqQpcH7tbtRv56cZp6HN5srqUeTjSP+e7j47HvnJ7VmvU5UMfeYjnFrqRQEwrZBjHR7qcBpssSzOjGONT1QvaBikm0YQmJhGGac2c4iYX08rrRNg2C6C49W/1StAblID3JIkFZXl8a30tgXHeNoSlW7MbrZWbazb6biUrSLgRrdjnnhZecjHyWavyd4S33sY4RdU7F+mZkErLNccXT5o1Do01qM37JanTb+aiURVhUKloDSHdioIZAd45ClVD0SVv+hBh1er5cmG8/vSjmqhTPZyThg4D02zxhIJebZCO3iY2fOR9UZ11bwnp6EVsSeyRvx3Vek7T4ON9JxfbooSK07m0gWlzEcircu0RXLqyjB4/mrnMN3PH08qJyMU1noD1j+3p3k1IBPcGPEW9J+V7k+RJxn49ZAGNpUddzKdYwP4CczbPClJSxqfcWI4AgZMyfjaDZjQe74/597zzx1dQvAcckyyIUn/5Hgn+Y3FgoptDm9BUTGVjpl9PswH1NE8hcLK4Mg46b2kLwZUmPuNmmji8XmeuzJKUztevC6/zP4AQI+2h6FOcHJ6Gcgst3YbilA1IS40zSJkx74woFjWlL4yBRvcCo9cIosaYAADs6rtsskJnIHGFi9zCRsT85BT/9WFSL7AVbtgHCiRX9LoYmhYnGgtw94FMVYqVM7O+xwkGm2kypabzOUxD2ok/oev2qIUd/MwEYB/aCxT+1/ftzjeRGtUQ4bFjDM1BaEJkwMIUHCp1arkLVwAxsEleSr05gz87SVHHT7DNH6QbnGox0MI8SmZgU7ILZUO5acrLuSUqQfNxc9Kx750P6BseT4qKxNdPCjdIpUJRbJtVpUhlGdNWOkXSzFgzpWBiKCRixwBR8xXb6XNkqh8ZXmJD++fr9Wh7UycHaI/+pXY2/iFFMkbpWyYociSeqAMgGLgxeMlx X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55344a32-d8a0-4573-a33e-08dbbedebb3d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:03.8723 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 37/61] avcodec/mss4: Partially inline max_depth and nb_bits of VLC 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: DrukS6ec/E64 It is known at compile-time for the vec_entry_vlcs. Signed-off-by: Andreas Rheinhardt --- libavcodec/mss4.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/mss4.c b/libavcodec/mss4.c index 0e7cc3e124..8ae4f152c6 100644 --- a/libavcodec/mss4.c +++ b/libavcodec/mss4.c @@ -156,9 +156,10 @@ static av_always_inline int get_coeff_bits(GetBitContext *gb, int nbits) return val; } -static inline int get_coeff(GetBitContext *gb, VLC *vlc) +static inline int get_coeff(GetBitContext *gb, const VLC *vlc, + int nb_bits, int max_depth) { - int val = get_vlc2(gb, vlc->table, vlc->bits, 2); + int val = get_vlc2(gb, vlc->table, nb_bits, max_depth); return get_coeff_bits(gb, val); } @@ -171,7 +172,7 @@ static int mss4_decode_dct(GetBitContext *gb, VLC *dc_vlc, VLC *ac_vlc, memset(block, 0, sizeof(*block) * 64); - dc = get_coeff(gb, dc_vlc); + dc = get_coeff(gb, dc_vlc, dc_vlc->bits, 2); // DC prediction is the same as in MSS3 if (by) { if (bx) { @@ -337,7 +338,7 @@ static int mss4_decode_image_block(MSS4Context *ctx, GetBitContext *gb, for (i = 0; i < 3; i++) { vec_len[i] = vec_len_syms[!!i][get_unary(gb, 0, 3)]; for (j = 0; j < vec_len[i]; j++) { - vec[i][j] = get_coeff(gb, &vec_entry_vlc[!!i]); + vec[i][j] = get_coeff(gb, &vec_entry_vlc[!!i], 5, 1); vec[i][j] += ctx->prev_vec[i][j]; ctx->prev_vec[i][j] = vec[i][j]; } From patchwork Tue Sep 26 22:17:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43950 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210592pzh; Tue, 26 Sep 2023 15:21:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF2Au4/LdNjx4StcL66u6NwULCk2NZ/UYEJtAcc/tQwoXXOiBlbr++5cnloAL+01vCY/Zcf X-Received: by 2002:a2e:8853:0:b0:2c0:20e3:990f with SMTP id z19-20020a2e8853000000b002c020e3990fmr315366ljj.10.1695766916619; Tue, 26 Sep 2023 15:21:56 -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 va1-20020a17090711c100b009a63cbd4b02si12857550ejb.932.2023.09.26.15.21.56; Tue, 26 Sep 2023 15:21:56 -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=SfJ4V87U; 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 BB97668CB43; Wed, 27 Sep 2023 01:20:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2094.outbound.protection.outlook.com [40.92.89.94]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A954068CB3E for ; Wed, 27 Sep 2023 01:20:11 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AquM2lF28q7C/66CA47IC9xhxevEJJ4BSTv7dYsfmuF5jUFHThCGE0nMY6sRMRiL58+maG1BJVPiRShXIsNXNXy06YMtRCPWFvFw8O4Hm/L3XW9LPWKbXRRExn0i9wko9sYmYaZ1ACDSnpDd2V3Lrjl1bKl8NyY8unCAifA4rhLi8VO3vfojVm+5ACt/hRFQIKGbaX7WCGVuOWfvqMoNrk7+0boAIASh1haP9nSCJIvNwq/4AU8G6XzkEcOVvcsq6qbzQBaEQE7Xt27ygZLAodN7JxjRpauEwPmeJYXmvjPsb1Y/AVT1R5obsLlFij1C2eFrwnu5j+mRfckKGvDH/g== 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=1B5enq/LsnORfIO6itSi1wk5sL5DIsJnFCwfBKe4ezU=; b=YIlNqYpUGpMh8YTNn45Xp6n5tJ+o3Gi6hy857nyn6jAMntzd/1mnaol+J2CJw1YUUHerqYnx+7PPN4OOUiXbO+PsZRTztMiaDHA1TvO9EyMwXJiqIIOWuATwyLnMLe99DzzUKmqRBVc9EnM0YxD4cwgLKKkxmsuJHh9Ut1uHUqG9JXhnZBLO6qUpeAuEQFmBT1CNHsDLavNI3STnyv7NiM/ry71PqdfaCT27aPT4YnZnCTX7m8bRcPv88lzjz3O+AQiD3/OuLdDHtsi/bu6YP4ZvEKx4zlk5VtH/VJgGpANmYVkOQoJtJBl/fAcN6Q5RronrArJuqWZwuZZSqunUow== 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=1B5enq/LsnORfIO6itSi1wk5sL5DIsJnFCwfBKe4ezU=; b=SfJ4V87UltFw5dG+DVhqzQC5PP5JJbDmxVMcebxqvyz9FX2uMGg1VcxPaQJskSelv5Xo6sqYGnYgSwMhFQB86rw3JbQ3zP6NgOVZAF9E7MELgzt1PuZipl6pIfPFFdIf80js/BzdI8VZp6i1TgziOxx9ybrxOAUssWDkCuylCCQdIT+Psm0ZfO5eV35+gN6U7YNW8cSj6iw1yvXY5CudsVEXJ/v9XxWQ8BsVVfzHEDJlMv32oztPykgbAwy+4fua13ldNiCc/zpkVTSsfNX9t58R17g/hgmzls0iflDPQGaCeDEMVyAHcCXch7yukOOWC1Gvj/IOwMCtpbpzDloLmg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:10 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:09 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [TNy71Cc8LU3Pe5gnpYXIPM/+N49sLlfx] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-37-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 78e8dcea-3337-495e-e1a7-08dbbedebee1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hegMkX7ZLgCiXScJZGYl9XFRbyEEzz+OI7qFK5VmkKVO6ukiDYzE+t/SoGYkk7+W7rdZZWEWBPht6UfDVYleG6NKRK2tSk4fnwoobTUrmGto4mHRHhIyx4n0cGaUdkklSgpdwycd4POjvjlS5ERv72kugvhkBU1xGvJJx939H7vDALRlSiM6Hk3j+0QiB2klWILyYr3nVVHDgrmIzMVGfxyDRFsQYIbRKziqaIeHwJd6UFY367P/YZicFIH7kmBtxkOAQ7G2wcnGGbrzDVNtmy2VqI3MARFVvgYRHKuSaNmdXHDbI3nhm6PfQdyg/uNijheMIDDB5okYbhcUbKHkVIqHlaxFvDUOvRekEu4638i0yTU57t73LTeB0LBnJ/Ikt2DR6NPIMT/F5cq3my6DsLcRZTaa20XrFIyfqHtnCJCEKL7Mro72E15VUvLGVvAn3mUkHgvWjJcf4w8uGBNXmek1W4tB7z3M+jmMMQfrJXE3zEcsK2sOD84vmHhRjNuANOV4Hp9pB24HqS6/t4eyf8dhnK6JVK/NfVxFR5JPUvM1e5GakZssIEMLUK0b6kKDVYP/q5ENHe7rvYk6U1bU+5WU5ZECW3kPmerid9ljNZTICa6mqj7yCyx0pbAA8LTN X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UpGYhdC0xIBjW3IhtC3yvs7d5ViKzmk+ni5XclSMpHpwy4C1SmYlBfecM3YPfcZMLTXQ3cBrK92q1+jg6HSzj+kiqvr9upgV5WJl6M1KVasmtRz586+icn9eLkLWhGlxhg6Ay8ATpEpKz+gYmpdnIun8QFT8Okju9Wz17bdX3MCNnDcfFMpm8/0wEceNQoEsJ/NQyrwkFnSLTybyTk40Sl35LRdHEQEyFcI6KOLcZfkzd1JiisoXsCLBF/uCg694fibToWVgfo7vGxYwFxRnRzt6B4WW9PFWS6DplvXhFdTMgvii9pjuiG7//j75cDnAS1E7SxVtBcLBkpM5vGAotXMxYyVkruOldAmQ8FKMPtDnVAaJwlpdoRIONFSOvdaaKKYQ4l6cYLr5SyUMoiQ2LDCmdS5IRiLcHBBCy5jyQcQ/30mghrgsWpCNE0DNzXOfrFY1AbqBR/gta89Sds2m7z8Rh9nnc+5xwDCLoPXmAkrvk+Gdz//mtSvYjai+U7KBhOxVPMXBQFTNOvoIxBpRrDGm91RpoqXaF+CHstLDUiJoQdDs/WVM+QxmTbwVcFbsqSrVIqvpwMmgM9NfgnS2sLi9vqzod+APp6o6GvLkuAI81WhqPsf7aiomh+RPhQSsBPLh5LK4306TXGt5xtl36vrpyrXHGp/9R8LwA3nxTEVF+WS9hq5l7VsJEYV21bFCWvpqIQQ280uEx7zCkbgboiBd9SSq4BHpzqF4yymCGbeCbDWtubbaARG8YecuVYn51aeQvRbrvH7FPrUeQDa7eXLtauUsZKt7/NtWZyG2DQ+xE82sHfRh+SxDmc+jrWD9/17YnBj/HWcN3EvghzOqkq2m5SPo62dOfK7fuBV/CPghb0SA5iiDlLn4PTMt+27pvRoMJS/bNMuVvLFrm0Jvy7ya6uJz/u/RU/cr4btZvV/zGP5Is9qiEwaARXcO9i2ngZJZZ8mHg4J7YfI09YMoHYii/qEipok6jismKczDYMYGl1LGVxHkb5Of59zODiMyNJ9V3WAeMBO3bQ2X9CSQ26E/6/8NV8hhJk2Zy0NqUKdZUyVE6OOmgNzSfuKPzxZGgvrUz6/W8iKKy29fdm6V0LQAfDvBDOsB+0HMHr59lCTDX3DUZwwAgnnXihgjrpGrZ+pHbQBMt6JuI6QLQfaMYQHkMVDeTS1H7XZ+S6PPWKyvv2HLw7OXVFkDUN1/+7uKc88AmQ9qZdSOCkLKd3cURHCtoIBz8ZNBxwYTHGeWY19Grmn9/4rZIFZmoQq/1Fur X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78e8dcea-3337-495e-e1a7-08dbbedebee1 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:10.0252 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 38/61] avcodec/mpeg4videodec: Avoid superfluous VLC structures 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: eEfcE6oH8xCD For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in some cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg4videodec.c | 93 ++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 51a2c7fe35..347e5f7809 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -57,12 +57,12 @@ #define MB_TYPE_B_VLC_BITS 4 #define STUDIO_INTRA_BITS 9 -static VLC dc_lum, dc_chrom; -static VLC sprite_trajectory; -static VLC mb_type_b_vlc; -static VLC studio_intra_tab[12]; -static VLC studio_luma_dc; -static VLC studio_chroma_dc; +static VLCElem dc_lum[512], dc_chrom[512]; +static VLCElem sprite_trajectory[128]; +static VLCElem mb_type_b_vlc[16]; +static const VLCElem *studio_intra_tab[12]; +static VLCElem studio_luma_dc[528]; +static VLCElem studio_chroma_dc[528]; static const uint8_t mpeg4_block_count[4] = { 0, 6, 8, 12 }; @@ -448,14 +448,14 @@ static int mpeg4_decode_sprite_trajectory(Mpeg4DecContext *ctx, GetBitContext *g int length; int x = 0, y = 0; - length = get_vlc2(gb, sprite_trajectory.table, SPRITE_TRAJ_VLC_BITS, 2); + length = get_vlc2(gb, sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 2); if (length > 0) x = get_xbits(gb, length); if (!(ctx->divx_version == 500 && ctx->divx_build == 413)) check_marker(s->avctx, gb, "before sprite_trajectory"); - length = get_vlc2(gb, sprite_trajectory.table, SPRITE_TRAJ_VLC_BITS, 2); + length = get_vlc2(gb, sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 2); if (length > 0) y = get_xbits(gb, length); @@ -890,9 +890,9 @@ static inline int mpeg4_decode_dc(MpegEncContext *s, int n, int *dir_ptr) int level, code; if (n < 4) - code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1); + code = get_vlc2(&s->gb, dc_lum, DC_VLC_BITS, 1); else - code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1); + code = get_vlc2(&s->gb, dc_chrom, DC_VLC_BITS, 1); if (code < 0 || code > 9 /* && s->nbit < 9 */) { av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n"); @@ -1839,7 +1839,7 @@ static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64]) cbp = 0; } else { modb2 = get_bits1(&s->gb); - mb_type = get_vlc2(&s->gb, mb_type_b_vlc.table, MB_TYPE_B_VLC_BITS, 1); + mb_type = get_vlc2(&s->gb, mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 1); if (mb_type < 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal MB_type\n"); return AVERROR_INVALIDDATA; @@ -2071,7 +2071,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n int cc, dct_dc_size, dct_diff, code, j, idx = 1, group = 0, run = 0, additional_code_len, sign, mismatch; - const VLC *cur_vlc = &studio_intra_tab[0]; + const VLCElem *cur_vlc = studio_intra_tab[0]; uint8_t *const scantable = s->intra_scantable.permutated; const uint16_t *quant_matrix; uint32_t flc; @@ -2085,14 +2085,14 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n if (n < 4) { cc = 0; - dct_dc_size = get_vlc2(&s->gb, studio_luma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_luma_dc, STUDIO_INTRA_BITS, 2); quant_matrix = s->intra_matrix; } else { cc = (n & 1) + 1; if (ctx->rgb) - dct_dc_size = get_vlc2(&s->gb, studio_luma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_luma_dc, STUDIO_INTRA_BITS, 2); else - dct_dc_size = get_vlc2(&s->gb, studio_chroma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_chroma_dc, STUDIO_INTRA_BITS, 2); quant_matrix = s->chroma_intra_matrix; } @@ -2121,7 +2121,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n /* AC Coefficients */ while (1) { - group = get_vlc2(&s->gb, cur_vlc->table, STUDIO_INTRA_BITS, 2); + group = get_vlc2(&s->gb, cur_vlc, STUDIO_INTRA_BITS, 2); if (group < 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal ac coefficient group vlc\n"); @@ -2129,7 +2129,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n } additional_code_len = ac_state_tab[group][0]; - cur_vlc = &studio_intra_tab[ac_state_tab[group][1]]; + cur_vlc = studio_intra_tab[ac_state_tab[group][1]]; if (group == 0) { /* End of Block */ @@ -3760,28 +3760,25 @@ static int mpeg4_update_thread_context_for_user(AVCodecContext *dst, static av_cold void mpeg4_init_static(void) { static uint8_t mpeg4_rvlc_rl_tables[2][2][2 * MAX_RUN + MAX_LEVEL + 3]; + static VLCElem vlc_buf[6498]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); - VLC_INIT_STATIC_FROM_LENGTHS(&studio_luma_dc, STUDIO_INTRA_BITS, 19, - &ff_mpeg4_studio_dc_luma[0][1], 2, - &ff_mpeg4_studio_dc_luma[0][0], 2, 1, - 0, 0, 528); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(studio_luma_dc, STUDIO_INTRA_BITS, 19, + &ff_mpeg4_studio_dc_luma[0][1], 2, + &ff_mpeg4_studio_dc_luma[0][0], 2, 1, + 0, 0); - VLC_INIT_STATIC_FROM_LENGTHS(&studio_chroma_dc, STUDIO_INTRA_BITS, 19, - &ff_mpeg4_studio_dc_chroma[0][1], 2, - &ff_mpeg4_studio_dc_chroma[0][0], 2, 1, - 0, 0, 528); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(studio_chroma_dc, STUDIO_INTRA_BITS, 19, + &ff_mpeg4_studio_dc_chroma[0][1], 2, + &ff_mpeg4_studio_dc_chroma[0][0], 2, 1, + 0, 0); - for (unsigned i = 0, offset = 0; i < 12; i++) { - static VLCElem vlc_buf[6498]; - - studio_intra_tab[i].table = &vlc_buf[offset]; - studio_intra_tab[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - ff_vlc_init_from_lengths(&studio_intra_tab[i], - STUDIO_INTRA_BITS, 24, - &ff_mpeg4_studio_intra[i][0][1], 2, - &ff_mpeg4_studio_intra[i][0][0], 2, 1, - 0, VLC_INIT_STATIC_OVERLONG, NULL); - offset += studio_intra_tab[i].table_size; + for (unsigned i = 0; i < 12; i++) { + studio_intra_tab[i] = + ff_vlc_init_tables_from_lengths(&state, STUDIO_INTRA_BITS, 24, + &ff_mpeg4_studio_intra[i][0][1], 2, + &ff_mpeg4_studio_intra[i][0][0], 2, 1, + 0, 0); } ff_mpeg4_init_rl_intra(); @@ -3790,18 +3787,18 @@ static av_cold void mpeg4_init_static(void) INIT_FIRST_VLC_RL(ff_mpeg4_rl_intra, 554); VLC_INIT_RL(ff_rvlc_rl_inter, 1072); INIT_FIRST_VLC_RL(ff_rvlc_rl_intra, 1072); - VLC_INIT_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */, - &ff_mpeg4_DCtab_lum[0][1], 2, 1, - &ff_mpeg4_DCtab_lum[0][0], 2, 1, 512); - VLC_INIT_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */, - &ff_mpeg4_DCtab_chrom[0][1], 2, 1, - &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512); - VLC_INIT_STATIC_FROM_LENGTHS(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, - ff_sprite_trajectory_lens, 1, - NULL, 0, 0, 0, 0, 128); - VLC_INIT_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, - &ff_mb_type_b_tab[0][1], 2, 1, - &ff_mb_type_b_tab[0][0], 2, 1, 16); + VLC_INIT_STATIC_TABLE(dc_lum, DC_VLC_BITS, 10 /* 13 */, + &ff_mpeg4_DCtab_lum[0][1], 2, 1, + &ff_mpeg4_DCtab_lum[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(dc_chrom, DC_VLC_BITS, 10 /* 13 */, + &ff_mpeg4_DCtab_chrom[0][1], 2, 1, + &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, + ff_sprite_trajectory_lens, 1, + NULL, 0, 0, 0, 0); + VLC_INIT_STATIC_TABLE(mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, + &ff_mb_type_b_tab[0][1], 2, 1, + &ff_mb_type_b_tab[0][0], 2, 1, 0); } static av_cold int decode_init(AVCodecContext *avctx) From patchwork Tue Sep 26 22:17:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43951 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210658pzh; Tue, 26 Sep 2023 15:22:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFPQoVBHqdCI+YMOjRwEkCtgLY79863aKgzVIJqMxlVrFJOZuP9oB4CLUuOmny46/24TLCN X-Received: by 2002:a17:906:30c8:b0:9aa:1c70:1654 with SMTP id b8-20020a17090630c800b009aa1c701654mr48280ejb.54.1695766925472; Tue, 26 Sep 2023 15:22:05 -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 e7-20020a170906248700b009ae227bb7e6si10900461ejb.126.2023.09.26.15.22.04; Tue, 26 Sep 2023 15:22:05 -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=c2RZ9WPb; 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 C56CB68CB4D; Wed, 27 Sep 2023 01:20:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2090.outbound.protection.outlook.com [40.92.89.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBA0D68CB46 for ; Wed, 27 Sep 2023 01:20:14 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QpHfRz3rRG28kg7cFoFydZ4OC31GtSpsfeqbOTpmg+6z3iaoW7xlPraPgepNYfKki7Q5z3WJC1XAZbC0OcvGqeHAAne5HpRy0cNoNYc5c8iNetIoty/BS1mulrat0QyyVq4rlf5RQgb+tRug2BUz5Q5RxfXwxrYR74M98ikgXOrgS0+evFVMVdG8UeHoyyUrxH4isfHp5Zqgo1Uh73GE/P08ifUhOkDdICfQxKbV/QEmvbGSpioU2FibdVXoTQFuYi063AELJR9GsKN1lIQdK2+v86nZ3z4ZuOg1D7vSn89rNfMSvTGFBl5SdBHj53zKZaaQc1iE6xZWexGcrY5akA== 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=lcu0fn7YP+qFMLoOdrnMuXonWkGnzcr1WNGuWPQI+VI=; b=fMnANz9Qqs/f8T7SvC+Lv7O7aXtv8XkD2HjeyFy9Qv5MzcfE8rP/n2bNGjo2FxvyCrB2c1aKO1rtdVaa2CDtkrgaRwUGLjb/NHsqscY+qQUIBne71cznAiHqgKeSiZz5eEwMogZuMfCJGixOlSh1VF3qhD5w/csptJal7HYUl62cYy/hhDowWN6mNJgRf6A2xUa1fLAvNaSxrVhF6JOXAaDjkJHcBDs0C+FUE8d3NgLAg9XzehBsHvIUJpTIiX7TCW8+PVlHwHjPDNYOtEZ0tJ3MykXJN+Cii91H2Ng29/5fzXFQL1YMyFRpYU1QbxFH2C5Emg9SBRf0Ftjzs1IROg== 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=lcu0fn7YP+qFMLoOdrnMuXonWkGnzcr1WNGuWPQI+VI=; b=c2RZ9WPbdEsGO0dtVFDYxecJ12c7qtbZUJv27scl8O67FhZdVulYFM0Dakw1PxOQ/f8a8vjff1mxJAH7pKImbt3KqDb/YPlX5uYNrzsk3MSUkIug8uBamwlErTRifiF++b9gPpZiSKhhVo2pjttFlgPH6nVcTcaRyvvQ2wgvtwDfMJ+ZnWMXtWQ6YKYVPRBV9kA/OmcV9Mzp8jU+6w4r3s/IHQm7EX0QnEFqgnUqHPQfLz1cOvYtyychjXDlPqPDkvgVhvjkrKmNbVoDxRjPutgoEzZQHwzHDlX9seMYamIvNU2MPFFV0eETn7My3W8wx3ElEC2bBCcQ5kbDUp7NPg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:13 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:13 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:10 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/TrfWTD4wJ1JE5Sjhq8Lw/xNY9R2D0nm] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-38-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 28f3eb99-d0ba-40d8-a1e3-08dbbedec0ca X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h8SuWf21W835dHWjcUbvzKaumHW69HSOPB/sIf2k+wlq+D1Ncx5AkBziJCLc1azVoZyGl4jzmBMa/Me7BM9WQT0yNfDD31U2kRGQ+iECGKbGePciC7aJMJ/p7TPQEjxNxZ7+zTYqgudi9ez9QJqxAK6ybUn+vCQcfIo7LUYSGTMuYX9Iib2kM7hTRFTxyyOYEhXgHgmENxH7hg4h91NDUiMBcHRVpxZammxxbTjB8bHq6nr2F1EMYc3Tje1rpiUALb7D4GF75FxnllZ5ycw5RjxTNZFa3K62TRUc5DrgE8xgt6MLTQCiEA3UJabGiMLb1Y/PL2szLMDGGT/LmsuIdG/OLnvA/Kqr+fqH7NXtAtphKzi1cxll6vAMHgq7xI96+aZ/maPhUHr2agLqzY9eWnunsqXZh3G+LImE7p9sgTULjk3/xVRxzux0bNdn+G5o8yGZExChbRBf9o84H15K/MedVAyve0VXDBFk6BUapGRTx0aPlyRWfK0vYAs2vrUnrXTiQf2bjBq7AunNWdbqdJAGhbsz9ukz3OUCEtv9Akq89zppT9x57suzy+alHplTVlSxSv9DNUVebpTu5VW7ByU8gYR1v7lIdudt92T+eP2j268uqqxLxsH8oc0gPlB6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: at94w9lnQONab8mftJ2XZcG4kwz/4ROPB8q/rEIRjrG17bJsWsQO7FkC8r1GWENK5L1EdIe+Kcx0Q23cluTMV4PQ0N6ew9n60y/azJDyd9SO79/24DjG0ymsEx4Y5KNRqX1Hh4vot0WcLZUxwmod93qq5csvNObYjUqfVeQgUvo1i6SudcxpxZ4FDvj826yL2hrZRPafdyWxkl0jVntCm2P86qIA+Gaf9c8IhHTzQIB0cFGzTrccRbQoROQgT2LaI3fH8K3micSgIs49y4f6AKqjFv88O3ls3vhggHltGLAh9vQtMTMah8FePWF20wGyqbCNPXsfRE9Rfxb3GHdq40LruXkX7RBOdT/fzal7xxW+4beimb1s3mJV/lFgg2K5G/sJO6JuUvpvSJ2TshES1jqiUFhSsSPmJkjy8vMhc21sKGplBgLi8KFm2VdIU2HhmLsIJttGQ3vnCzWyIncL74kfoL+Q/QIi3YA3JTOq0GgZRS32L6SAgbjR7N1/2UuBeoZzPnDdt1kX34twPaUWrWBsCxEajdaQ3z33TzEwQVj1R1ab3kKlXuV3/6C39GmBge/hYnfZr7haKYOKeNgEUr8CkJAKue/a8N48GP8mkCgHjsaRvkt2fD1oa50C50UqIrUYOKb2ydGHiafrKHuf44glQ1+9d60i4wfAivrlfdU9A+rYYIVLKrNmETkai7ekJsPAyhQ5cGvmxhQDcXMxjxZZCC4GMUpEB9tTrms9rqLLOaKsCsGEqWPxakBM/emDnTikbx7wSmLkXLSO4ej6V3h54CjpP6cPmwhY9doCvirrLS/vdu4wLK1Z3guxdioZBp89MdrKwF0OKmu1TDVWkTQvqN9rdB1EjqMT1VbHynE03g9c5vkgj0HO4MzdgFMuhLATiJkweUB3MjxWWgI0bHuxeXI2X3LYwfMpLHqbtl+0j7leJphGwZHDZzQueVDwS/Ek2eaQVNgrpvIWnnGGsPdQXtmMGWNxc4DYRhFzoKd677KLbb48NYsQoUtIxj6DF2tSDtTYm9bzDUH0BTA12ZY7rAgazcAaVR1pKTvdh5m0ca8hS6zFC5+ijz7fzK+hHmGZpBUOP/I1XeVKhmYgWHuM1mHDnDc4Nc3g9kSei7N4MGP2YUDpbcj0l14CI1WaM1rsTH+D4rbcaQmfTDHyAMFAQP2McQW9e69Qu4JK53Zkv7khdB3nqr5gRcB8Ao9gf9yDL1KKczLqb08CnpEjTJohOamZg2wQSztxx7lRJ9t5h8u8yRBt4FQNyvQNUr8l X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 28f3eb99-d0ba-40d8-a1e3-08dbbedec0ca X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:13.2151 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 39/61] avcodec/msmpeg4dec: Avoid superfluous VLC structures 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: 1LoMkyTOeLHK For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in some cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4data.h | 2 +- libavcodec/msmpeg4dec.c | 95 +++++++++++++++++++++------------------- libavcodec/msmpeg4dec.h | 4 +- libavcodec/wmv2dec.c | 4 +- 4 files changed, 54 insertions(+), 51 deletions(-) diff --git a/libavcodec/msmpeg4data.h b/libavcodec/msmpeg4data.h index 26ee960f82..aa4ca86a05 100644 --- a/libavcodec/msmpeg4data.h +++ b/libavcodec/msmpeg4data.h @@ -44,7 +44,7 @@ typedef struct MVTable { const uint8_t *table_mvx; const uint8_t *table_mvy; uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */ - VLC vlc; /* decoding: vlc */ + const VLCElem *vlc; /* decoding: vlc */ } MVTable; FF_VISIBILITY_PUSH_HIDDEN diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index 716fc13529..5b10d8f225 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -63,12 +63,12 @@ static inline int msmpeg4v1_pred_dc(MpegEncContext * s, int n, /****************************************/ /* decoding stuff */ -VLC ff_mb_non_intra_vlc[4]; -static VLC v2_dc_lum_vlc; -static VLC v2_dc_chroma_vlc; -static VLC v2_intra_cbpc_vlc; -static VLC v2_mb_type_vlc; -VLC ff_inter_intra_vlc; +const VLCElem *ff_mb_non_intra_vlc[4]; +static VLCElem v2_dc_lum_vlc[1472]; +static VLCElem v2_dc_chroma_vlc[1506]; +static VLCElem v2_intra_cbpc_vlc[8]; +static VLCElem v2_mb_type_vlc[128]; +VLCElem ff_inter_intra_vlc[8]; /* This is identical to H.263 except that its range is multiplied by 2. */ static int msmpeg4v2_decode_motion(MpegEncContext * s, int pred, int f_code) @@ -125,7 +125,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) } if(s->msmpeg4_version==2) - code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1); + code = get_vlc2(&s->gb, v2_mb_type_vlc, V2_MB_TYPE_VLC_BITS, 1); else code = get_vlc2(&s->gb, ff_h263_inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 2); if(code<0 || code>7){ @@ -139,7 +139,7 @@ static int msmpeg4v12_decode_mb(MpegEncContext *s, int16_t block[6][64]) } else { s->mb_intra = 1; if(s->msmpeg4_version==2) - cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1); + cbp = get_vlc2(&s->gb, v2_intra_cbpc_vlc, V2_INTRA_CBPC_VLC_BITS, 1); else cbp = get_vlc2(&s->gb, ff_h263_intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 2); if(cbp<0 || cbp>3){ @@ -230,7 +230,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t block[6][64]) } } - code = get_vlc2(&s->gb, ff_mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3); + code = get_vlc2(&s->gb, ff_mb_non_intra_vlc[DEFAULT_INTER_INDEX], MB_NON_INTRA_VLC_BITS, 3); //s->mb_intra = (code & 0x40) ? 0 : 1; s->mb_intra = (~code & 0x40) >> 6; @@ -271,7 +271,7 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t block[6][64]) s->ac_pred = get_bits1(&s->gb); *mb_type_ptr = MB_TYPE_INTRA; if(s->inter_intra_pred){ - s->h263_aic_dir= get_vlc2(&s->gb, ff_inter_intra_vlc.table, INTER_INTRA_VLC_BITS, 1); + s->h263_aic_dir= get_vlc2(&s->gb, ff_inter_intra_vlc, INTER_INTRA_VLC_BITS, 1); ff_dlog(s, "%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y); } @@ -296,6 +296,8 @@ static int msmpeg4v34_decode_mb(MpegEncContext *s, int16_t block[6][64]) /* init all vlc decoding tables */ static av_cold void msmpeg4_decode_init_static(void) { + static VLCElem vlc_buf[3714 + 2694 + 1636 + 2648 + 1532 + 2488]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); MVTable *mv; INIT_FIRST_VLC_RL(ff_rl_table[0], 642); @@ -308,43 +310,44 @@ static av_cold void msmpeg4_decode_init_static(void) av_assert1(ff_h263_rl_inter.rl_vlc[0]); memcpy(ff_rl_table[5].rl_vlc, ff_h263_rl_inter.rl_vlc, sizeof(ff_rl_table[5].rl_vlc)); + VLC_INIT_STATIC_TABLE(v2_dc_lum_vlc, MSMP4_DC_VLC_BITS, 512, + &ff_v2_dc_lum_table[0][1], 8, 4, + &ff_v2_dc_lum_table[0][0], 8, 4, 0); + VLC_INIT_STATIC_TABLE(v2_dc_chroma_vlc, MSMP4_DC_VLC_BITS, 512, + &ff_v2_dc_chroma_table[0][1], 8, 4, + &ff_v2_dc_chroma_table[0][0], 8, 4, 0); + + VLC_INIT_STATIC_TABLE(v2_intra_cbpc_vlc, V2_INTRA_CBPC_VLC_BITS, 4, + &ff_v2_intra_cbpc[0][1], 2, 1, + &ff_v2_intra_cbpc[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(v2_mb_type_vlc, V2_MB_TYPE_VLC_BITS, 8, + &ff_v2_mb_type[0][1], 2, 1, + &ff_v2_mb_type[0][0], 2, 1, 0); + mv = &ff_mv_tables[0]; - VLC_INIT_STATIC(&mv->vlc, MV_VLC_BITS, MSMPEG4_MV_TABLES_NB_ELEMS + 1, - mv->table_mv_bits, 1, 1, - mv->table_mv_code, 2, 2, 3714); + mv->vlc = ff_vlc_init_tables_sparse(&state, MV_VLC_BITS, + MSMPEG4_MV_TABLES_NB_ELEMS + 1, + mv->table_mv_bits, 1, 1, + mv->table_mv_code, 2, 2, + NULL, 0, 0, 0); mv = &ff_mv_tables[1]; - VLC_INIT_STATIC(&mv->vlc, MV_VLC_BITS, MSMPEG4_MV_TABLES_NB_ELEMS + 1, - mv->table_mv_bits, 1, 1, - mv->table_mv_code, 2, 2, 2694); - - VLC_INIT_STATIC(&v2_dc_lum_vlc, MSMP4_DC_VLC_BITS, 512, - &ff_v2_dc_lum_table[0][1], 8, 4, - &ff_v2_dc_lum_table[0][0], 8, 4, 1472); - VLC_INIT_STATIC(&v2_dc_chroma_vlc, MSMP4_DC_VLC_BITS, 512, - &ff_v2_dc_chroma_table[0][1], 8, 4, - &ff_v2_dc_chroma_table[0][0], 8, 4, 1506); - - VLC_INIT_STATIC(&v2_intra_cbpc_vlc, V2_INTRA_CBPC_VLC_BITS, 4, - &ff_v2_intra_cbpc[0][1], 2, 1, - &ff_v2_intra_cbpc[0][0], 2, 1, 8); - VLC_INIT_STATIC(&v2_mb_type_vlc, V2_MB_TYPE_VLC_BITS, 8, - &ff_v2_mb_type[0][1], 2, 1, - &ff_v2_mb_type[0][0], 2, 1, 128); - - for (unsigned i = 0, offset = 0; i < 4; i++) { - static VLCElem vlc_buf[1636 + 2648 + 1532 + 2488]; - ff_mb_non_intra_vlc[i].table = &vlc_buf[offset]; - ff_mb_non_intra_vlc[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - vlc_init(&ff_mb_non_intra_vlc[i], MB_NON_INTRA_VLC_BITS, 128, - &ff_wmv2_inter_table[i][0][1], 8, 4, - &ff_wmv2_inter_table[i][0][0], 8, 4, - VLC_INIT_STATIC_OVERLONG); - offset += ff_mb_non_intra_vlc[i].table_size; + mv->vlc = ff_vlc_init_tables_sparse(&state, MV_VLC_BITS, + MSMPEG4_MV_TABLES_NB_ELEMS + 1, + mv->table_mv_bits, 1, 1, + mv->table_mv_code, 2, 2, + NULL, 0, 0, 0); + + for (unsigned i = 0; i < 4; i++) { + ff_mb_non_intra_vlc[i] = + ff_vlc_init_tables_sparse(&state, MB_NON_INTRA_VLC_BITS, 128, + &ff_wmv2_inter_table[i][0][1], 8, 4, + &ff_wmv2_inter_table[i][0][0], 8, 4, + NULL, 0, 0, 0); } - VLC_INIT_STATIC(&ff_inter_intra_vlc, INTER_INTRA_VLC_BITS, 4, - &ff_table_inter_intra[0][1], 2, 1, - &ff_table_inter_intra[0][0], 2, 1, 8); + VLC_INIT_STATIC_TABLE(ff_inter_intra_vlc, INTER_INTRA_VLC_BITS, 4, + &ff_table_inter_intra[0][1], 2, 1, + &ff_table_inter_intra[0][0], 2, 1, 0); ff_msmp4_vc1_vlcs_init_once(); } @@ -572,9 +575,9 @@ static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr) if(s->msmpeg4_version<=2){ if (n < 4) { - level = get_vlc2(&s->gb, v2_dc_lum_vlc.table, MSMP4_DC_VLC_BITS, 3); + level = get_vlc2(&s->gb, v2_dc_lum_vlc, MSMP4_DC_VLC_BITS, 3); } else { - level = get_vlc2(&s->gb, v2_dc_chroma_vlc.table, MSMP4_DC_VLC_BITS, 3); + level = get_vlc2(&s->gb, v2_dc_chroma_vlc, MSMP4_DC_VLC_BITS, 3); } if (level < 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n"); @@ -813,7 +816,7 @@ void ff_msmpeg4_decode_motion(MpegEncContext *s, int *mx_ptr, int *my_ptr) mv = &ff_mv_tables[s->mv_table_index]; - code = get_vlc2(&s->gb, mv->vlc.table, MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, mv->vlc, MV_VLC_BITS, 2); if (code == MSMPEG4_MV_TABLES_NB_ELEMS) { mx = get_bits(&s->gb, 6); my = get_bits(&s->gb, 6); diff --git a/libavcodec/msmpeg4dec.h b/libavcodec/msmpeg4dec.h index ad41eea9d4..5daa7c6bc3 100644 --- a/libavcodec/msmpeg4dec.h +++ b/libavcodec/msmpeg4dec.h @@ -28,8 +28,8 @@ #define INTER_INTRA_VLC_BITS 3 #define MB_NON_INTRA_VLC_BITS 9 -extern VLC ff_mb_non_intra_vlc[4]; -extern VLC ff_inter_intra_vlc; +extern const VLCElem *ff_mb_non_intra_vlc[4]; +extern VLCElem ff_inter_intra_vlc[8]; int ff_msmpeg4_decode_init(AVCodecContext *avctx); int ff_msmpeg4_decode_picture_header(MpegEncContext *s); diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c index d7c193455d..ed6140d29c 100644 --- a/libavcodec/wmv2dec.c +++ b/libavcodec/wmv2dec.c @@ -473,7 +473,7 @@ static int wmv2_decode_mb(MpegEncContext *s, int16_t block[6][64]) if (get_bits_left(&s->gb) <= 0) return AVERROR_INVALIDDATA; - code = get_vlc2(&s->gb, ff_mb_non_intra_vlc[w->cbp_table_index].table, + code = get_vlc2(&s->gb, ff_mb_non_intra_vlc[w->cbp_table_index], MB_NON_INTRA_VLC_BITS, 3); s->mb_intra = (~code & 0x40) >> 6; @@ -539,7 +539,7 @@ static int wmv2_decode_mb(MpegEncContext *s, int16_t block[6][64]) show_bits(&s->gb, 24)); s->ac_pred = get_bits1(&s->gb); if (s->inter_intra_pred) { - s->h263_aic_dir = get_vlc2(&s->gb, ff_inter_intra_vlc.table, + s->h263_aic_dir = get_vlc2(&s->gb, ff_inter_intra_vlc, INTER_INTRA_VLC_BITS, 1); ff_dlog(s->avctx, "%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y); From patchwork Tue Sep 26 22:17:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43952 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210714pzh; Tue, 26 Sep 2023 15:22:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHIfi05UimXV+TzICP/DKCJvJi5swbMc4+5EPBKO26l/fya4Smiv/mDDmLmtk0v95XrexEL X-Received: by 2002:a05:6512:3193:b0:503:26ab:9ac9 with SMTP id i19-20020a056512319300b0050326ab9ac9mr85719lfe.48.1695766934157; Tue, 26 Sep 2023 15:22:14 -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 x17-20020aa7d391000000b0052a1d5b92d0si11954560edq.647.2023.09.26.15.22.13; Tue, 26 Sep 2023 15:22:14 -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=eWoQEyGP; 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 B973968CB56; Wed, 27 Sep 2023 01:20:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2090.outbound.protection.outlook.com [40.92.74.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED86268CAE7 for ; Wed, 27 Sep 2023 01:20:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QeoKS/YmxYmqWTr+4NF0tWy5y4ayiL5j6jmxZ+/Vg61vLypV+sZiczBYkQ+sIBeTH6XJ7IUT5Jb1IfI7v7SIq3heFHkZmyTDcOCe1PB4gsXR15eo8efS71y+7a5NcR7QdXZ2KwbYHht6QVUJO6w46Xc6Q72Lpceq/uuSUZkeVpr/G9L/WpI8zWcBIphvXWrWis+DPyfsgotyIipqAamOWuLyjwpFhwfxKPVaSWEOYyVO/2gJ7VQ9sn0HNs7CbjwZ2EMF3DgYPWGLaujMTX+U/NQj4rJQxjdaqm8u1EAPXSEKpo3xAEreYuqxNUJNVwg66rmyINALG5OtV/N0IagmqQ== 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=oawpyiQPUZ1bEKYga+5JL+o12EMnnZs2T9vmcB30hhk=; b=ifRbsnE5/zwyKnKzszfF8103ao7MSSVmUzRReuG4vwIQOiMwoEYhux+AoSQRFN31EslVzyP0lfu7dTVc7FXFu6fkoQvrfftjAYZOg26HPvvtetb//UoOkGH5N0yGVgrCKQf8GjvRu6JGCsDa6hCRGhP4cwmxGcYZu86421nNiTT0B3AoU0iOYdbTLqIrtgVmICaIqmm9Nh8Uw0H2gmEv6akL71Ipqrilx/jslxX8SJQVgFMpEwwl16x7jOFhyX9ZK9HkFbXYcCkvrvJU2KPCS56PH27dMOWmexpbIRwaZe1PMvxXFUY5dr5nmid7kebIpAWgvUaq82avP21l3LGbtQ== 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=oawpyiQPUZ1bEKYga+5JL+o12EMnnZs2T9vmcB30hhk=; b=eWoQEyGPBYgTiokN/0Ax1Hk4qWta8IpcXsrD+x/VZHEwtOYzbSxRKWA4ayUqTaT9TE8jjkuYFXilFJk9YDfE0y2xiMKygjL/rLrkXU3Cnx7BSIXYcRJyWxljf1fM1qL+0BV3Qq5YyB6JJXCWbkQrWuAgBhXbpsZtRAOcLMbiepHFvaRBhzMGx+NYy+kbBPQU+mKcWK7Ay9PE7bzLZpy8nZW2HbqjUeAYgggUSw74i0b1IbkIZ7zA7LCMN+6Rf7SWVQXgrQOaYQOIv8DPrFn9zY7bB/+UgQd+aHNoAnw1bvqK2XsXB6seNjIvlsibfJTAb/oQL3KZVv8A5giVPy55xQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:17 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:17 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:11 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Amd9mm+epC6yJoJ8qqBjNJK+/3I3pPaC] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-39-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 1933e732-0de1-446d-2248-08dbbedec334 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VnIhehrBZwyeTSRSKTVrITlQU5WAaI357pzhiP1JAsVrcpDQa2cJXEpkDoCDXYVqz6TmMTSDbBKp884BZc0lecUlwpoiT46nre2RlKpRqiefcSYPDhDSJBNIpX8TDJJk3Y8O+l8VPf6p9oxqt+MBg58gyWVYdcbzD46PTYY1l03d6H32nKBWfhqrV5yVSXYZejfW2n9W0IqlBchDDKVU28++wa1Izoq+d7L+OQSaMHu6JUnsNRiOSzCnRdyvQ27uTVPnRaoNsmtFiwk6J3AQxAPSZGM/ZtZuWk1s/5mBUMxqtHsd12VfRfv4X6KlgmZRsqVruU61phBp78/g2U8rgEVfKj0flIO5VOFKGIADsPxxwu61dYMJmuonCZXLQkAozkiDlrq/rDCNB4ZxC0aYM4IMqnK2vSOdDDKmV/RdUR8X9wsrvznO7pjXfk9sHUYQ7OUDp+JBMv2Jtw5jZ0H6kHXCx30fzAJG/w01poiFXlM+c5WnZ+LsWcw0s4GKVHxLyKkd4y3TLXkUMu+flEeoFQg+PWlfb+A98zQkvaxT62/cBDusOuBwZrXm6jDQb14qleWRU650s3eDDii8X+2CyoX5imHTJUPu2W/LjnUhcc1bH30O++QbYTm84hYeZ5zd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: G7Q01V9uDcVbSFZhYIY7SBiz1W49YAXL0OELrQzwCdXs952tWA2tJyA5g8igTSMkrySKbYw+2QpkFsp30EpdadBUAigHGjUcgYPzgWb48KPm4huqxV8eTbkCMFcb3gtn7p1cqZwH2E5WwHj6nFR4fEJ68Qo8QwgWb2jquQSl8TcEOukkhQmeedkBx5JrTjk9JZABfgPOE2FvxEq4Q0rNI032Zp8s9b0yMpleRIHMa/GWxMsf3MuXZENcPhOpFVJ1OoKniiZ5obJLYhiUYPDMKFTf+4xcQA4n1mc+AacF1HfOYJDKgT2VBJIV1mzQG/VuoV3HN4ONiatZi5oNFEXk/Gv2E6hKmuDnIJN/dRuTDD8pSoJZM7AHZL8+z4sK9HMqj4ZoIE1xNdQGkLwuFWcEwIWQ3hcIWRMAIQ+KOYvDt41bj0ifogEiw0LOkB5w7z+pHfjbHJd/1+jzZXJqv/6goc1rgkyuDODiQ9PoxI1K0umspsu23ph0issfKwitUFeP2T4RsaHrobYbZz9hVA+nfNtJsob2FoUrLuX1/O2egnkYp/4oZRNrJR11z/oT3nBD+VhtjBP0tu//XHDFW15j66zsd+Rf1PKqt+gx410Kd0T1Fc0AzgMDOG3bRmzOG2g5qqUQ2meb7WxXqm13Btx+yKRXCTBWm/rXUnpt2f1EC/rR+gPoVhXFu9vpSg0zpJRHP1hMGAC7c5OFT18FyY40f/Q5GU4ZW/Jjvu1tbSM6dYKMlHqh7eTPsvaUGbpLZ7aJOSIggMmCdIY8Bi3RoZyeWVwvide4057j9X2rTZgClgs+CEKEjTLs6RnQHPaqcafCvk+yU09Hpr5oEFczxbPvESw91xJcZMu8UAujp1sh4RWolluPPMSRnlCrIjOjHGe/vs1g8HsXtgtmVBeFPGoVN/yv+OcemW4NXxJEiO/LY3ODQkBRTPb2b7/CoF32KKTfBvPPUQ7EBGn/Xbf47qdbYnLDw4R2JKbbUhAbTpPP9hP+wQVS28sJKRaxSsVuk3oCFbWPnGaqPtZs18sJDPIj3RU2Ts4sZsa7QVD31x0Bwl20yiBELbEfJ20V3GduaetpEqKxvJqJokkrS6sj1Ba9AzrUilqOldt7pVVznk5cQBRfPVvBfxn9BjTDdC5aDnmvX4YCK2lQwjEZk4sqxcpXcPr+rt5zwZzc+G7YbYYQkp2a9V1Pe9Mhtzd92mg2YeCJdi/8ZVXx4rhO6sOnYDKCSb6ljnQN+P1xZ/V6XasUZ89Nnss9LWrOrMav8WQT0AmO X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1933e732-0de1-446d-2248-08dbbedec334 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:17.2451 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 40/61] avcodec/aacps: Remove unused AVCodecContext* parameter from ff_ps_apply 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: j/APY6oAWdh8 Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps.c | 3 +-- libavcodec/aacps.h | 2 +- libavcodec/aacsbr_template.c | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/aacps.c b/libavcodec/aacps.c index 655e8fe5b4..ed00006a3a 100644 --- a/libavcodec/aacps.c +++ b/libavcodec/aacps.c @@ -26,7 +26,6 @@ #include "libavutil/common.h" #include "libavutil/mathematics.h" #include "libavutil/mem_internal.h" -#include "avcodec.h" #include "aacps.h" #if USE_FIXED #include "aacps_fixed_tablegen.h" @@ -717,7 +716,7 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) } } -int AAC_RENAME(ff_ps_apply)(AVCodecContext *avctx, PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top) +int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top) { INTFLOAT (*Lbuf)[32][2] = ps->Lbuf; INTFLOAT (*Rbuf)[32][2] = ps->Rbuf; diff --git a/libavcodec/aacps.h b/libavcodec/aacps.h index 3efa38ad88..9d7e79c2b2 100644 --- a/libavcodec/aacps.h +++ b/libavcodec/aacps.h @@ -97,6 +97,6 @@ void AAC_RENAME(ff_ps_init)(void); void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps); int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb, PSCommonContext *ps, int bits_left); -int AAC_RENAME(ff_ps_apply)(AVCodecContext *avctx, PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top); +int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top); #endif /* AVCODEC_AACPS_H */ diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index b33ffd4295..f3d3258d2e 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -1569,7 +1569,7 @@ void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int if (ac->oc[1].m4ac.ps == 1) { if (sbr->ps.common.start) { - AAC_RENAME(ff_ps_apply)(ac->avctx, &sbr->ps, sbr->X[0], sbr->X[1], sbr->kx[1] + sbr->m[1]); + AAC_RENAME(ff_ps_apply)(&sbr->ps, sbr->X[0], sbr->X[1], sbr->kx[1] + sbr->m[1]); } else { memcpy(sbr->X[1], sbr->X[0], sizeof(sbr->X[0])); } From patchwork Tue Sep 26 22:17:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43953 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210807pzh; Tue, 26 Sep 2023 15:22:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGueuuG1DG5yjQIAlaXTCBQIeTk0KncIhdjkyS9dEua9KEveSXXInnAcT/ae5IQA+aU21Yp X-Received: by 2002:a17:907:2cf8:b0:9a2:1e14:86b9 with SMTP id hz24-20020a1709072cf800b009a21e1486b9mr411315ejc.0.1695766942559; Tue, 26 Sep 2023 15:22:22 -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 z22-20020a170906815600b0098cda9c19f0si11093807ejw.762.2023.09.26.15.22.22; Tue, 26 Sep 2023 15:22:22 -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=eJsyovz1; 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 52C5168CAB1; Wed, 27 Sep 2023 01:20:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2098.outbound.protection.outlook.com [40.92.64.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C144368CAB1 for ; Wed, 27 Sep 2023 01:20:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OzvtwN/a1KWxyn4uksV+am5qDZaz7BPa4aV+36KY8njgsyQYPYusU8ya3laCcuXztL+VoKg/ZjoWfNuNhNKtth++pvt/y4pzn72uKoT0k2bMvaYqej5dt0yKqhTQgxH/wEjcxyhcjuvMooc2MW1j/1d4qyOemHt61Lhblz9/3LSFr4nmF0u+ryw4ZeQ5txowF4Li5eflYDVmaLVH2f+mYavpszbibKV7qXhHB1k8nTRtcdwNHuaUkNxTUDDhta6/T3DxFrsXIwMfY4S1noHJEKGnj68eqzC1gWtBO0rmKvdqjvp1ctnDo/80H6L6CyfUR3WUOrOFBfLxReaGiA6/hQ== 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=gm9UDZDONbBRjUBIUDBrml7fWwjQbze0mWeyKV3ovFc=; b=TdioruhHAeLtNFT0Sx/5auZ9bZVHITHsFQan5ITcT27YHSf3edke4pN2k2SloEn4wHGARqGaK+Jc3HqTz7epWbXkgJRzeLe1l6vBmh9rAZ/H9xpLHTWYK5BxebcSuWcqiSEx8arxhUCPjsrNjocvwcaJeWh2laa1s1fZ2b/1a4etc7KOwlTFwMoB+L4370Wn5neosShgYTT7FBAuF8Gt2Bf1hIvLjHocEcKunQCq7/cXuDF8t7tj8HIdr3W1zAm4kETftQuJGMQcBi0dPHLa3DBO/D3MzYVcV25BHZdnBucvZLnh9/NCLIEQX6m24vLzun55aR6VDUObPktKvTewIg== 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=gm9UDZDONbBRjUBIUDBrml7fWwjQbze0mWeyKV3ovFc=; b=eJsyovz1w/xF+nov8vyG+/Y/DqeLHbyAod59//RlaEgrTQkEcRGVNNWl2GFTPbEWMoCzJkdZu+18Ajw+lHDlBOZLwD8ENYjhV/9IOO3i8L+w5OSB0mAAacbsvo4Md1JV+iZ0eA+iFrQpIAcaRPGUMEB8MovstYsGYw4g/001Cx+XV8wE9smsozwLALIG7U+7/k27sphf6VjBY9aLvSujeXrkZjdeYbMccIT2tEIBmTfXRFdQLOsGGN3+i426mnDAPCh82spg39F/0PvWPx+UNldmeBQd6ZY2t5sPUmEc2NnKMJ1FRWE4fvGPe+icyB5F+6kuPWhaZM4b3e8mtgHX0A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:12 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [2oNv4sdPGvV3BefsF+nvDbAmCh9ZhP4N] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-40-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: b5c8a30b-5d60-43b5-b11b-08dbbedec64b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7i5HCyuSTKk4JO5cOqxcpqis+MWtAKrmumqK8FQwiy16Y632jUj15fnZxagtIXgl3VgsFJRifShBcD//i3CAi6UnZ7JFVKKwQ5I4FnOyjBNdf4zDI5XxLOMQt0NH/ybGLzAcNlrOOWD/+hE2CIwsmyth0AUwLK5T2e/BKcRf6b9D9opCH7wv8eijNXIcbgb/EiJfvbyA51EMKX0LV8R75tLCCnhfyTt7GOyh28yp2wS1M3IudAzwXPUUe3cI0x9X7f0zQpVlNfRvwdNYZhS4Hjw7MQC3svsK576vuM1sb9EsxOMFV02r9dlKwvaALIcWQK6B54+YfpIRZIXK3l8hF7+9Y94BikR0zevYX9y/UDcU9tLnvUUSKRzOLtvHGRqxz1ZkqkC9d2scOyCwBiOgFfXKogQOXw/15CHNIG4WMcEN+eDuNEvhof5WFzEWp1BAplaLDP59uwUEC5nMjMJQ5MTt/TPwP6TgmlNG+Te1doofnpznqlHj9pUGvhkAEZhQ/U+bZIR0uMLXf8f6jYpr8e690SkhRYufwvBRZAnF1eT01Dz0oGd/TSiAsR/dBEpsw7wZ8bDSjelrCAYaIprXA15s5Kp7wKmMXaOKTF0Tkek= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5dM5PlkCFUzHprkwGg2/9wA9NzyRLAfDXnjY7ZUvaRRaWnKPHgujwSrsgIJIWm1mEyXQNXmYTK1JR3VKXH4xRToiAtxjfaiXi+zdAKFHf7Xd/5oaUQQeDzY4QK84oy03ZXykDcS4H7ofv9oIVHVzRwQ5ZtTYr+5r45GmjPinaoRY1B7fCwdIfcfpGsVEKU7ZfUWZmdEvDWvEVzz+WGLc6SkY6N1bdTT+XcKQGl1u1vjqWoW05JhyZP60r2/fBA7bilM9M/8DDrckofopRKuZSTes/bK+yGYTcJiUMhiiMjKYb7uTfWiENqnYUE5NN5NzBIqajtsoxXOdklOmatXvYnAv2oPYpOuzWoKjkqMx71pGhf2QwBkrYzynivoXO+Y0V6QDxnKoJWsgMrAR/NFFP1hhz+DkvLOpBYM+z5tfSLp6jbiKUunnEbtH+XpI+vE/tmCAPr1JzGuy94oMn60qEbjP2qNGzo96HM3VOgXw+/VocxfuOLmtO8rHCDc5PZOlEmi7RC9FswYDn3clCBAcTzbp1+KIRraF8r5LO5PITF69G6iZZCdLhHzf2GLEiC8U3OX9cpgCGIsgb6vY9ibmPKAEqz7B2cLFIglMaF82/jRLFOCPw859rlk7JARzHs4AABPBKdK+/K4v3yZL68UCS0cwlMaWjRs6SWGS4n8j73CQMR7GOOCATkzSzRzJFDqKglor4aRiyeWOdN7fFi78FyyVvT2BQq8ulCTjdpCQJRnxzx7q7N9bgacP85GsiVAj2VakT6PIiurAbTYnHwTUOtMry/RD8CF6BCbWXydZT9ZkKj6gtS+qnpdlcyvRvM6FXbXFv21SR2EujMpvk2xxTW0AdtP5mzX+eTIAmj3Mepse5P1WWM2RvISwucDI25Ks/zg4ABU3i2tfak1zbn29IPxe3LXiQX1H8cxJpw2PZofazRDZo/KkE+sSZSMql/0xhbDz9Bu6BNqJL2JP1w+wuwCCliEycazog9jufaMsuQVBZ3jZAVv0VirlehsZoCc4ZP9AliUGVtALzQwCFBRr6BQ3yGOD/rQgDiZZqW7Lq0tHxB25igPIcbZgXCslWbxn8rnxwYax7U2u2kGVCcrJSFxb05kUsFcsLGiC8bZH4wtDKfoGvYno+JjiGqXdpX8fvQ2jS2o394+EPuDIr4p9vsxyI4sWM2Sgv7o17ulxUb3HimbyYGINjTrful2IZMdcC+75otE7O0zXaSU2USH6Wn1DqelNRyxL1+79or3lbxMnpw9c2SmqAz+evZZcFGvd X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5c8a30b-5d60-43b5-b11b-08dbbedec64b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:22.4193 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 41/61] avcodec/aacps: Pass logctx as void* instead of AVCodecContext* 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: neIBP+SgMugh Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps.h | 3 +-- libavcodec/aacps_common.c | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/libavcodec/aacps.h b/libavcodec/aacps.h index 9d7e79c2b2..c8814b4c3d 100644 --- a/libavcodec/aacps.h +++ b/libavcodec/aacps.h @@ -27,7 +27,6 @@ #include "libavutil/mem_internal.h" #include "aacpsdsp.h" -#include "avcodec.h" #include "get_bits.h" #define PS_MAX_NUM_ENV 5 @@ -95,7 +94,7 @@ extern const int8_t ff_k_to_i_34[]; void ff_ps_init_common(void); void AAC_RENAME(ff_ps_init)(void); void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps); -int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb, +int ff_ps_read_data(void *logctx, GetBitContext *gb, PSCommonContext *ps, int bits_left); int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top); diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index bee07b5fb3..11bdb960cf 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -67,14 +67,14 @@ static VLC vlc_ps[10]; * Inter-channel Phase Difference/Overall Phase Difference parameters from the \ * bitstream. \ * \ - * @param avctx contains the current codec context \ + * @param logctx a context for logging \ * @param gb pointer to the input bitstream \ * @param ps pointer to the Parametric Stereo context \ * @param PAR pointer to the parameter to be read \ * @param e envelope to decode \ * @param dt 1: time delta-coded, 0: frequency delta-coded \ */ \ -static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCommonContext *ps, \ +static int read_ ## PAR ## _data(void *logctx, GetBitContext *gb, PSCommonContext *ps, \ int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \ { \ int b, num = ps->nr_ ## PAR ## _par; \ @@ -101,7 +101,7 @@ static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCom } \ return 0; \ err: \ - av_log(avctx, AV_LOG_ERROR, "illegal "#PAR"\n"); \ + av_log(logctx, AV_LOG_ERROR, "illegal "#PAR"\n"); \ return AVERROR_INVALIDDATA; \ } @@ -131,7 +131,7 @@ static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps, return get_bits_count(gb) - count; } -int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, +int ff_ps_read_data(void *logctx, GetBitContext *gb_host, PSCommonContext *ps, int bits_left) { int e; @@ -146,7 +146,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_iid) { int iid_mode = get_bits(gb, 3); if (iid_mode > 5) { - av_log(avctx, AV_LOG_ERROR, "iid_mode %d is reserved.\n", + av_log(logctx, AV_LOG_ERROR, "iid_mode %d is reserved.\n", iid_mode); goto err; } @@ -158,7 +158,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_icc) { ps->icc_mode = get_bits(gb, 3); if (ps->icc_mode > 5) { - av_log(avctx, AV_LOG_ERROR, "icc_mode %d is reserved.\n", + av_log(logctx, AV_LOG_ERROR, "icc_mode %d is reserved.\n", ps->icc_mode); goto err; } @@ -176,7 +176,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, for (e = 1; e <= ps->num_env; e++) { ps->border_position[e] = get_bits(gb, 5); if (ps->border_position[e] < ps->border_position[e-1]) { - av_log(avctx, AV_LOG_ERROR, "border_position non monotone.\n"); + av_log(logctx, AV_LOG_ERROR, "border_position non monotone.\n"); goto err; } } @@ -187,7 +187,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_iid) { for (e = 0; e < ps->num_env; e++) { int dt = get_bits1(gb); - if (read_iid_data(avctx, gb, ps, ps->iid_par, huff_iid[2*dt+ps->iid_quant], e, dt)) + if (read_iid_data(logctx, gb, ps, ps->iid_par, huff_iid[2*dt+ps->iid_quant], e, dt)) goto err; } } else @@ -196,7 +196,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_icc) for (e = 0; e < ps->num_env; e++) { int dt = get_bits1(gb); - if (read_icc_data(avctx, gb, ps, ps->icc_par, dt ? huff_icc_dt : huff_icc_df, e, dt)) + if (read_icc_data(logctx, gb, ps, ps->icc_par, dt ? huff_icc_dt : huff_icc_df, e, dt)) goto err; } else @@ -213,7 +213,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, cnt -= 2 + ps_read_extension_data(gb, ps, ps_extension_id); } if (cnt < 0) { - av_log(avctx, AV_LOG_ERROR, "ps extension overflow %d\n", cnt); + av_log(logctx, AV_LOG_ERROR, "ps extension overflow %d\n", cnt); goto err; } skip_bits(gb, cnt); @@ -241,7 +241,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_iid){ for (b = 0; b < ps->nr_iid_par; b++) { if (FFABS(ps->iid_par[ps->num_env][b]) > 7 + 8 * ps->iid_quant) { - av_log(avctx, AV_LOG_ERROR, "iid_par invalid\n"); + av_log(logctx, AV_LOG_ERROR, "iid_par invalid\n"); goto err; } } @@ -249,7 +249,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, if (ps->enable_icc){ for (b = 0; b < ps->nr_iid_par; b++) { if (ps->icc_par[ps->num_env][b] > 7U) { - av_log(avctx, AV_LOG_ERROR, "icc_par invalid\n"); + av_log(logctx, AV_LOG_ERROR, "icc_par invalid\n"); goto err; } } @@ -278,7 +278,7 @@ int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, skip_bits_long(gb_host, bits_consumed); return bits_consumed; } - av_log(avctx, AV_LOG_ERROR, "Expected to read %d PS bits actually read %d.\n", bits_left, bits_consumed); + av_log(logctx, AV_LOG_ERROR, "Expected to read %d PS bits actually read %d.\n", bits_left, bits_consumed); err: ps->start = 0; skip_bits_long(gb_host, bits_left); From patchwork Tue Sep 26 22:17:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43954 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210861pzh; Tue, 26 Sep 2023 15:22:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF0oGZkmD68ENaIlntiA1j92wRfHgKiOvGcDKAafT7SPQl4g9MuNiQrlaTKo3jY1gIGA0FI X-Received: by 2002:aa7:cf17:0:b0:531:3c4e:98bc with SMTP id a23-20020aa7cf17000000b005313c4e98bcmr303783edy.8.1695766952755; Tue, 26 Sep 2023 15:22:32 -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 q21-20020aa7da95000000b00528497fa1dfsi11307625eds.584.2023.09.26.15.22.31; Tue, 26 Sep 2023 15:22:32 -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=clJbkvDN; 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 7038568CB65; Wed, 27 Sep 2023 01:20:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2098.outbound.protection.outlook.com [40.92.64.98]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 875A568CAB1 for ; Wed, 27 Sep 2023 01:20:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=chWePXeMcGBhV3GQbnd9a3TzZBZctX5m/9Y7uK9AJgSLExP59LPxxU6e5uSENqWPxqRwg9c3hn5JPzCUXfVpYG2hcYT8DRh9clvdVNjz3SRbdK3lZZvn7f0esaWv9QQoSbtnRD6nT7QkAkFqrwWdGrw/kRP+p1wYhx6XEvHRLPgunHhn+fuj+h2kP1r9N8frcduXZcziD2zLaE+iXXHKTNFaIP3qswR5a6MkezDjnvGLCqTXjmZkSGO/E0asznZwuMWtTobGcgnho1Wdq4/qReBngQVC4PS/kmi5jACuyUHbcu5Y1xusWflO+JxbbeuosADa4M6xI/L01RiioGz4hQ== 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=Tqp/ABVSGpjnwYUWO+c/m2dPYgf73Qr7ewqr+375KRs=; b=O/xY1euCVR26VlkO25hi9pNh0PynibyZAulYG05DCzUnLXEqFLN1AXkY+cZzGD1aP9+yz4p1lMAYM1T/ZpqG6g5q5MIeO/Drkw43UuM621HVUUcA3LD6ZEjr9J+Bd3jeRBaP/8KXFuAu7oQ/PanMvd0kxIjeBGh9dRHCiqZVuj1Yy/Ryxv2udJlLrLOMGTShBh446+HGrBppGjzMLuWeMqoYXwDnUgrvw8cpxmZG4niZxTn87UEwYLdmiIw353OLv1Fe3pvy2sieSB2BiokNaTSw3mHdlocVD7mlkVYSxfPwECa0Eu1tUZutPwhJvVGsc+td7vWvVn1AwnF5CFx3xg== 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=Tqp/ABVSGpjnwYUWO+c/m2dPYgf73Qr7ewqr+375KRs=; b=clJbkvDNiarbkHWS98c2pXhjsTds2zq+nm2PXUmsKAzWJ3kyjw4tV1/xftUJ8vu4jBGce487C7bkBNlQSWnvRf+xc/0lbZ3j3Z47XoZUU1XAp9mL2Sc7n+7UlUKvGeSi2tPK6CDzfedroGojpSTKxsqpY0rZgaO15loTS5HLC9rFox8ufc90PsIXkwqCFV+DfWBtUS/mrMg9n2od09G6UEEyxSI7dlBETX3C73QYk1NatabuKJYzORZNe+ulRosWfVagv2cNEMOxX8qbxRodvjJZb6+gh4QsU16Xg0G5vRveFf0gljFoJj/t86pctr0zxe+x1DsEPmQvTdN6t+qZjg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:26 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:13 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [YFewN+GbvawVi9gxAJxiSEP8NEITLB8Z] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-41-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 7cc86c83-4bdd-4e58-a701-08dbbedec8e9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dqGJbpW++aTDhWDOflUudNtjlw+u1TGYBuFT7oiffQzIUPItpkYFq1oWJAB0Esx7zBWvG7cwjgg+ZXzVjUlD1gRmtfJozpybu+PvvUKMdbjPcyk1oVX4vcT/wfw1YU8/3N4SZWRyEDD5ThhlV5ogWwhtxJXvo9mLSpBz8tQ0FuzulgvZZIqITqjVCKn1+ns3ldcCwZpQpB/FrG/AOir/pyxutws9nlZjx+4Dp4U0CSJZd9kBAzv+cDQpxrgAt/a1tk1FX84eKa8hGsYqplG2j65yvaaKz2CsvtBeKWb05/jjS7hdTB8XvP8LRbH8bb39Or2IUyx/tQwJANIQ0DDZV6AsEGpXEsO/70Wu/LBb3jbWmQ+PJvKPcXfTzocSB7hU/a53G1LVtQWISUFJnw+I1nnf8lpMW+JutB8A3XYtF0n7swLSi1uOJhVYPKTrzc3VVqfXeFHLgUC9M1HPbGCk8T2Zju8o8E0bAq6qe2osebzHq9Br02yN7ViQEuEFUvWEP5QEJ1WCzfJDbJOipyJzGCWoeIQLyl+hn6L3+e+EERGYXZr8ZTCjgWIZBSXS0kGp5sNyoUiholsEQkxMbHuMtVy+dTsmu/lp/fKxZv4wKcPXSqCB72vVO3QGoKMh1iTw X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m1+cHGfWFY46WTuNmNMtGqXADej1QwF7KghqBNNwyDYrG2UeDSPTQWHXh9wW1WFnwjmTv2ODPKry9ckHjbgtclMEwgVyUastHVDyIQEg6Y9dTY6mQJKyZHN5SByAAHf6JfRt6evnogbedfo438EQObsViM5+nRRNqd6Xj2qrWgFjJoVP94/A7G1pGCbU3rHjqwLjX6o2ym6KLvvxFJ8Wi3l/7C20GQLW6obny3xPtQw/FnNxE5eYe5DavDjRG1+DedtJGRUsv5X5LG1A4NqR5Cb//MhdX1SrwWeD1V26nTIP9Yg1S4N8WpiLB38lA73QTOCTeRpOFIAenm/infxUrIPcS0aQUONT8rCasbyhyWiIqUqS+U20vskGeZMa3W4gifBnd/Jxtgnbham2UCz7QJYURsg7Rb0670BU1JIoBeoUzag4qcdHaSOErYs+jm1Ki5SPxpL0NrI+h+jeHzh4F7HedKK3IodcfFrbX3+ZGlsue0C8TLK7x+s+/UGsSLK1S4qwRcinmuxVrKv2aDP2NYX4ewDg2C5/fhitVB/MxPPrGfHdkz0j8pUxDIINJv00lWjKEmaEzMLQrTJweMllWAmGLF74cSPu9xjxb6csl6Ul60SQafFOagMVXsQLyAhKtFtm6cWh+u3XG0+UdJJdmgXqIg1pKXVganUxf/BVrevZeJ4tcb1jQ1nNx+1VCkfM9PToKi6cjbuDlWauxvYZ8FT0faakHlIBfcHR1BAszxZC5Q5oQhg+RFkWZBYueyay89xWQ08/NWp9GvjiGIIj79RZnkU0Pv3lQ0E/8AttXG5atHgdvat3FoP8VwHs/amzldFz6C6NqV9JayjCBBqIWtivMdZEJfOojyrkEewtF7uMRc4irlsao76n1U+M3vDcX3KnN7hwyGsP7KXLVTcYDfDdONKF4NQfD2667wSN4WYwedqk7PLh3T7camQUwhBklKJTT7Ywqn8IGlbQw2JRlKSe5NSMVkWkkWRCHIvf0GWW8JHftKRpyC85uXro+RYufGGEDwlgXtqJ4jSnDNXKOSkaNdbyAYni2ofEbzCuch7xPZTkIXE1wFPofqkWF2TJOKaYijqG/OEmiG9nHTA1NdPCoHg0dsMf195CxI60KlBMdlIRRIdb+iSXiPXoVy+IJcqzFtjhqvo/5hv/lycwTfPY4GtvCxW6Lo0PjKn60MzKShByLA7kkZIPP7PprUc1AK6ZqA47cVs49gWSbumjQbisS6oF9ppz4l+ZuudTwnX0E4bPHXguio9gJQP6N4H5 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7cc86c83-4bdd-4e58-a701-08dbbedec8e9 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:26.8392 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 42/61] avcodec/aacdectab: Deduplicate common decoder tables 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: tlcMo56dgrUJ Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 6 +- libavcodec/aacdec.c | 8 +-- libavcodec/aacdec_common.c | 119 +++++++++++++++++++++++++++++++++++ libavcodec/aacdec_fixed.c | 4 +- libavcodec/aacdec_template.c | 36 +++++------ libavcodec/aacdectab.h | 95 +++------------------------- 6 files changed, 154 insertions(+), 114 deletions(-) create mode 100644 libavcodec/aacdec_common.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 9e96892365..d4c21474ec 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -180,10 +180,12 @@ OBJS-$(CONFIG_WMV2DSP) += wmv2dsp.o OBJS-$(CONFIG_ZERO12V_DECODER) += 012v.o OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o OBJS-$(CONFIG_A64MULTI5_ENCODER) += a64multienc.o elbg.o -OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aactab.o aacsbr.o aacps_common.o aacps_float.o \ +OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aacdec_common.o aactab.o \ + aacsbr.o aacps_common.o aacps_float.o \ kbdwin.o \ sbrdsp.o aacpsdsp_float.o cbrt_data.o -OBJS-$(CONFIG_AAC_FIXED_DECODER) += aacdec_fixed.o aactab.o aacsbr_fixed.o aacps_common.o aacps_fixed.o \ +OBJS-$(CONFIG_AAC_FIXED_DECODER) += aacdec_fixed.o aacdec_common.o aactab.o \ + aacsbr_fixed.o aacps_common.o aacps_fixed.o \ kbdwin.o \ sbrdsp_fixed.o aacpsdsp_fixed.o cbrt_data_fixed.o OBJS-$(CONFIG_AAC_ENCODER) += aacenc.o aaccoder.o aacenctab.o \ diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index ca31540d3c..d66ebf4a7c 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -564,8 +564,8 @@ const FFCodec ff_aac_decoder = { }, .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, - CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(aac_channel_layout) - .p.ch_layouts = aac_ch_layout, + CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(ff_aac_channel_layout) + .p.ch_layouts = ff_aac_ch_layout, .flush = flush, .p.priv_class = &aac_decoder_class, .p.profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), @@ -590,8 +590,8 @@ const FFCodec ff_aac_latm_decoder = { }, .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, - CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(aac_channel_layout) - .p.ch_layouts = aac_ch_layout, + CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(ff_aac_channel_layout) + .p.ch_layouts = ff_aac_ch_layout, .flush = flush, .p.profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), }; diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c new file mode 100644 index 0000000000..c75c6fadc6 --- /dev/null +++ b/libavcodec/aacdec_common.c @@ -0,0 +1,119 @@ +/* + * Common code and tables of the AAC fixed- and floating-point decoders + * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org ) + * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com ) + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Common code and tables of the AAC fixed- and floating-point decoders + */ + +#include "aac.h" +#include "aacdectab.h" + +const int8_t ff_tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 }; + +const uint8_t ff_aac_channel_layout_map[16][16][3] = { + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, }, + { { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, + { { 0, } }, + { { 0, } }, + { { 0, } }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, + { + { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, // SCE1 = FC, + { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, // CPE1 = FLc and FRc, + { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, // CPE2 = FL and FR, + { TYPE_CPE, 2, AAC_CHANNEL_BACK }, // CPE3 = SiL and SiR, + { TYPE_CPE, 3, AAC_CHANNEL_BACK }, // CPE4 = BL and BR, + { TYPE_SCE, 1, AAC_CHANNEL_BACK }, // SCE2 = BC, + { TYPE_LFE, 0, AAC_CHANNEL_LFE }, // LFE1 = LFE1, + { TYPE_LFE, 1, AAC_CHANNEL_LFE }, // LFE2 = LFE2, + { TYPE_SCE, 2, AAC_CHANNEL_FRONT }, // SCE3 = TpFC, + { TYPE_CPE, 4, AAC_CHANNEL_FRONT }, // CPE5 = TpFL and TpFR, + { TYPE_CPE, 5, AAC_CHANNEL_SIDE }, // CPE6 = TpSiL and TpSiR, + { TYPE_SCE, 3, AAC_CHANNEL_SIDE }, // SCE4 = TpC, + { TYPE_CPE, 6, AAC_CHANNEL_BACK }, // CPE7 = TpBL and TpBR, + { TYPE_SCE, 4, AAC_CHANNEL_BACK }, // SCE5 = TpBC, + { TYPE_SCE, 5, AAC_CHANNEL_FRONT }, // SCE6 = BtFC, + { TYPE_CPE, 7, AAC_CHANNEL_FRONT }, // CPE8 = BtFL and BtFR + }, + { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, { TYPE_CPE, 2, AAC_CHANNEL_FRONT }, }, + { { 0, } }, +}; + +const int16_t ff_aac_channel_map[3][4][6] = { + { + { AV_CHAN_FRONT_CENTER, AV_CHAN_FRONT_LEFT_OF_CENTER, AV_CHAN_FRONT_RIGHT_OF_CENTER, AV_CHAN_FRONT_LEFT, AV_CHAN_FRONT_RIGHT, AV_CHAN_NONE }, + { AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, + { AV_CHAN_UNUSED, AV_CHAN_SIDE_LEFT, AV_CHAN_SIDE_RIGHT, AV_CHAN_BACK_LEFT, AV_CHAN_BACK_RIGHT, AV_CHAN_BACK_CENTER }, + { AV_CHAN_LOW_FREQUENCY, AV_CHAN_LOW_FREQUENCY_2, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, + }, + { + { AV_CHAN_TOP_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_FRONT_LEFT, AV_CHAN_TOP_FRONT_RIGHT, AV_CHAN_NONE }, + { AV_CHAN_UNUSED, AV_CHAN_TOP_SIDE_LEFT, AV_CHAN_TOP_SIDE_RIGHT, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_CENTER}, + { AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_BACK_LEFT, AV_CHAN_TOP_BACK_RIGHT, AV_CHAN_TOP_BACK_CENTER}, + { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE}, + }, + { + { AV_CHAN_BOTTOM_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_BOTTOM_FRONT_LEFT, AV_CHAN_BOTTOM_FRONT_RIGHT, AV_CHAN_NONE }, + { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, + { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, + { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, + }, +}; + +#if FF_API_OLD_CHANNEL_LAYOUT +const uint64_t ff_aac_channel_layout[] = { + AV_CH_LAYOUT_MONO, + AV_CH_LAYOUT_STEREO, + AV_CH_LAYOUT_SURROUND, + AV_CH_LAYOUT_4POINT0, + AV_CH_LAYOUT_5POINT0_BACK, + AV_CH_LAYOUT_5POINT1_BACK, + AV_CH_LAYOUT_7POINT1_WIDE_BACK, + AV_CH_LAYOUT_6POINT1_BACK, + AV_CH_LAYOUT_7POINT1, + AV_CH_LAYOUT_22POINT2, + AV_CH_LAYOUT_7POINT1_TOP_BACK, + 0, +}; +#endif + +const AVChannelLayout ff_aac_ch_layout[] = { + AV_CHANNEL_LAYOUT_MONO, + AV_CHANNEL_LAYOUT_STEREO, + AV_CHANNEL_LAYOUT_SURROUND, + AV_CHANNEL_LAYOUT_4POINT0, + AV_CHANNEL_LAYOUT_5POINT0_BACK, + AV_CHANNEL_LAYOUT_5POINT1_BACK, + AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK, + AV_CHANNEL_LAYOUT_6POINT1_BACK, + AV_CHANNEL_LAYOUT_7POINT1, + AV_CHANNEL_LAYOUT_22POINT2, + AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK, + { 0 }, +}; diff --git a/libavcodec/aacdec_fixed.c b/libavcodec/aacdec_fixed.c index 46f0ebf91b..2b8ac67659 100644 --- a/libavcodec/aacdec_fixed.c +++ b/libavcodec/aacdec_fixed.c @@ -465,8 +465,8 @@ const FFCodec ff_aac_fixed_decoder = { }, .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, - CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(aac_channel_layout) - .p.ch_layouts = aac_ch_layout, + CODEC_OLD_CHANNEL_LAYOUTS_ARRAY(ff_aac_channel_layout) + .p.ch_layouts = ff_aac_ch_layout, .p.priv_class = &aac_decoder_class, .p.profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), .flush = flush, diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 51a4cb2b66..3fb9a01da5 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -283,10 +283,10 @@ static int assign_channels(struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t if (pos == AAC_CHANNEL_LFE) { while (nb_channels) { - if (aac_channel_map[layer][pos - 1][j] == AV_CHAN_NONE) + if (ff_aac_channel_map[layer][pos - 1][j] == AV_CHAN_NONE) return -1; e2c_vec[i] = (struct elem_to_channel) { - .av_position = 1ULL << aac_channel_map[layer][pos - 1][j], + .av_position = 1ULL << ff_aac_channel_map[layer][pos - 1][j], .syn_ele = layout_map[i][0], .elem_id = layout_map[i][1], .aac_position = pos @@ -302,12 +302,12 @@ static int assign_channels(struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t } while (nb_channels & 1) { - if (aac_channel_map[layer][pos - 1][0] == AV_CHAN_NONE) + if (ff_aac_channel_map[layer][pos - 1][0] == AV_CHAN_NONE) return -1; - if (aac_channel_map[layer][pos - 1][0] == AV_CHAN_UNUSED) + if (ff_aac_channel_map[layer][pos - 1][0] == AV_CHAN_UNUSED) break; e2c_vec[i] = (struct elem_to_channel) { - .av_position = 1ULL << aac_channel_map[layer][pos - 1][0], + .av_position = 1ULL << ff_aac_channel_map[layer][pos - 1][0], .syn_ele = layout_map[i][0], .elem_id = layout_map[i][1], .aac_position = pos @@ -319,21 +319,21 @@ static int assign_channels(struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t j = (pos != AAC_CHANNEL_SIDE) && nb_channels <= 3 ? 3 : 1; while (nb_channels >= 2) { - if (aac_channel_map[layer][pos - 1][j] == AV_CHAN_NONE || - aac_channel_map[layer][pos - 1][j+1] == AV_CHAN_NONE) + if (ff_aac_channel_map[layer][pos - 1][j] == AV_CHAN_NONE || + ff_aac_channel_map[layer][pos - 1][j+1] == AV_CHAN_NONE) return -1; i += assign_pair(e2c_vec, layout_map, i, - 1ULL << aac_channel_map[layer][pos - 1][j], - 1ULL << aac_channel_map[layer][pos - 1][j+1], + 1ULL << ff_aac_channel_map[layer][pos - 1][j], + 1ULL << ff_aac_channel_map[layer][pos - 1][j+1], pos, layout); j += 2; nb_channels -= 2; } while (nb_channels & 1) { - if (aac_channel_map[layer][pos - 1][5] == AV_CHAN_NONE) + if (ff_aac_channel_map[layer][pos - 1][5] == AV_CHAN_NONE) return -1; e2c_vec[i] = (struct elem_to_channel) { - .av_position = 1ULL << aac_channel_map[layer][pos - 1][5], + .av_position = 1ULL << ff_aac_channel_map[layer][pos - 1][5], .syn_ele = layout_map[i][0], .elem_id = layout_map[i][1], .aac_position = pos @@ -552,8 +552,8 @@ static int set_default_channel_config(AACContext *ac, AVCodecContext *avctx, channel_config); return AVERROR_INVALIDDATA; } - *tags = tags_per_config[channel_config]; - memcpy(layout_map, aac_channel_layout_map[channel_config - 1], + *tags = ff_tags_per_config[channel_config]; + memcpy(layout_map, ff_aac_channel_layout_map[channel_config - 1], *tags * sizeof(*layout_map)); /* @@ -661,7 +661,7 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id) * SCE[0] CPE[0] CPE[1] LFE[0]. * If we seem to have encountered such a stream, transfer * the LFE[0] element to the SCE[1]'s mapping */ - if (ac->tags_mapped == tags_per_config[ac->oc[1].m4ac.chan_config] - 1 && (type == TYPE_LFE || type == TYPE_SCE)) { + if (ac->tags_mapped == ff_tags_per_config[ac->oc[1].m4ac.chan_config] - 1 && (type == TYPE_LFE || type == TYPE_SCE)) { if (!ac->warned_remapping_once && (type != TYPE_LFE || elem_id != 0)) { av_log(ac->avctx, AV_LOG_WARNING, "This stream seems to incorrectly report its last channel as %s[%d], mapping to LFE[0]\n", @@ -683,7 +683,7 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id) * SCE[0] CPE[0] SCE[1]. * If we seem to have encountered such a stream, transfer * the SCE[1] element to the LFE[0]'s mapping */ - if (ac->tags_mapped == tags_per_config[ac->oc[1].m4ac.chan_config] - 1 && (type == TYPE_LFE || type == TYPE_SCE)) { + if (ac->tags_mapped == ff_tags_per_config[ac->oc[1].m4ac.chan_config] - 1 && (type == TYPE_LFE || type == TYPE_SCE)) { if (!ac->warned_remapping_once && (type != TYPE_SCE || elem_id != 1)) { av_log(ac->avctx, AV_LOG_WARNING, "This stream seems to incorrectly report its last channel as %s[%d], mapping to SCE[1]\n", @@ -3091,9 +3091,9 @@ static int aac_decode_er_frame(AVCodecContext *avctx, void *data, chan_config); return AVERROR_INVALIDDATA; } - for (i = 0; i < tags_per_config[chan_config]; i++) { - const int elem_type = aac_channel_layout_map[chan_config-1][i][0]; - const int elem_id = aac_channel_layout_map[chan_config-1][i][1]; + for (i = 0; i < ff_tags_per_config[chan_config]; i++) { + const int elem_type = ff_aac_channel_layout_map[chan_config-1][i][0]; + const int elem_id = ff_aac_channel_layout_map[chan_config-1][i][1]; if (!(che=get_che(ac, elem_type, elem_id))) { av_log(ac->avctx, AV_LOG_ERROR, "channel element %d.%d is not allocated\n", diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index 41f1db781d..db6fd0a04f 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -1,7 +1,5 @@ /* * AAC decoder data - * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org ) - * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com ) * * This file is part of FFmpeg. * @@ -30,99 +28,20 @@ #ifndef AVCODEC_AACDECTAB_H #define AVCODEC_AACDECTAB_H -#include "libavutil/channel_layout.h" -#include "aac.h" - #include -static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 }; +#include "libavutil/channel_layout.h" + +extern const int8_t ff_tags_per_config[16]; -static const uint8_t aac_channel_layout_map[16][16][3] = { - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, }, - { { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, - { { 0, } }, - { { 0, } }, - { { 0, } }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, - { - { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, // SCE1 = FC, - { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, // CPE1 = FLc and FRc, - { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, // CPE2 = FL and FR, - { TYPE_CPE, 2, AAC_CHANNEL_BACK }, // CPE3 = SiL and SiR, - { TYPE_CPE, 3, AAC_CHANNEL_BACK }, // CPE4 = BL and BR, - { TYPE_SCE, 1, AAC_CHANNEL_BACK }, // SCE2 = BC, - { TYPE_LFE, 0, AAC_CHANNEL_LFE }, // LFE1 = LFE1, - { TYPE_LFE, 1, AAC_CHANNEL_LFE }, // LFE2 = LFE2, - { TYPE_SCE, 2, AAC_CHANNEL_FRONT }, // SCE3 = TpFC, - { TYPE_CPE, 4, AAC_CHANNEL_FRONT }, // CPE5 = TpFL and TpFR, - { TYPE_CPE, 5, AAC_CHANNEL_SIDE }, // CPE6 = TpSiL and TpSiR, - { TYPE_SCE, 3, AAC_CHANNEL_SIDE }, // SCE4 = TpC, - { TYPE_CPE, 6, AAC_CHANNEL_BACK }, // CPE7 = TpBL and TpBR, - { TYPE_SCE, 4, AAC_CHANNEL_BACK }, // SCE5 = TpBC, - { TYPE_SCE, 5, AAC_CHANNEL_FRONT }, // SCE6 = BtFC, - { TYPE_CPE, 7, AAC_CHANNEL_FRONT }, // CPE8 = BtFL and BtFR - }, - { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, { TYPE_CPE, 2, AAC_CHANNEL_FRONT }, }, - { { 0, } }, -}; +extern const uint8_t ff_aac_channel_layout_map[16][16][3]; -static const int16_t aac_channel_map[3][4][6] = { - { - { AV_CHAN_FRONT_CENTER, AV_CHAN_FRONT_LEFT_OF_CENTER, AV_CHAN_FRONT_RIGHT_OF_CENTER, AV_CHAN_FRONT_LEFT, AV_CHAN_FRONT_RIGHT, AV_CHAN_NONE }, - { AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, - { AV_CHAN_UNUSED, AV_CHAN_SIDE_LEFT, AV_CHAN_SIDE_RIGHT, AV_CHAN_BACK_LEFT, AV_CHAN_BACK_RIGHT, AV_CHAN_BACK_CENTER }, - { AV_CHAN_LOW_FREQUENCY, AV_CHAN_LOW_FREQUENCY_2, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, - }, - { - { AV_CHAN_TOP_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_FRONT_LEFT, AV_CHAN_TOP_FRONT_RIGHT, AV_CHAN_NONE }, - { AV_CHAN_UNUSED, AV_CHAN_TOP_SIDE_LEFT, AV_CHAN_TOP_SIDE_RIGHT, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_CENTER}, - { AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_BACK_LEFT, AV_CHAN_TOP_BACK_RIGHT, AV_CHAN_TOP_BACK_CENTER}, - { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE}, - }, - { - { AV_CHAN_BOTTOM_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_BOTTOM_FRONT_LEFT, AV_CHAN_BOTTOM_FRONT_RIGHT, AV_CHAN_NONE }, - { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, - { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, - { AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, - }, -}; +extern const int16_t ff_aac_channel_map[3][4][6]; #if FF_API_OLD_CHANNEL_LAYOUT -static const uint64_t aac_channel_layout[] = { - AV_CH_LAYOUT_MONO, - AV_CH_LAYOUT_STEREO, - AV_CH_LAYOUT_SURROUND, - AV_CH_LAYOUT_4POINT0, - AV_CH_LAYOUT_5POINT0_BACK, - AV_CH_LAYOUT_5POINT1_BACK, - AV_CH_LAYOUT_7POINT1_WIDE_BACK, - AV_CH_LAYOUT_6POINT1_BACK, - AV_CH_LAYOUT_7POINT1, - AV_CH_LAYOUT_22POINT2, - AV_CH_LAYOUT_7POINT1_TOP_BACK, - 0, -}; +extern const uint64_t ff_aac_channel_layout[]; #endif -static const AVChannelLayout aac_ch_layout[] = { - AV_CHANNEL_LAYOUT_MONO, - AV_CHANNEL_LAYOUT_STEREO, - AV_CHANNEL_LAYOUT_SURROUND, - AV_CHANNEL_LAYOUT_4POINT0, - AV_CHANNEL_LAYOUT_5POINT0_BACK, - AV_CHANNEL_LAYOUT_5POINT1_BACK, - AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK, - AV_CHANNEL_LAYOUT_6POINT1_BACK, - AV_CHANNEL_LAYOUT_7POINT1, - AV_CHANNEL_LAYOUT_22POINT2, - AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK, - { 0 }, -}; +extern const AVChannelLayout ff_aac_ch_layout[]; #endif /* AVCODEC_AACDECTAB_H */ From patchwork Tue Sep 26 22:17:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43955 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210910pzh; Tue, 26 Sep 2023 15:22:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGFD3myaSi/aMTr1ZTLBcWz9yw+oFbNcw2GeqJC52voeDDXcoEN6zrlMkcZmMFhE9Xuv8Gg X-Received: by 2002:a17:907:78d0:b0:9ae:69c4:5b4f with SMTP id kv16-20020a17090778d000b009ae69c45b4fmr43867ejc.19.1695766960344; Tue, 26 Sep 2023 15:22:40 -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 bw1-20020a170906c1c100b0099bce053a54si11727210ejb.288.2023.09.26.15.22.39; Tue, 26 Sep 2023 15:22:40 -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=UnSYswG6; 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 6B57468CB6D; Wed, 27 Sep 2023 01:20:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2021.outbound.protection.outlook.com [40.92.64.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4DA7C68CB5D for ; Wed, 27 Sep 2023 01:20:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y9wbF6BBb5qN2MLGno/BUih2wRrf4kJl+6zmohBUlcyvoLocr8GaI71iQtYCfIS9rhBcyoIo6WmOIZ0eEIspg/Bc64vgA4RWfUyzafwajahcXNLRkmTBxX7y/KUp9TDqjnIvHNU5wDHZwddP8I8P0at2p77skPB3hB6LCSyQKPcbMqrfz/RyPmoIZl9/qeeR5r5cDhqZSPhDdGrVbXRdAen2VZ/RMiowB8jpFnqGLwbT54d0XLdnvNgJRWX+zJl7ACIIswO+dwnBJFfCZs8fRgNdFRH2QkTd8wID5rNzG+Q8ZEfS5aBTRDDHicP4ln8qSwIL7MsCMpNc1vFWKRdTVg== 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=voC9KzZIkriAzaTh5xe1aCY2R84bAhtOzE9t/m1nQ0U=; b=T69Gs8OFxF3qvrXAZCEDqdMqRzD65aa3fLz9g/pFcdgA4L1fbFb3/bF55Py64ZKoMVctZfff6y57NybV4EhnBi4+f92VpxUCntyX95SgyZqpo6Kn0VEaAQ0xGY8oHTRekmY9gtg0QLJD8J6EpAewuUn3zOaCLIsxzXYQDhP7E1sKjSSjSQ6gyxR7o6MzCJhrs2OfgrvG4nR7LTHTAinuzdzh+bD//S9IbGbhR9oh2d+VlaoeztHW8b4TIprdYr0HoU2i4eJC2HEF3l4ez5zHDjl0JagnC3J+ORfc/JwigrE6Gp7ERm6gDietTrCZvCAkuXssgMTGIs1bvQ9fMQX5gA== 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=voC9KzZIkriAzaTh5xe1aCY2R84bAhtOzE9t/m1nQ0U=; b=UnSYswG6U06O/CukFngYE9ptQcGy4fXrywtnZFGYB4yXUmy/DWDVQ9NaOxYj9ZJPmYo1h+5VcZ9mHYGyFo4z0nVmz0E+g7dr8VsyzT2/SiJk0ksq5OzWl5uJNZ9LYy8zu3oFZJu7B8O4nUpVFkQKrLqBLbCXk4GRpBdZDjyJ0IhrOoxgqPKS+8iGy7rDdH4/ndaJb5E3T8XdsxgAjK7uboiDql7y5QoCo4+cxavTQZv6lurjPGLiEYlnZ+e3cX4FHmlR1iWU4dfPQ/3B/+IwmrN8CQbpvAZ8zepRb5Z/IQk5VbJ7Zq+Q2B/zs1/WXujSsiC+qDQ2TCgI+spsKSi5cA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:36 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:14 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [RyNZl/lySlGzYlCreDhu2rrHxfIl+Dak] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-42-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: d4a04748-2035-4bf1-f090-08dbbedecea3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lb85/INTVRpEvAJgF07I4hDZOXnMc6gwv3wPyuAv+ql2YhGjuLlZtv6/BlAyGv8hDPzD1OeDN2xTnlVEt+ocsesXNiOsQaDxUEXD3qJKGwT5gCohUT/w/YYlB60ha6qJ6rq07mwB21mXGLD5RbQ/EVwbvRLJSkzXHGles0zfjjVuQpfK09ZnE8SEbDQCC/TbmIE6bFjaG/ecpWZMJss7699LhpEB944p2bsJQbt5PPOH8j7l5jWzHlhXwK1LHLiLMN1y1tJXeN+s/ZiaGVsVowYvA9RcAl21jlFZRejCfxzzynAmhZyn984aozrrO7wPBgTneLu/dOQqYvMwGFuPOOo+cyXoRZ5h7cSifuzghUU69ik6nPKAcXFkR7gnMHmN0HBQh22OlpqjHnLjHQQVanu8nF56R99QVYeaeeHkp0UMBoG/XJ7pLdczqgY0lVOhXZRWi3XDXClXC9VU0LUlUHE3rK64gQDPAkdtQK438pAC+LlcI2HnLp1UM8qWBQEJLC8BVxcaKM573vacnUkmc/O2rujiT8paYoSOyXYGC6BSavuQYsnIi+EKKp9CSDJC0wzaM8LsIOO9zQwN0CyNyZ2eHRxojO0wISa9Vcw72SY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4PAsJE4hODiAiBzhhlMVnYzwfYNCIQwSMufguLM6/2jryN8eyeBDw/Ked9OE3zz2eMqnD8Ls7c7i2yQKnB41qpbFDAGQsg5iISNYCeoFDf3qGXfcaJQ9EJyHvKcvbsOFJfDh6bh/tXZhvXEXr3FZgX/T4Vw1KNQhfVxGB7bBi1oEOJ+/p2JvGdLwz7dpXNAr22KMzz8SrS+3SCIBHRHq+KFFpzCq/dtLXqGwne+Lde/X25o5UtPpCBUj0pHxhroLCwqJISocyVbzmBaFYrnt3GETRmgs3kLBcSxLoRFhchngoCfLpUXv1A+ni2xNBczqIMBma+PITGpVWf7evD4MLWjpO9zYqq2l+JGwfwhP5Ljt1QyT+XpW+wJNkQAc7xYYKvtwUu9IiAU/HulziLyh9PB6fcwmup8ZS6WCLg6IwHwrQ6AfG2zA8waQ+PItNPosGRyuIAHygukNX2tYBTltvzgDRCaqFbmq3UO7lHKt1OJtwpFR9O/12jzTlAhNG5SYN4S81y8V4Mgj+DZ513Ngu0U+W7YPsmsKIVtAhho1/HUAwPXcE5eik4etOmFYLezbI3H3p6RY+NlhKrZuog1gypszXxoeDXlCuustehloNri3mjXMc2a01TDYwiaSbqQBzsg3HySRio12I8W+H2bEpiL7pDQ3YnYbUNKVgrKIh55pUxWr1wVjWzzOPYQLlo2+P4+iVQbqfDPED2qM8lUtc3t3yglbiBF7EZDFsDW930NKAsHea3zSnDw35dSZHl5tOot8qR6JDGJinH63v1rdjztxqdFxmjq6SfZ1sk06qsh0sLqp5BnrJrwVKBHttyDvoKCzjOSmdSa/B0d5BRMuGn22alW2LaQsF3MeAJ2pfs2BAFPk6OMNLD8L5CRhuvcdEs/rFVXJ7nul8c+6CjMhpJ/Q7yNyrdCVnHind8aRqaByCyE76pedGepSEQdqDSbjVoPvPVwLRJOsG5Vwpu75f9WTj5EQMSQ4W8hoAt1ky5ZMwTIL2anwQfCMB/1Cy1ql9KXLPMfF4oulghwBah1n4WZadrqQ+ZpPrE0SkdgP3wglPsp5NWXsZxd78RJfB46LxdnvuEgBxcLIXARrj6ZqdhHxzVpqRPydMi73sE18Zkgg5xb4xdcrV0pLYv+hkTdo/zuZ0Aqj3BjdsFVWGZpzqfr3uaQkk6ZoTwRKOpQ2DecW/FvHV9v2ydovNorC3RxjTAOPfeTN+fIueycte4BWWsI06qDct+oELS2zlFSVbbTdG7dHqZbWvE9b0vICrYNH X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4a04748-2035-4bf1-f090-08dbbedecea3 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:36.4257 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 43/61] avcodec/aacdec_template: Deduplicate VLCs 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: AJQIyBIVRpbz They (as well as their init code) are currently duplicated for the floating- and fixed-point decoders. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 43 ++++++++++++++++++++++++++++++++++++ libavcodec/aacdec_template.c | 42 ++++++----------------------------- libavcodec/aacdectab.h | 10 +++++++++ 3 files changed, 60 insertions(+), 35 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index c75c6fadc6..45f1986258 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -27,6 +27,11 @@ #include "aac.h" #include "aacdectab.h" +#include "aactab.h" +#include "vlc.h" + +#include "libavutil/attributes.h" +#include "libavutil/thread.h" const int8_t ff_tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 }; @@ -117,3 +122,41 @@ const AVChannelLayout ff_aac_ch_layout[] = { AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK, { 0 }, }; + +VLC ff_vlc_scalefactors; +VLC ff_vlc_spectral[11]; + +static av_cold void aacdec_common_init(void) +{ + static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + + 294 + 306 + 268 + 510 + 366 + 462]; + for (unsigned i = 0, offset = 0; i < 11; i++) { + ff_vlc_spectral[i].table = &vlc_buf[offset]; + ff_vlc_spectral[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; + ff_vlc_init_sparse(&ff_vlc_spectral[i], 8, ff_aac_spectral_sizes[i], + ff_aac_spectral_bits[i], sizeof(ff_aac_spectral_bits[i][0]), + sizeof(ff_aac_spectral_bits[i][0]), + ff_aac_spectral_codes[i], sizeof(ff_aac_spectral_codes[i][0]), + sizeof(ff_aac_spectral_codes[i][0]), + ff_aac_codebook_vector_idx[i], sizeof(ff_aac_codebook_vector_idx[i][0]), + sizeof(ff_aac_codebook_vector_idx[i][0]), + VLC_INIT_STATIC_OVERLONG); + offset += ff_vlc_spectral[i].table_size; + } + + VLC_INIT_STATIC(&ff_vlc_scalefactors, 7, + FF_ARRAY_ELEMS(ff_aac_scalefactor_code), + ff_aac_scalefactor_bits, + sizeof(ff_aac_scalefactor_bits[0]), + sizeof(ff_aac_scalefactor_bits[0]), + ff_aac_scalefactor_code, + sizeof(ff_aac_scalefactor_code[0]), + sizeof(ff_aac_scalefactor_code[0]), + 352); +} + +av_cold void ff_aacdec_common_init_once(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, aacdec_common_init); +} diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 3fb9a01da5..27be1f896d 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -94,9 +94,6 @@ #include "decode.h" #include "internal.h" -static VLC vlc_scalefactors; -static VLC vlc_spectral[11]; - static int output_configure(AACContext *ac, uint8_t layout_map[MAX_ELEM_ID*4][3], int tags, enum OCStatus oc_type, int get_new_frame); @@ -1128,36 +1125,11 @@ static void aacdec_init(AACContext *ac); static av_cold void aac_static_table_init(void) { - static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + - 294 + 306 + 268 + 510 + 366 + 462]; - for (unsigned i = 0, offset = 0; i < 11; i++) { - vlc_spectral[i].table = &vlc_buf[offset]; - vlc_spectral[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - ff_vlc_init_sparse(&vlc_spectral[i], 8, ff_aac_spectral_sizes[i], - ff_aac_spectral_bits[i], sizeof(ff_aac_spectral_bits[i][0]), - sizeof(ff_aac_spectral_bits[i][0]), - ff_aac_spectral_codes[i], sizeof(ff_aac_spectral_codes[i][0]), - sizeof(ff_aac_spectral_codes[i][0]), - ff_aac_codebook_vector_idx[i], sizeof(ff_aac_codebook_vector_idx[i][0]), - sizeof(ff_aac_codebook_vector_idx[i][0]), - VLC_INIT_STATIC_OVERLONG); - offset += vlc_spectral[i].table_size; - } - AAC_RENAME(ff_aac_sbr_init)(); + ff_aacdec_common_init_once(); ff_aac_tableinit(); - VLC_INIT_STATIC(&vlc_scalefactors, 7, - FF_ARRAY_ELEMS(ff_aac_scalefactor_code), - ff_aac_scalefactor_bits, - sizeof(ff_aac_scalefactor_bits[0]), - sizeof(ff_aac_scalefactor_bits[0]), - ff_aac_scalefactor_code, - sizeof(ff_aac_scalefactor_code[0]), - sizeof(ff_aac_scalefactor_code[0]), - 352); - // window initialization AAC_RENAME(avpriv_kbd_window_init)(AAC_RENAME(aac_kbd_long_960), 4.0, 960); AAC_RENAME(avpriv_kbd_window_init)(AAC_RENAME(aac_kbd_short_120), 6.0, 120); @@ -1526,7 +1498,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * } else if ((band_type[idx] == INTENSITY_BT) || (band_type[idx] == INTENSITY_BT2)) { for (; i < run_end; i++, idx++) { - offset[2] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[2] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[2], -155, 100); if (offset[2] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1545,7 +1517,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * if (noise_flag-- > 0) offset[1] += get_bits(gb, NOISE_PRE_BITS) - NOISE_PRE; else - offset[1] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[1] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[1], -100, 155); if (offset[1] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1561,7 +1533,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * } } else { for (; i < run_end; i++, idx++) { - offset[0] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[0] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; if (offset[0] > 255U) { av_log(ac->avctx, AV_LOG_ERROR, "Scalefactor (%d) out of range.\n", offset[0]); @@ -1734,7 +1706,7 @@ static int decode_spectrum_and_dequant(AACContext *ac, INTFLOAT coef[1024], #if !USE_FIXED const float *vq = ff_aac_codebook_vector_vals[cbt_m1]; #endif /* !USE_FIXED */ - const VLCElem *vlc_tab = vlc_spectral[cbt_m1].table; + const VLCElem *vlc_tab = ff_vlc_spectral[cbt_m1].table; OPEN_READER(re, gb); switch (cbt_m1 >> 1) { @@ -2308,7 +2280,7 @@ static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che) INTFLOAT gain_cache = FIXR10(1.); if (c) { cge = coup->coupling_point == AFTER_IMDCT ? 1 : get_bits1(gb); - gain = cge ? get_vlc2(gb, vlc_scalefactors.table, 7, 3) - 60: 0; + gain = cge ? get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60: 0; gain_cache = GET_GAIN(scale, gain); #if USE_FIXED if ((abs(gain_cache)-1024) >> 3 > 30) @@ -2322,7 +2294,7 @@ static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che) for (sfb = 0; sfb < sce->ics.max_sfb; sfb++, idx++) { if (sce->band_type[idx] != ZERO_BT) { if (!cge) { - int t = get_vlc2(gb, vlc_scalefactors.table, 7, 3) - 60; + int t = get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60; if (t) { int s = 1; t = gain += t; diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index db6fd0a04f..a009e9f46e 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -30,8 +30,17 @@ #include +#include "vlc.h" + +#include "libavutil/attributes_internal.h" #include "libavutil/channel_layout.h" +FF_VISIBILITY_PUSH_HIDDEN +void ff_aacdec_common_init_once(void); + +extern VLC ff_vlc_scalefactors; +extern VLC ff_vlc_spectral[11]; + extern const int8_t ff_tags_per_config[16]; extern const uint8_t ff_aac_channel_layout_map[16][16][3]; @@ -43,5 +52,6 @@ extern const uint64_t ff_aac_channel_layout[]; #endif extern const AVChannelLayout ff_aac_ch_layout[]; +FF_VISIBILITY_POP_HIDDEN #endif /* AVCODEC_AACDECTAB_H */ From patchwork Tue Sep 26 22:17:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43934 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210978pzh; Tue, 26 Sep 2023 15:22:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHaNV66Sg7SAnz135MUhwpxVV0wwfuJ2uzPah9OOPuykiy2G59uWipHYdMdVY7go3AqlgbH X-Received: by 2002:a19:e054:0:b0:503:7fc:8afe with SMTP id g20-20020a19e054000000b0050307fc8afemr90039lfj.1.1695766969069; Tue, 26 Sep 2023 15:22:49 -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 d23-20020a056402079700b00532bdb4d7d3si11715011edy.308.2023.09.26.15.22.48; Tue, 26 Sep 2023 15:22:49 -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=PuX75oZU; 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 8794568CAFA; Wed, 27 Sep 2023 01:20:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2097.outbound.protection.outlook.com [40.92.74.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D080C68CAD9 for ; Wed, 27 Sep 2023 01:20:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A3spV0v8YKyU/dk2gdc02llbpuF7N37KTj3dCI2haDyjydKkfUJHtGbxSyAore4qRgYrUPU9JZ15Ayhew7x9h3JlUd6kEMDscZmKJVA3/TpqeaTBl/209R0HvubSjvoWl8QfwBTvm+NZ9FKNvGZL0O9fApK/q0c7Pw1zcIk86cTkOj1B9/UywyIkMc52UbHOy/y9joCjVKI6HofWL0Gi24ymOEhmOgWfue9blMTwZKxDBxTxejskuFG+UpIlCTOg4uc+bnfD9loG+e5UCzbHngkcA93+XmuqdF0PvuUQs65fbA0YN/Bn0oYuI3kNk3RlcMDhplaMEKqoglUkRybCzg== 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=vV5WnGxqwxRIVxeG0hjDwhhswIZCDwuApQSMf5WbzUw=; b=JH/4vUtWRROEMJ/0G5R1KUwvJ+5eU3BnJ7SF08iKhDW98671+W1W0ZqlWIMRIOyf+0c3E3nPpAbFerWDA9l5PrV1DqZ6meyQDj2CMjR/WSw4TfNT4eHb17Qq79iTawwlQTA18RytXGLX4G6ypYHBe2XFblLdZw1/iaCwtUZ7KC0IAJtlrzz4Gnw1vT73GLpfC7tJf/df3b5a8To8ZW12QM1lSNQIoJjZzbkdS5kZ6S4Xd3gu0huk55QETmgPsQU4seMAIe6knPHFxZd9NW/d3Xdu/LQu3cEIy9YGZspiIl7gvkRsQLsJlw3g3T7AFhXH3Gynx1K95Gj3MavpGI84bg== 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=vV5WnGxqwxRIVxeG0hjDwhhswIZCDwuApQSMf5WbzUw=; b=PuX75oZU0FlThOdsGxCZMriKWv8vq/iP7lLLo5dIwmSyjpQpsX7iNZH97YhWywi2NNAT86P7Wofbc4WEYNMiLAdpwtpCwKS91RyQ1kgy11qWl9K39seXjYv0ebk9Aohqbgicw0EMLrj+WV9em81vx9W5aP2vEJuck6sDiKhz6Lo/ZpmOE8FflIEEzKyxbC6ppEEqMbQQzkob7Yrm7jxNVJEgEDdjVK2gCr+3ui6e/93aIDfNfsUuEGOSF3DR9/GCjZtaVdv0bnBsglc41RmBpVwBofBaAIvhvnzmRZ8FTzrWc4gObwhC2qMiRoz/Jb3LrPvpl5JSBCI5am+UEptIJQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:51 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:15 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [+4SBZaR9kyxgLel6Sb2B6k0qCLatqZzH] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-43-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 85146d0a-77c7-4bed-a15b-08dbbeded76e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HV8AsiPagtqzRQI/JAh+75P+RUkX6Ix5VaIrwvOxklZZ2XAVdEOaG8sO/397qgREGTqeTyZ/zF2kX09d4SLHhAWcCst0MsugUeHxSqzR+ZVvPFH0Ox/8R0dY/ZWWmqJZrLNpZrvLH6Qh3ONoEcdbT3DuIcQuMQbgnLW3t+mmychCkCEt2ZWs7NFJR6ugDEUNLQjqakqEzOvP4FufD2i8qCmL82jaS0cnwJW1XWOrSEWQFlqxRBLzMNlnS57350074q/8YJNLenvdppDdkAuyF/OCJUL06m7TEqtEmaQdHFTKaDJ9VbnwfaQPnKDYUFMCdt54utfSxvN5VEvv3zLNnm3iDog0UTl290ianVGeHcu2Zl2CFyK2qLgh/+ojGLV21xAzyHk3agMCyoNExP0hETc9FvdPBq6mmfZ1A3RcF58KRzGr2VuCGguln/48xeiKF475QGBDmM2F4er9DkDP6JpSQL993HD9khuQgTfiLCwBYVOWWJmBpGOz0/gpmuiIkCaGJrEa+Sysy7citQnnqm6QJwQUO1SSB7vZA09PkEIQJbzaR0DfaS02qdTIc3I8zMysJXXC+0pcsAwPJWgGOkzZTkE0wE22QA14pgGzy2YyB8a9gjbvDQnBBN9kvz4j X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2rtAP7pGbcuQMTOn+Dq0s1PNkAr06wmTkCm3iJe3M1sr1u1Sx+9WYqy+tJ4WXZhSzVk3Llpvn44rHyAL08XvcBKkCp66sELD9JS6B1S5Qah34llM+dxqdxsYCH3eXDln53QT/cM7F3aaI6BlhX8N5/0P1X+9wVxTBLtMT39vqPYdZYjR3pTulCmV32rOwxfyRdhI60B9mCilpI6YWa/Qjdc59iZy2vsnMkQmOdY4cc55Z8bktDkzf4fI0ImLT6FGVu80685X/mGdZiKzKf4X/+SoDq4A1Ol8ANR6LOctpQolJg7Ov6344UXzuYs41tF7adHp8dACuz3i2X3TZXBUcjEjLNS7nNe6P7lofQgBwLg5y1jeZQB51hlO2EVqlM/MmCVqJI4Sy8wn7RnbNA4Fx3dUmJztghQkcKz4nwwkY04cI8CIAa+VPEYwNd7fwdGIoYAQEa99oUfOEsSGf2v2S9Ak8I2wcwVnOvlD6RVfEqzh5/MjfcHnPzubccuin1isUE2gkoTcfhgvbYQvsZ5DELhlp/uK9VRBi1qe8GbBQQODDoWVHi49jYXUFGSWIoyRYu2OINSYFFf00WT+4paAWqKsXbuxbEtRFpkfSa5PSZv18Rnvd6V1FaW7L6gEnrtaCyZg8a/0MLD+rZEbme2WicscVavdDwm2tHVEM7MFK8Ccv8esr6y36Wrx9OWZKvLNjZfyucfJ/4l4BW8ecWa2R02jx0fJXx+Oh7VEyT4MDMlk3F+J1y0xtDJUkUFhkY0VTzjRE4ToLLOeiBLE2/eEQncwDZdjayiOOy/q0YdgKAWkAE2uH1E4ZWfI6Fs4c6ahSPGj8wkGp/IuXa88d+V+XCCoNANYsaAeA+wxNFA2HHqwZ7LbCH0j8ryPNS/owwAJ22ZySyz0oVTcj3jjfhLJ6fiV8iMRy3oysVxHa32bXyU5cfvyj4FIMrIwxbuQY4KPF2+1CG+gEMwqxDejxcxbskAV2HXDZLkZqEXVBODp5mch9nhY0lPcpP7L6EsoVyA0jVPGuwhDKle17Mc8yOM5Ae+CXXZugfN+T9xuGyH5+jrAzTYXBDdfyZU2tNxXddg/yao3zLoX0oLUSW9pcifMozoVeGn6rlZkg3d0PteMI3Lah4xf1Zweh1C8j8vYzykp8+Y4mTtNHtdzTci2+l5Hl08hZvS6V27U77mJ4J674kkwkljO7e/5EIXR5W6hWR9VNbSo0Tzy0VQ3rK9KnkHenyknL86qZG2989e4LiK0dPMyFb82cA83EptOXsQwuit7 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85146d0a-77c7-4bed-a15b-08dbbeded76e X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:51.1675 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 44/61] avcodec/aacdec_template: Don't init unused table for fixed-point decoder 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: S5yMXGudMj2c The fixed-point decoder actually does not use the floating-point tables initialized by ff_aac_tableinit() at all. So don't initialize them for it; instead merge initializing these tables into ff_aac_float_common_init() which is already the function for the common static initializations of the floating-point AAC decoder and the (also floating-point) AAC encoder. Doing so saves also one AVOnce. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_template.c | 1 - libavcodec/aacenc.c | 7 ++- libavcodec/aactab.c | 102 +++++++++++++++++------------------ libavcodec/aactab.h | 2 - 4 files changed, 52 insertions(+), 60 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 27be1f896d..4591eac6b9 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -1128,7 +1128,6 @@ static av_cold void aac_static_table_init(void) AAC_RENAME(ff_aac_sbr_init)(); ff_aacdec_common_init_once(); - ff_aac_tableinit(); // window initialization AAC_RENAME(avpriv_kbd_window_init)(AAC_RENAME(aac_kbd_long_960), 4.0, 960); diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index 2a34685aec..5e6a255a8f 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -1210,9 +1210,6 @@ static av_cold int dsp_init(AVCodecContext *avctx, AACEncContext *s) if (!s->fdsp) return AVERROR(ENOMEM); - // window init - ff_aac_float_common_init(); - if ((ret = av_tx_init(&s->mdct1024, &s->mdct1024_fn, AV_TX_FLOAT_MDCT, 0, 1024, &scale, 0)) < 0) return ret; @@ -1359,6 +1356,9 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) if (s->channels > 3) s->options.mid_side = 0; + // Initialize static tables + ff_aac_float_common_init(); + if ((ret = dsp_init(avctx, s)) < 0) return ret; @@ -1393,7 +1393,6 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) #endif ff_af_queue_init(avctx, &s->afq); - ff_aac_tableinit(); return 0; } diff --git a/libavcodec/aactab.c b/libavcodec/aactab.c index d0006eac35..edb51d8810 100644 --- a/libavcodec/aactab.c +++ b/libavcodec/aactab.c @@ -36,18 +36,64 @@ #include -float ff_aac_pow2sf_tab[428]; -float ff_aac_pow34sf_tab[428]; - #if CONFIG_AAC_ENCODER || CONFIG_AAC_DECODER #include "kbdwin.h" #include "sinewin.h" +float ff_aac_pow2sf_tab[428]; +float ff_aac_pow34sf_tab[428]; + DECLARE_ALIGNED(32, float, ff_aac_kbd_long_1024)[1024]; DECLARE_ALIGNED(32, float, ff_aac_kbd_short_128)[128]; +static av_cold void aac_tableinit(void) +{ + /* 2^(i/16) for 0 <= i <= 15 */ + static const float exp2_lut[] = { + 1.00000000000000000000, + 1.04427378242741384032, + 1.09050773266525765921, + 1.13878863475669165370, + 1.18920711500272106672, + 1.24185781207348404859, + 1.29683955465100966593, + 1.35425554693689272830, + 1.41421356237309504880, + 1.47682614593949931139, + 1.54221082540794082361, + 1.61049033194925430818, + 1.68179283050742908606, + 1.75625216037329948311, + 1.83400808640934246349, + 1.91520656139714729387, + }; + float t1 = 8.8817841970012523233890533447265625e-16; // 2^(-50) + float t2 = 3.63797880709171295166015625e-12; // 2^(-38) + int t1_inc_cur, t2_inc_cur; + int t1_inc_prev = 0; + int t2_inc_prev = 8; + + for (int i = 0; i < 428; i++) { + t1_inc_cur = 4 * (i % 4); + t2_inc_cur = (8 + 3*i) % 16; + if (t1_inc_cur < t1_inc_prev) + t1 *= 2; + if (t2_inc_cur < t2_inc_prev) + t2 *= 2; + // A much more efficient and accurate way of doing: + // ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.0); + // ff_aac_pow34sf_tab[i] = pow(ff_aac_pow2sf_tab[i], 3.0/4.0); + ff_aac_pow2sf_tab[i] = t1 * exp2_lut[t1_inc_cur]; + ff_aac_pow34sf_tab[i] = t2 * exp2_lut[t2_inc_cur]; + t1_inc_prev = t1_inc_cur; + t2_inc_prev = t2_inc_cur; + } +} + static av_cold void aac_float_common_init(void) { + aac_tableinit(); + avpriv_kbd_window_init(ff_aac_kbd_long_1024, 4.0, 1024); avpriv_kbd_window_init(ff_aac_kbd_short_128, 6.0, 128); ff_init_ff_sine_windows(10); @@ -3299,53 +3345,3 @@ const DECLARE_ALIGNED(32, int, ff_aac_eld_window_480_fixed)[1800] = { 0xffecff1c, 0xffed391e, 0xffed740c, 0xffedafb1, 0xffedebe1, 0xffee287d, 0xffee654e, 0xffeea23f, }; - -static void aac_tableinit(void) -{ - /* 2^(i/16) for 0 <= i <= 15 */ - static const float exp2_lut[] = { - 1.00000000000000000000, - 1.04427378242741384032, - 1.09050773266525765921, - 1.13878863475669165370, - 1.18920711500272106672, - 1.24185781207348404859, - 1.29683955465100966593, - 1.35425554693689272830, - 1.41421356237309504880, - 1.47682614593949931139, - 1.54221082540794082361, - 1.61049033194925430818, - 1.68179283050742908606, - 1.75625216037329948311, - 1.83400808640934246349, - 1.91520656139714729387, - }; - float t1 = 8.8817841970012523233890533447265625e-16; // 2^(-50) - float t2 = 3.63797880709171295166015625e-12; // 2^(-38) - int t1_inc_cur, t2_inc_cur; - int t1_inc_prev = 0; - int t2_inc_prev = 8; - - for (int i = 0; i < 428; i++) { - t1_inc_cur = 4 * (i % 4); - t2_inc_cur = (8 + 3*i) % 16; - if (t1_inc_cur < t1_inc_prev) - t1 *= 2; - if (t2_inc_cur < t2_inc_prev) - t2 *= 2; - // A much more efficient and accurate way of doing: - // ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.0); - // ff_aac_pow34sf_tab[i] = pow(ff_aac_pow2sf_tab[i], 3.0/4.0); - ff_aac_pow2sf_tab[i] = t1 * exp2_lut[t1_inc_cur]; - ff_aac_pow34sf_tab[i] = t2 * exp2_lut[t2_inc_cur]; - t1_inc_prev = t1_inc_cur; - t2_inc_prev = t2_inc_cur; - } -} - -void ff_aac_tableinit(void) -{ - static AVOnce init_static_once = AV_ONCE_INIT; - ff_thread_once(&init_static_once, aac_tableinit); -} diff --git a/libavcodec/aactab.h b/libavcodec/aactab.h index 9b1450c2eb..7693876c34 100644 --- a/libavcodec/aactab.h +++ b/libavcodec/aactab.h @@ -42,8 +42,6 @@ extern float ff_aac_pow2sf_tab[428]; extern float ff_aac_pow34sf_tab[428]; -void ff_aac_tableinit(void); - /* @name ltp_coef * Table of the LTP coefficients */ From patchwork Tue Sep 26 22:17:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43956 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211035pzh; Tue, 26 Sep 2023 15:22:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEJs7mbSP1bS+W6HZ6tJYIDR/UxKOCAs5TECYw94UyKFrdAzsm/F5/oUmdVBA53uuMv2jta X-Received: by 2002:a05:600c:2988:b0:3fe:785:abf9 with SMTP id r8-20020a05600c298800b003fe0785abf9mr258877wmd.2.1695766977586; Tue, 26 Sep 2023 15:22:57 -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 d22-20020a50fb16000000b00532d9db4b63si11599702edq.658.2023.09.26.15.22.57; Tue, 26 Sep 2023 15:22:57 -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=VrM9RM1G; 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 9CE3B68CB7C; Wed, 27 Sep 2023 01:21:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2033.outbound.protection.outlook.com [40.92.89.33]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 80CF668CB02 for ; Wed, 27 Sep 2023 01:21:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lnXNPOiLUshI0sGPPUgkVJdUrwAhV1YF9n3ioLh8TNfNbuZitsbO7jC42CaE+4DRFuH7e/5IueEraj82dWy5QW0PoKX7dvdMpKDvo12/ayyH5tX7e2qjGGcJFoSn4oU3bFUb5S9PZhol+DABoBEgH21P4+dgitWJQ+QhqtF7LNK8bjasrdvyudsnGZf76GeB+bc7CSqGezrpGqlZ93tVm7HZP2kQAiraPLnTAheKhz5K+ojFfWtI7XJBe+rTl5IqK38zZQ660J+fHEsnFZbLdO4LRPCZVGkYrV9c1uwlCmcpkS5ZzJm6GwswzaZJeMY8tddLLczsn1RLLPBXk3mhRA== 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=+d3hcjDjiMOC3YbfVk2SdBLqRgW5qrrVHReTApbmhbE=; b=Z2OemasS6YVKxTqpqjbQuF+0hGKDqf10R4TsmVI+1aEsD9ZJIQOo8OyxX4Q+d0Ytjv4Y0GQJ+gWWeeHxxhX9HXsioCyJWbT8n5iWq8fDZsTeTZtDg42L7lZ7l492mLGL/eoqij1txpz7OKNVSOdUxIyXvvoF2G2hlA19W4RpPSImeA3qtXOGscwQuE+aDmvCLYxRe5wIRftvL9kkQmfRKc+rgi2BeGfo8j31+cD4zaz1aJrew9SDbScHXkvKDk2wmFPHuGhCsjFwgH2sGLqeVqdowbEOJEU+5JKGbH9u7FdaI+bZnP3gZO1oRfwiYHE+DAhGdnLS7Uv8DwU4XtZXNQ== 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=+d3hcjDjiMOC3YbfVk2SdBLqRgW5qrrVHReTApbmhbE=; b=VrM9RM1Ga+GKgF/cEFCRWTKuKBTvX0AzZD5X/KlvHAXGBTdbnffNkJ+hqOMLeh1MuWPilnUm/gksrMAQUyCKkFLmHC0zlk0oEVAiv3sQAEUsdZ8/Dcur7tdWKGtMquFceOe5cFRrePB+qVD2nikxel+kYEIhMCBbXaOP62FcnvMUMxQ+FkdNAMmiPyZ9/Hh1P4Bwy9eUsrndFKL5qP/NdiALJA3ftwUAoYAK20FsPJll7NG/tkcnJXAuqt+4bMkFHKL+b0nQX4aJ9p9xGaoSxa0N8jo1Azzu9B/FW9qjdFYqyVPS1fnPPLtZ/XeQZi6CmGuEpK6LmmiztVGe8SpdEg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:20:59 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:20:58 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:16 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/ySCoyNS7aAhV5BVlzNizHm0eRTR0bwd] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-44-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: dda0fe5a-313b-4c3a-cfe5-08dbbededc0a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w9itmf5tkSR81d40fdUn+p97PLtnGGNB9QUf4dVXJbk9NmrmXp5xgfGKYWOr1unD3EDjFtfOTDvcAPIUJBUYly/kU4YEV4z+nWXUNTdD7zGurHnS07stkUDl1JB9chh3WSoZKVrFkVHd0gL3FCTwlM58JiwITHMD0GfB9ynPoUMz56wHRGcFETnfvuNXuGz3wCgaVgVTAYDpURduRHucR0r1/1xDSMhhtQrzrGjbvGxT2g8sctz67snbKd3W7ay7qaub/QpMSYczoKa8J8fjoLvP/eyPsQuB+JTYncQF8lN+ddHnUZLlZLzAA3gkCu+xoMgQF0V/0dzvCXzPwfg14U/h5dgWQllnTs2yLdLzKj4bmMsYXnC/WZCFBjELuJgruXXEl07Lr8FcGPB21+pSky7NXj2gGyjYG2ICRwXhOqtgKn/Nzt4N8w++yjYIS2/QTJ5hDVGU+sVvnCAIHiUYcCD58pY123vo+lkvv9x3d+EyHH0WI5wsDQHi4agft6EexbNHwwVHUK6RJkxxvwk6IFYCaa7xwWjq87GGXVIeWZ+iGcE7RGNpaN31UcG+GdW66gDQ18PgBm3awC3kmBO2F4cjZyn0H7cSiQjxwCJixdEHsHf8cD7STLhNTaC7QJgx X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y1a6TGByTAAhw0NUVXe/WkIO6V8EY7gM7meIUsDjGT7sEAOD6gnHSL8ECu6L+cdmN+atNfyWuYjaYcnYNvsl7QDzHTVrfyvE2x0iu8eXUsHFY3hAR1x1np7/IXnqRReixlmipxuNUahgHL4w1Kqw9fLyRhhYcC9HS7w0FqeSwyljw8bLvfEWwmcrpxaSlHt6CQV9oWKjteloHWg6fY9uUqSaHfTV3CW9gZbwhBVjyymCoeF0keIunaT4eRMoqeYCRGXFFakFDRHT7UJvS0k5eLbk/zT+qMk1tT9VluL/j0vkBzcN8zDkRe9cGFyXrmfFijqK/kJppDizHMNNmlVOL20GObQziXeJUf7R/Ha0a/eVIjd8itCRP0uF3kLjxmqbfDEYkYE74J8tmP+nnOUMblNjQXZEU70Y4LIcAXGCl7MCDXw3tUEXl0Jk1lY3udab2uxHN4rmnuWR6RGLU26ykx5FHGa35GSXf0LBQLAGtKtjSE0OOu7Ci8LU0bRviKFrk2/h5xgHfpVNWJuLK3tY5fv0WwUsD+teYPXpGE/VrmzWgPfvRoaVt+R+bViVWcOFwfEbM+k0K9FvqyNTt6inVyfR3lEUWv/wtbiMHhBJVR1euYsD+L5HPnewZbdUBZYjJIxh9znfjK0ZAWf4Vr40A6U8nT93m7C0kabG6It3sgUQ+rdYMPmUg8MF8ntNdMFGC9kfdhSg+1saQjlrfVosKfj2KPcUmk63ggxoO/3TOWFQPsMAJaJt6uP4D0ZYDl3SHcWgQNjmnmxJfEL/agMkSyXcuOChIhgHenfak7iwKTCEXBpIr1El0bGbqsXrCLjsdKqphO35EGUh09n8nfxEiYI+9xPI3NBJfgtUqs/yCZ9Pm9qwOvnZxL0ryOUmds04jPTKNpEqDHQdjWy/52pgJq9Q48lvC7mQPBvkKlKNENUJ1/d1gd5o9ugK5vkOuED4PT948LodYCgr4tv3C3DLX8ZA+9E4YDKlpv811+wUy8mjkakjjWBIPSB7bYJw3f6Iq2KNmgrwiLlm+iTA+aQMSOB/l+Sj/9PqYVq7m5OZwc10q2QYOY4D/C1I1aa0ke30gOl/GhzzLy8w57IqAbYNHo24Cnd0GH6VP8FIh2fU9zAi26RX0u8D28W2lhhLgSiDwDhzDQ7D+jm2hsMkd7VzYfdQAZnY063KYJXgQL9lZ8q/r56MgrNuneiLCQm8A8QxGbMBxVPgOEKSt9vly53PJQPTolrbmBJIhjbCqVcWDhntDGp1j5gMymYfpefRgOEI X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dda0fe5a-313b-4c3a-cfe5-08dbbededc0a X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:20:58.9178 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 45/61] avcodec/aactab: Improve included headers 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: SHTEB1NXbC5C Signed-off-by: Andreas Rheinhardt --- libavcodec/aacpsy.c | 2 +- libavcodec/aactab.c | 8 ++++---- libavcodec/aactab.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c index 933369e445..1fbd259e51 100644 --- a/libavcodec/aacpsy.c +++ b/libavcodec/aacpsy.c @@ -28,7 +28,7 @@ #include "libavutil/ffmath.h" #include "avcodec.h" -#include "aactab.h" +#include "aac.h" #include "psymodel.h" /*********************************** diff --git a/libavcodec/aactab.c b/libavcodec/aactab.c index edb51d8810..d20ac56a3f 100644 --- a/libavcodec/aactab.c +++ b/libavcodec/aactab.c @@ -27,15 +27,15 @@ * @author Maxim Gavrilov ( maxim.gavrilov gmail com ) */ -#include "config.h" +#include +#include + #include "config_components.h" +#include "libavutil/attributes.h" #include "libavutil/mem_internal.h" #include "libavutil/thread.h" -#include "aac.h" #include "aactab.h" -#include - #if CONFIG_AAC_ENCODER || CONFIG_AAC_DECODER #include "kbdwin.h" #include "sinewin.h" diff --git a/libavcodec/aactab.h b/libavcodec/aactab.h index 7693876c34..81db29a4e4 100644 --- a/libavcodec/aactab.h +++ b/libavcodec/aactab.h @@ -31,7 +31,7 @@ #define AVCODEC_AACTAB_H #include "libavutil/mem_internal.h" -#include "aac.h" +#include "aac_defines.h" #include From patchwork Tue Sep 26 22:17:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43957 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211088pzh; Tue, 26 Sep 2023 15:23:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFIXo0UdoJy7gYvmVqzd+OWWv9e2dNH5VvjRkPXAn6ZdacWQCPwKaz0M7i/M9a2SPcRGsfG X-Received: by 2002:a17:907:b609:b0:9ae:54ea:5b0f with SMTP id vl9-20020a170907b60900b009ae54ea5b0fmr44771ejc.24.1695766986819; Tue, 26 Sep 2023 15:23:06 -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 vh4-20020a170907d38400b009b27a5dcac6si6986473ejc.450.2023.09.26.15.23.06; Tue, 26 Sep 2023 15:23:06 -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=ZIS54Ta+; 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 B8D8068CB82; Wed, 27 Sep 2023 01:21:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2015.outbound.protection.outlook.com [40.92.64.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E58368CAFD for ; Wed, 27 Sep 2023 01:21:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HruCDbECaOGmh9Yfocq5H7Eqq9s0oxzJzx/3odsKkfmPTCHeyPK4h2P59i63qvHEnoT2/J8kDcGMtgxS9Xn1SNv5+E9ApNc4mIDUVssnK7BNDQ9PDtEEwj45AHkBTBgm1pbZkarYe8b8V5qNRZIyDHMs/viutNQB4/lzfw6cgJUEMfTbDgmivLDpB/rUiuHfHsaHUQjv5C+r/cXKQ+dcGj5NBraY4iwNX3QvqRO9+uXx4Vgt+fXRq+2bHp9eg1+bKnAF2rDj4XDhbKz695YLGA6y/EUgwPWO78d6i2c8i1XUtwlmTh9ZPqKI87bioZYAbYA48A9iIi0xAn/6oFiIvQ== 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=YEoqca/K3hDaBy2DdSWw7frWkBTovR641Nw8x0r4SUI=; b=aQbmXUosA6S+LvSrbj3pbQPa2pCi0f8XWPfdc1BEZCaW13bDXdlinpoP32Vg66CYqVtSMGj9X5pUHemocod5aGzrxODj4g2skcvce1cderM5/37vvsv/+yT6+/oLy/AfhZ0IknpvyR65vRSKy1B1w1Fo/YclVMQiSEXN3bXIcaaEEBOyJskC35oFpkcZX4ot2eAEeJFoI/H/3JQRTKAc7lD8KytLoKCsnzmnUavTDrYG+LtIs2CW9lqPc/dbw8Z4cak0w1maOoL0PHZL9KJB5vC1WVZ+EQ/K+hrhPjus5R0AnRgGq/wYKjzVE8UsFujb8MLc0Qdic9+WMTv2lnDjnA== 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=YEoqca/K3hDaBy2DdSWw7frWkBTovR641Nw8x0r4SUI=; b=ZIS54Ta+LUm85/RhLuKBDsTZJVa8APgXZvTBFgK2SfkkQ5KyMb8xkrFbbe3Z9VBTnBj3CQBjP2B+4bW4thbTjrEdeWIVUoX6/NbFdJ6IaXZ52mneVkKuQ0lxjRR8c7y9WcanWjaxjP1LFKz4FbHHV6yKANJYRW8UxQqhWX/cIXoKHz5Ki4OD75TTw9eInnxZkwVHur6z1t88+ntbPiFzP0vwDLb8s4o2QdF9gwh/I3lFrFEaFw5g2/ktd28Z1GutFdxh3bpQuDRimiMz38vSZgYvGdiqprR3KlOGKbuStjnSEFmaVPr7vgkACiR+4/XMaq0Pzw0i2x11COs/8zMsfA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:21:04 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:21:04 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:17 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [E3Arr1mD/+EZ8kUMA1251yEjp2LvuAsH] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-45-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: d1404e81-179c-46c2-0b0c-08dbbededf90 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pEiiCmsV2mBTluTKSYaqqekDsXi6V1Q9RnXdvrXCC/85tyQqHCPFjAtCrZOj3woE8PVLo4JVfN5ZCVGTNc2jwSRrb1ZdQXJ54+SQ+UMiZ+6yUNI0+VyKUbtnpKy00QfjfW0v2bP7EQ486z/niDBZEo/yF6KWaIlc9UZEWU2AAusTsvDtJjMV4pBkWw1XSLxszCGrBNoy2AT0bp1ELzbXsgoLoJqlwd/lufd1adaoXH8xjufcG7TMoX2+ss47rLirusxoAIIL+1t3zJzhOcxBdWNT1FII6VKea+cEJXCqC07mc0UHqkX7eWPpVcXGDkh6OIcD/PGUJZ7q5uuDNULXnxZVVtA4V5Aq7T6q3OupDJdLYGigYGYV9yd5vca6NYVJlU1c7mvZnQTGBllarOn1t456QLWsB1DhtGvEoCrqRH7X4C9NkiAjatWuGU9SmPeH2huywj8SppcF1+EVWY2EfNY9czDtE/CWSLt1PPwlu+zt5MDESwjHBeLAtwHNuvQ0r+vbAzb6gkSEWGxR6AR3WaLD44aZ0fuIvlwaB1kZbZtDVDdRftKDNZHsgNHbA6miLVF9Rh4ossUZ8r3hMjpNR5ReAarGUYGXsj+2O1pFwRUcL92eixtU0XfzTEQnBvb7 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oBQIxMaG9G6Iv2aUZsLJqqN6qwvNGPov5Stmt4IEfzDjYwJ109lVaD2R4H9lchh+jdPkPcEnpsPJ31/OShAcg0ChzrG1RFzOqBT7iPdEoYOLGWO6V6K8mOo87+o+wYv4bJyZ+pzLUJGphXo0D9Ivv+WWGR8/1r7tSX9y2x/5PNa63SVi/rP16qnOVuL9N9cw3e/zMR/wdB1+tHMc1yDzWUsPJ8fFrXT9Aj9cV/fS5XiObv1kGiqpv1QHtUpl5bz5nAfVdn9qT7c69G8ArCmJ3hOrXPwcwE2elNADINJrIXdnSRmx3n/jY/khWQffKxov9H+hA5gGtgh9oquuOfAwTAnthBnbvAMNPUEb/WYjjgwcw7EtywudXxfp/p7EUswKgCuQjzJZPDdKRPNKM1pOcV+sHs0q286oH4Fj7U3O2BVSBGKVir1hOvciHH/Sroi6bgXBNtVQTJXL6QhomCdIxXEKUamO0VX6LbOnOGid3wRByLbAht2d7iCGWCt4ANR0CXPO+w08pjxWjyBI1dBVVfn7gE53bD+FNCt+geF0ILBFpNTMgBn2neX5z4mGzxeankk56x9lBxHimOSX+CgeI35H1JxoexdME/Q2wqg/3n3ktu+raAIDwfyUT9pKVCZ6csaPATygKnDrPU+bK5fS0ln+2uQDoklghfvRm1BvzRay9cAhtmMnuBqWGJsoveQs/BeyzacmTUQXPpLAOvGQvQwAFgPnaNNjngx1ET8ZbQSNOxzFHmIBKctr9bBGu98Sx3I7Y2j9oDkLFhuLMyTK+V1LGvgv7qxSX5ITe0wC6UkSJbHlQdOLpWI+mK4al4z5zU4NdZL29kFyc4rTAy0EjYFiOu+n3mwm1PscJSIfeczpQPWZQLTKDwED3YU5RK4zDft2WbLewl4cVr3roBtLgpi2Kn8j9UN9IGHVA90UC0qUzBjtlDRHNxroXKo0Lzx7Loblcd2Ex66YL1o55vCvlFgBUv74vKkal/im25owNZc7MfnyqPPazf5KY3u6adisHr73lvxCRFuCgTcI5W1VEUd3IYD2Yb+gIbD9M8sWPybeNage7f/0OSUYIGTdCP9iKMd3iek4y+TdoB2TFwAn1tA1BRnWCcIHCgl5C4RJ6rCWRobFvbehX5yUTb2kqwDzw5CKLjHm+i0IeJMRvpMuNRI7bcXI0+h5RblhN3ia/iQW4wtxzb9Vmmx9OpJlvH8JpZurFyWJh52xaSwLnC2f7jq8etFnOMh2YDYPx0sP+cHRZFhROIcGVQJ/W8Gt273j X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1404e81-179c-46c2-0b0c-08dbbededf90 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:21:04.8384 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 46/61] avcodec/aacdec_common: Avoid superfluous VLC structures 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: eVRpFm7HpUfk For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in some cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 43 +++++++++++++++++------------------- libavcodec/aacdec_template.c | 12 +++++----- libavcodec/aacdectab.h | 4 ++-- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index 45f1986258..61d81343fe 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -123,36 +123,33 @@ const AVChannelLayout ff_aac_ch_layout[] = { { 0 }, }; -VLC ff_vlc_scalefactors; -VLC ff_vlc_spectral[11]; +VLCElem ff_vlc_scalefactors[352]; +const VLCElem *ff_vlc_spectral[11]; static av_cold void aacdec_common_init(void) { static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + 294 + 306 + 268 + 510 + 366 + 462]; - for (unsigned i = 0, offset = 0; i < 11; i++) { - ff_vlc_spectral[i].table = &vlc_buf[offset]; - ff_vlc_spectral[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - ff_vlc_init_sparse(&ff_vlc_spectral[i], 8, ff_aac_spectral_sizes[i], - ff_aac_spectral_bits[i], sizeof(ff_aac_spectral_bits[i][0]), - sizeof(ff_aac_spectral_bits[i][0]), - ff_aac_spectral_codes[i], sizeof(ff_aac_spectral_codes[i][0]), - sizeof(ff_aac_spectral_codes[i][0]), - ff_aac_codebook_vector_idx[i], sizeof(ff_aac_codebook_vector_idx[i][0]), - sizeof(ff_aac_codebook_vector_idx[i][0]), - VLC_INIT_STATIC_OVERLONG); - offset += ff_vlc_spectral[i].table_size; + VLCInitState state = VLC_INIT_STATE(vlc_buf); + + for (unsigned i = 0; i < 11; i++) { +#define TAB_WRAP_SIZE(name) name[i], sizeof(name[i][0]), sizeof(name[i][0]) + ff_vlc_spectral[i] = + ff_vlc_init_tables_sparse(&state, 8, ff_aac_spectral_sizes[i], + TAB_WRAP_SIZE(ff_aac_spectral_bits), + TAB_WRAP_SIZE(ff_aac_spectral_codes), + TAB_WRAP_SIZE(ff_aac_codebook_vector_idx), + 0); } - VLC_INIT_STATIC(&ff_vlc_scalefactors, 7, - FF_ARRAY_ELEMS(ff_aac_scalefactor_code), - ff_aac_scalefactor_bits, - sizeof(ff_aac_scalefactor_bits[0]), - sizeof(ff_aac_scalefactor_bits[0]), - ff_aac_scalefactor_code, - sizeof(ff_aac_scalefactor_code[0]), - sizeof(ff_aac_scalefactor_code[0]), - 352); + VLC_INIT_STATIC_TABLE(ff_vlc_scalefactors, 7, + FF_ARRAY_ELEMS(ff_aac_scalefactor_code), + ff_aac_scalefactor_bits, + sizeof(ff_aac_scalefactor_bits[0]), + sizeof(ff_aac_scalefactor_bits[0]), + ff_aac_scalefactor_code, + sizeof(ff_aac_scalefactor_code[0]), + sizeof(ff_aac_scalefactor_code[0]), 0); } av_cold void ff_aacdec_common_init_once(void) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 4591eac6b9..1ea551b533 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -1497,7 +1497,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * } else if ((band_type[idx] == INTENSITY_BT) || (band_type[idx] == INTENSITY_BT2)) { for (; i < run_end; i++, idx++) { - offset[2] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[2] += get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[2], -155, 100); if (offset[2] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1516,7 +1516,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * if (noise_flag-- > 0) offset[1] += get_bits(gb, NOISE_PRE_BITS) - NOISE_PRE; else - offset[1] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[1] += get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[1], -100, 155); if (offset[1] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1532,7 +1532,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * } } else { for (; i < run_end; i++, idx++) { - offset[0] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[0] += get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - SCALE_DIFF_ZERO; if (offset[0] > 255U) { av_log(ac->avctx, AV_LOG_ERROR, "Scalefactor (%d) out of range.\n", offset[0]); @@ -1705,7 +1705,7 @@ static int decode_spectrum_and_dequant(AACContext *ac, INTFLOAT coef[1024], #if !USE_FIXED const float *vq = ff_aac_codebook_vector_vals[cbt_m1]; #endif /* !USE_FIXED */ - const VLCElem *vlc_tab = ff_vlc_spectral[cbt_m1].table; + const VLCElem *vlc_tab = ff_vlc_spectral[cbt_m1]; OPEN_READER(re, gb); switch (cbt_m1 >> 1) { @@ -2279,7 +2279,7 @@ static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che) INTFLOAT gain_cache = FIXR10(1.); if (c) { cge = coup->coupling_point == AFTER_IMDCT ? 1 : get_bits1(gb); - gain = cge ? get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60: 0; + gain = cge ? get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - 60: 0; gain_cache = GET_GAIN(scale, gain); #if USE_FIXED if ((abs(gain_cache)-1024) >> 3 > 30) @@ -2293,7 +2293,7 @@ static int decode_cce(AACContext *ac, GetBitContext *gb, ChannelElement *che) for (sfb = 0; sfb < sce->ics.max_sfb; sfb++, idx++) { if (sce->band_type[idx] != ZERO_BT) { if (!cge) { - int t = get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60; + int t = get_vlc2(gb, ff_vlc_scalefactors, 7, 3) - 60; if (t) { int s = 1; t = gain += t; diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index a009e9f46e..d62f170136 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -38,8 +38,8 @@ FF_VISIBILITY_PUSH_HIDDEN void ff_aacdec_common_init_once(void); -extern VLC ff_vlc_scalefactors; -extern VLC ff_vlc_spectral[11]; +extern VLCElem ff_vlc_scalefactors[]; +extern const VLCElem *ff_vlc_spectral[11]; extern const int8_t ff_tags_per_config[16]; From patchwork Tue Sep 26 22:17:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43958 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211152pzh; Tue, 26 Sep 2023 15:23:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEDZLoZRWlG+FF5w89/KPTd7pH5RttLCLtHIzmYB+TpgcTF2VJr5hu9kI6DWHB5uxVIVCV4 X-Received: by 2002:a17:906:5193:b0:9a9:dfbe:ca88 with SMTP id y19-20020a170906519300b009a9dfbeca88mr43478ejk.55.1695766996043; Tue, 26 Sep 2023 15:23:16 -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 v25-20020a170906339900b009a61e0a46e4si11433582eja.448.2023.09.26.15.23.15; Tue, 26 Sep 2023 15:23:16 -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=No27TUkQ; 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 E665268CB84; Wed, 27 Sep 2023 01:21:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2075.outbound.protection.outlook.com [40.92.64.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E15868C983 for ; Wed, 27 Sep 2023 01:21:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TQK4qKkdPkgGbNL03ISynbd8mHB7UO1JjJVjv26wiPktBdIo/84VQ11KqTa+F+A8l3bVgs0LBuoNQtseyUPa1u/9qC5j9kHNI1/c6eNh90+F0OCJAaSMPs3+k7St0ss8c2Ac4+l2fFQw5VYj16PAWoErn0UwUvUhD2r8wE4tjl9Ebb4SSVWt61DAGH/gDPejJzyze7UWYbcJ/Gj66disu4KkpA0jFgNOMQ21U/Hn4n8oeiOZOm8tvDMBVQhYZeW2SKzpTbBHei0088xDu55hg0sjf0cMdGHXHujU35RavYeV38jTEddSUlxpxBMxG/GmhlLiHiBHoryalJgJGVFjEQ== 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=V6HaXTnBKupb9wPzF3ZEcT9eo2HFjaegcMvhJt3JQtU=; b=EmOjYsoWMHDFeGTe+wJR0+U0VStk2hoH8SPUawC6pxcf1N1TZC+/ENoTF6aFdB3fk8aMJSCfqjgXiYn6ksylhSiILmBYNfobLDlgrDrUpx6+mfQd5/CkrZtqGrv1TgQZcYhabuQjOHVKZb+5+noz3n/tueeVb2Zit2DX1htThuqr0ffTNSmAnbUwenUqQfW9Kh0KGFkDxxKUuNGZTcCPU4+aeruf/BdNcvLyNDu7ueTZqnmuPkntChwGlcI+1lXBFmEgXORDX5ndx/BLzMZcJoZMBG4E7e2gY6GAR+Pt7LchKDS8Ze4p/iL1ejDI0h2bkYj2S/xUo7MDya4Q9Aq92g== 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=V6HaXTnBKupb9wPzF3ZEcT9eo2HFjaegcMvhJt3JQtU=; b=No27TUkQHnvfmwRTG6i02jVHqmOjq4BBO37MFlkmDtG0EQ3NYogw7v0Cp8/rL+hX0Z4YkquE4MTJQPyYmsyUTqUz6tDjT4+NIKD/LxDw7CZ1RalvyJAmVt6Gc+q4GNkk7BJnq/5CDsEI25TXF7VCnCaAqDaZWAo1tjL+f5nVDCIyC1P2WJkf+MHg8/Upx2oXmvniZTqy9JLa59Yyy5WVeydLjMbaiWKFpheMK9lxUwctKGuv/0m5dsNRtzKs2VxITzVRYXo5VJ1yhYLQNoKa4TODHO1PnINgYduXUKnyCAlExBk4up700WdDTIMT/mLNyEi0gkkscnsMKmRJjIBayw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:21:41 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:21:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:18 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [Qld3fXwJRyFrfYfxciMKL+iKE1hRbaod] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-46-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: adae84cd-6f92-4d6a-5217-08dbbedef537 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HKBopoSQdv7UtRfw7qnw/rABvk1Aw/Kk3GvexTbSOfSKJmanu/f9RH5l0csbe5VLiRQbjc1AONpyx1sqY0W9XOWaRoxAw+0izNm9u2cJx6lq4FR6Uf06aZVK9tQIMzIPjZp3Sj+y9i2Z0jpt4N2LjFxyygjc/9OO+5pi/fXQ1PqNiChWNK2XsiISGzDCqj1XwngVcYzIgI+pchPTkoftzQQnjeUBQU0Pt9tyqe9GXpKx6tuKbmuiKGoN3jzp297YtvUm5/9pEY5gUO16nIroBdyCR8RcqoNBvmbz9b3RXyVFlY3khhqe+RLA4Gyizi3tMnUYTarYF0Yy+/IQ5YtXMHqz2pF4qUxJNUIZv2RNzNJMNabaK56czIVzIxSj71fiKFXzbf6PUJiM8LrYr1p7KgRZ0OrlLdd+eMTwmrsgrml0TEUYvWdiESKv7TDzHgDQL4XLZwRalBoz4PhaxE7mkCKgGcDN3sEe/JQ2VBiqLa8DiUSsp7aDVyoToXC/HJIvpWMvSjvWUDuT9dG/PvOAcQ4GkUthrwfrgsJCU8OLb/nGJcuwk6Lhfy9LuIEwzczLlqnx0hcm3cf808wp4kjdUzCAXhnxOvNHnr3PTKPz8U4BN66G/o1B+krp+4PpCt3J X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1v82bn18gfIxbtKPQ1TYwKDYS6cazXZN7l6ASo4POD+Bgb7Nxm+662AA2T3UVVzSlVHF7xIqiX3rJPTNDbdW3iWxWrr0IbL0aCe4kf17PZDp7HtQ0UHB/UL2bxGhdkZlwhxYB8z3DoqDbqb6FeYOa3vCz20JCGAOsA9BT4A6l+XZ2BVH7n1yy2J57jrbIwGlAR8wHYNdvEk5fqIsnZSoRpma0pG5EJY3gs6QMR8cgavSGYny40KIfAOydxCTbKhtHPz3Wo6j4Rc8wXSb2am4COjz7fwMJaXm0sDyAFDUGVt8oNb5KWXQRg8yGZQ75vYg9Vsa9xZAXI2ubnlOlqsPQQFEZE+agMLnmTlUQPLxY6smJeXvkTAHMnzJPkLTzVPwA8o0Sb+BwJfBw0zXMgXf27zKl8DBU6JVpPTx3pBMieImcRzCkVVdan09Rpv1iZuA4HhkjUsKEzIOWkSfriolgCQqGQr/pMmcz6Q+ki6QWrjTCnrWYpp0nGNsqYxl53HD6rCo3PeKi58aKt2nX8ZZkAUvvzpkeRKJtgHy/rP5x5PZzXAzb2euP1Iwi+1GlguVwvdsxLuXIBSxaH6NwnDahLwdt9AWPGbi9vsjVaQowFZLPe2efhHUptPFzI49LKxs9u7UgHZvePSCPamUy3MCTwVaEU8yQR9qsyzQcAGiYwSSP9D9gcSg7jhlAIW1hgBQgn6xojDol75zcGRQEyoND56XyBfMZ4n+rQzQqxS6rfkS0CdWOKQUAfTolOHlWgTrUkCthdCazSwipffDwJu4HsG3KSX7gwyh6kHF2Rp9iLWdxyeERRQHsRNVV8T+3Iy3ELrkm//q5yhaDRlFkIKdAjTwzPQPKMO/7lTwArqndKd7GzjD+3h41K+Ku8VxNm1kZnpRgLRHwxmFDPQXmeq4gnq1oeqXzQGbOhuo3lWuxsgPkJZ2zvsyPw5Cl4SXnaLaAPohSkkJQQUdHFOpLaYY31eJMH8S+ntHBp0SF8zuTuRekRog2toAIyKeRhJLodBDMnkm/ksZ4sqJx5gs1FU4UlCq7VRA9/AIAEXzgavfklcKhbScPV7IAi2WlB9RERpviTEta8nR9rGpu4pWQ7PWFDEHk3FlMLjlGgF50EJevCjN9wtJOlon8UrmCFa/LQFz6d26w9hSVGl+q+Kb1x1Jo3yjtQof895gSG9fjLD/JBhxY/J+HNm9u/+zskbnU9glH8ms54/usCkWkraJ7tMa6PBiqLtk5tiL+UVmMjB3rVJpr2GcMA287ZJvgWgTp8xS X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: adae84cd-6f92-4d6a-5217-08dbbedef537 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:21:41.1854 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 47/61] avcodec/aacsbr_template: Deduplicate VLCs 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: 8SJeuY8V5VCN The VLCs, their init code and the tables used for initialization are currently duplicated for the floating- and fixed-point decoders. This commit stops doing so and moves this stuff to aacdec_common.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 263 +++++++++++++++++++++++++++++++++++ libavcodec/aacdectab.h | 2 + libavcodec/aacsbr.c | 1 - libavcodec/aacsbr.h | 11 +- libavcodec/aacsbr_fixed.c | 1 - libavcodec/aacsbr_template.c | 53 ++----- libavcodec/aacsbrdata.h | 226 ------------------------------ 7 files changed, 279 insertions(+), 278 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index 61d81343fe..cbd2a9ccd2 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -126,8 +126,259 @@ const AVChannelLayout ff_aac_ch_layout[] = { VLCElem ff_vlc_scalefactors[352]; const VLCElem *ff_vlc_spectral[11]; +/// Huffman tables for SBR + +static const uint8_t t_huffman_env_1_5dB_bits[121] = { + 18, 18, 18, 18, 18, 18, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 17, 18, 16, 17, 18, 17, + 16, 16, 16, 16, 15, 14, 14, 13, + 13, 12, 11, 10, 9, 8, 7, 6, + 5, 4, 3, 2, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 12, 13, 14, + 14, 15, 16, 17, 16, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, +}; + +static const uint32_t t_huffman_env_1_5dB_codes[121] = { + 0x3ffd6, 0x3ffd7, 0x3ffd8, 0x3ffd9, 0x3ffda, 0x3ffdb, 0x7ffb8, 0x7ffb9, + 0x7ffba, 0x7ffbb, 0x7ffbc, 0x7ffbd, 0x7ffbe, 0x7ffbf, 0x7ffc0, 0x7ffc1, + 0x7ffc2, 0x7ffc3, 0x7ffc4, 0x7ffc5, 0x7ffc6, 0x7ffc7, 0x7ffc8, 0x7ffc9, + 0x7ffca, 0x7ffcb, 0x7ffcc, 0x7ffcd, 0x7ffce, 0x7ffcf, 0x7ffd0, 0x7ffd1, + 0x7ffd2, 0x7ffd3, 0x1ffe6, 0x3ffd4, 0x0fff0, 0x1ffe9, 0x3ffd5, 0x1ffe7, + 0x0fff1, 0x0ffec, 0x0ffed, 0x0ffee, 0x07ff4, 0x03ff9, 0x03ff7, 0x01ffa, + 0x01ff9, 0x00ffb, 0x007fc, 0x003fc, 0x001fd, 0x000fd, 0x0007d, 0x0003d, + 0x0001d, 0x0000d, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000c, 0x0001c, + 0x0003c, 0x0007c, 0x000fc, 0x001fc, 0x003fd, 0x00ffa, 0x01ff8, 0x03ff6, + 0x03ff8, 0x07ff5, 0x0ffef, 0x1ffe8, 0x0fff2, 0x7ffd4, 0x7ffd5, 0x7ffd6, + 0x7ffd7, 0x7ffd8, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd, 0x7ffde, + 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffe6, + 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffec, 0x7ffed, 0x7ffee, + 0x7ffef, 0x7fff0, 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, + 0x7fff7, 0x7fff8, 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, + 0x7ffff, +}; + +static const uint8_t f_huffman_env_1_5dB_bits[121] = { + 19, 19, 20, 20, 20, 20, 20, 20, + 20, 19, 20, 20, 20, 20, 19, 20, + 19, 19, 20, 18, 20, 20, 20, 19, + 20, 20, 20, 19, 20, 19, 18, 19, + 18, 18, 17, 18, 17, 17, 17, 16, + 16, 16, 15, 15, 14, 13, 13, 12, + 12, 11, 10, 9, 9, 8, 7, 6, + 5, 4, 3, 2, 2, 3, 4, 5, + 6, 8, 8, 9, 10, 11, 11, 11, + 12, 12, 13, 13, 14, 14, 16, 16, + 17, 17, 18, 18, 18, 18, 18, 18, + 18, 20, 19, 20, 20, 20, 20, 20, + 20, 19, 20, 20, 20, 20, 19, 20, + 18, 20, 20, 19, 19, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, + 20, +}; + +static const uint32_t f_huffman_env_1_5dB_codes[121] = { + 0x7ffe7, 0x7ffe8, 0xfffd2, 0xfffd3, 0xfffd4, 0xfffd5, 0xfffd6, 0xfffd7, + 0xfffd8, 0x7ffda, 0xfffd9, 0xfffda, 0xfffdb, 0xfffdc, 0x7ffdb, 0xfffdd, + 0x7ffdc, 0x7ffdd, 0xfffde, 0x3ffe4, 0xfffdf, 0xfffe0, 0xfffe1, 0x7ffde, + 0xfffe2, 0xfffe3, 0xfffe4, 0x7ffdf, 0xfffe5, 0x7ffe0, 0x3ffe8, 0x7ffe1, + 0x3ffe0, 0x3ffe9, 0x1ffef, 0x3ffe5, 0x1ffec, 0x1ffed, 0x1ffee, 0x0fff4, + 0x0fff3, 0x0fff0, 0x07ff7, 0x07ff6, 0x03ffa, 0x01ffa, 0x01ff9, 0x00ffa, + 0x00ff8, 0x007f9, 0x003fb, 0x001fc, 0x001fa, 0x000fb, 0x0007c, 0x0003c, + 0x0001c, 0x0000c, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000d, 0x0001d, + 0x0003d, 0x000fa, 0x000fc, 0x001fb, 0x003fa, 0x007f8, 0x007fa, 0x007fb, + 0x00ff9, 0x00ffb, 0x01ff8, 0x01ffb, 0x03ff8, 0x03ff9, 0x0fff1, 0x0fff2, + 0x1ffea, 0x1ffeb, 0x3ffe1, 0x3ffe2, 0x3ffea, 0x3ffe3, 0x3ffe6, 0x3ffe7, + 0x3ffeb, 0xfffe6, 0x7ffe2, 0xfffe7, 0xfffe8, 0xfffe9, 0xfffea, 0xfffeb, + 0xfffec, 0x7ffe3, 0xfffed, 0xfffee, 0xfffef, 0xffff0, 0x7ffe4, 0xffff1, + 0x3ffec, 0xffff2, 0xffff3, 0x7ffe5, 0x7ffe6, 0xffff4, 0xffff5, 0xffff6, + 0xffff7, 0xffff8, 0xffff9, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, + 0xfffff, +}; + +static const uint8_t t_huffman_env_bal_1_5dB_bits[49] = { + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 12, 11, 9, 7, 5, 3, + 1, 2, 4, 6, 8, 11, 12, 15, + 16, 16, 16, 16, 16, 16, 16, 17, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, +}; + +static const uint32_t t_huffman_env_bal_1_5dB_codes[49] = { + 0x0ffe4, 0x0ffe5, 0x0ffe6, 0x0ffe7, 0x0ffe8, 0x0ffe9, 0x0ffea, 0x0ffeb, + 0x0ffec, 0x0ffed, 0x0ffee, 0x0ffef, 0x0fff0, 0x0fff1, 0x0fff2, 0x0fff3, + 0x0fff4, 0x0ffe2, 0x00ffc, 0x007fc, 0x001fe, 0x0007e, 0x0001e, 0x00006, + 0x00000, 0x00002, 0x0000e, 0x0003e, 0x000fe, 0x007fd, 0x00ffd, 0x07ff0, + 0x0ffe3, 0x0fff5, 0x0fff6, 0x0fff7, 0x0fff8, 0x0fff9, 0x0fffa, 0x1fff6, + 0x1fff7, 0x1fff8, 0x1fff9, 0x1fffa, 0x1fffb, 0x1fffc, 0x1fffd, 0x1fffe, + 0x1ffff, +}; + +static const uint8_t f_huffman_env_bal_1_5dB_bits[49] = { + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 16, + 17, 14, 11, 11, 8, 7, 4, 2, + 1, 3, 5, 6, 9, 11, 12, 15, + 16, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 19, + 19, +}; + +static const uint32_t f_huffman_env_bal_1_5dB_codes[49] = { + 0x3ffe2, 0x3ffe3, 0x3ffe4, 0x3ffe5, 0x3ffe6, 0x3ffe7, 0x3ffe8, 0x3ffe9, + 0x3ffea, 0x3ffeb, 0x3ffec, 0x3ffed, 0x3ffee, 0x3ffef, 0x3fff0, 0x0fff7, + 0x1fff0, 0x03ffc, 0x007fe, 0x007fc, 0x000fe, 0x0007e, 0x0000e, 0x00002, + 0x00000, 0x00006, 0x0001e, 0x0003e, 0x001fe, 0x007fd, 0x00ffe, 0x07ffa, + 0x0fff6, 0x3fff1, 0x3fff2, 0x3fff3, 0x3fff4, 0x3fff5, 0x3fff6, 0x3fff7, + 0x3fff8, 0x3fff9, 0x3fffa, 0x3fffb, 0x3fffc, 0x3fffd, 0x3fffe, 0x7fffe, + 0x7ffff, +}; + +static const uint8_t t_huffman_env_3_0dB_bits[63] = { + 18, 18, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 17, 16, 16, 16, 14, 14, 14, + 13, 12, 11, 8, 6, 4, 2, 1, + 3, 5, 7, 9, 11, 13, 14, 14, + 15, 16, 17, 18, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, +}; + +static const uint32_t t_huffman_env_3_0dB_codes[63] = { + 0x3ffed, 0x3ffee, 0x7ffde, 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, + 0x7ffe4, 0x7ffe5, 0x7ffe6, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, + 0x7ffec, 0x1fff4, 0x0fff7, 0x0fff9, 0x0fff8, 0x03ffb, 0x03ffa, 0x03ff8, + 0x01ffa, 0x00ffc, 0x007fc, 0x000fe, 0x0003e, 0x0000e, 0x00002, 0x00000, + 0x00006, 0x0001e, 0x0007e, 0x001fe, 0x007fd, 0x01ffb, 0x03ff9, 0x03ffc, + 0x07ffa, 0x0fff6, 0x1fff5, 0x3ffec, 0x7ffed, 0x7ffee, 0x7ffef, 0x7fff0, + 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, 0x7fff7, 0x7fff8, + 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, 0x7ffff, +}; + +static const uint8_t f_huffman_env_3_0dB_bits[63] = { + 20, 20, 20, 20, 20, 20, 20, 18, + 19, 19, 19, 19, 18, 18, 20, 19, + 17, 18, 17, 16, 16, 15, 14, 12, + 11, 10, 9, 8, 6, 4, 2, 1, + 3, 5, 8, 9, 10, 11, 12, 13, + 14, 15, 15, 16, 16, 17, 17, 18, + 18, 18, 20, 19, 19, 19, 20, 19, + 19, 20, 20, 20, 20, 20, 20, +}; + +static const uint32_t f_huffman_env_3_0dB_codes[63] = { + 0xffff0, 0xffff1, 0xffff2, 0xffff3, 0xffff4, 0xffff5, 0xffff6, 0x3fff3, + 0x7fff5, 0x7ffee, 0x7ffef, 0x7fff6, 0x3fff4, 0x3fff2, 0xffff7, 0x7fff0, + 0x1fff5, 0x3fff0, 0x1fff4, 0x0fff7, 0x0fff6, 0x07ff8, 0x03ffb, 0x00ffd, + 0x007fd, 0x003fd, 0x001fd, 0x000fd, 0x0003e, 0x0000e, 0x00002, 0x00000, + 0x00006, 0x0001e, 0x000fc, 0x001fc, 0x003fc, 0x007fc, 0x00ffc, 0x01ffc, + 0x03ffa, 0x07ff9, 0x07ffa, 0x0fff8, 0x0fff9, 0x1fff6, 0x1fff7, 0x3fff5, + 0x3fff6, 0x3fff1, 0xffff8, 0x7fff1, 0x7fff2, 0x7fff3, 0xffff9, 0x7fff7, + 0x7fff4, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, 0xfffff, +}; + +static const uint8_t t_huffman_env_bal_3_0dB_bits[25] = { + 13, 13, 13, 13, 13, 13, 13, 12, + 8, 7, 4, 3, 1, 2, 5, 6, + 9, 13, 13, 13, 13, 13, 13, 14, + 14, +}; + +static const uint16_t t_huffman_env_bal_3_0dB_codes[25] = { + 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x0ff8, + 0x00fe, 0x007e, 0x000e, 0x0006, 0x0000, 0x0002, 0x001e, 0x003e, + 0x01fe, 0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, + 0x3fff, +}; + +static const uint8_t f_huffman_env_bal_3_0dB_bits[25] = { + 13, 13, 13, 13, 13, 14, 14, 11, + 8, 7, 4, 2, 1, 3, 5, 6, + 9, 12, 13, 14, 14, 14, 14, 14, + 14, +}; + +static const uint16_t f_huffman_env_bal_3_0dB_codes[25] = { + 0x1ff7, 0x1ff8, 0x1ff9, 0x1ffa, 0x1ffb, 0x3ff8, 0x3ff9, 0x07fc, + 0x00fe, 0x007e, 0x000e, 0x0002, 0x0000, 0x0006, 0x001e, 0x003e, + 0x01fe, 0x0ffa, 0x1ff6, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, + 0x3fff, +}; + +static const uint8_t t_huffman_noise_3_0dB_bits[63] = { + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 11, 8, 6, 4, 3, 1, + 2, 5, 8, 10, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 14, 14, +}; + +static const uint16_t t_huffman_noise_3_0dB_codes[63] = { + 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, + 0x1fd6, 0x1fd7, 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x1fdc, 0x1fdd, + 0x1fde, 0x1fdf, 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, + 0x1fe6, 0x1fe7, 0x07f2, 0x00fd, 0x003e, 0x000e, 0x0006, 0x0000, + 0x0002, 0x001e, 0x00fc, 0x03f8, 0x1fcc, 0x1fe8, 0x1fe9, 0x1fea, + 0x1feb, 0x1fec, 0x1fcd, 0x1fed, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, + 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x1ff9, + 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, 0x3fff, +}; + +static const uint8_t t_huffman_noise_bal_3_0dB_bits[25] = { + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 5, 2, 1, 3, 6, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, +}; + +static const uint8_t t_huffman_noise_bal_3_0dB_codes[25] = { + 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, + 0xf4, 0xf5, 0x1c, 0x02, 0x00, 0x06, 0x3a, 0xf6, + 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, + 0xff, +}; + +VLC ff_aac_sbr_vlc[10]; + static av_cold void aacdec_common_init(void) { +#define SBR_INIT_VLC_STATIC(num, size) \ + VLC_INIT_STATIC(&ff_aac_sbr_vlc[num], 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ + sbr_tmp[num].sbr_bits , 1, 1, \ + sbr_tmp[num].sbr_codes, sbr_tmp[num].elem_size, sbr_tmp[num].elem_size, \ + size) +#define SBR_VLC_ROW(name) \ + { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } + static const struct { + const void *sbr_codes, *sbr_bits; + const unsigned int table_size, elem_size; + } sbr_tmp[] = { + SBR_VLC_ROW(t_huffman_env_1_5dB), + SBR_VLC_ROW(f_huffman_env_1_5dB), + SBR_VLC_ROW(t_huffman_env_bal_1_5dB), + SBR_VLC_ROW(f_huffman_env_bal_1_5dB), + SBR_VLC_ROW(t_huffman_env_3_0dB), + SBR_VLC_ROW(f_huffman_env_3_0dB), + SBR_VLC_ROW(t_huffman_env_bal_3_0dB), + SBR_VLC_ROW(f_huffman_env_bal_3_0dB), + SBR_VLC_ROW(t_huffman_noise_3_0dB), + SBR_VLC_ROW(t_huffman_noise_bal_3_0dB), + }; + static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + 294 + 306 + 268 + 510 + 366 + 462]; VLCInitState state = VLC_INIT_STATE(vlc_buf); @@ -150,6 +401,18 @@ static av_cold void aacdec_common_init(void) ff_aac_scalefactor_code, sizeof(ff_aac_scalefactor_code[0]), sizeof(ff_aac_scalefactor_code[0]), 0); + + // SBR VLC table initialization + SBR_INIT_VLC_STATIC(0, 1098); + SBR_INIT_VLC_STATIC(1, 1092); + SBR_INIT_VLC_STATIC(2, 768); + SBR_INIT_VLC_STATIC(3, 1026); + SBR_INIT_VLC_STATIC(4, 1058); + SBR_INIT_VLC_STATIC(5, 1052); + SBR_INIT_VLC_STATIC(6, 544); + SBR_INIT_VLC_STATIC(7, 544); + SBR_INIT_VLC_STATIC(8, 592); + SBR_INIT_VLC_STATIC(9, 512); } av_cold void ff_aacdec_common_init_once(void) diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index d62f170136..02e0d8a48e 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -38,6 +38,8 @@ FF_VISIBILITY_PUSH_HIDDEN void ff_aacdec_common_init_once(void); +extern VLC ff_aac_sbr_vlc[10]; + extern VLCElem ff_vlc_scalefactors[]; extern const VLCElem *ff_vlc_spectral[11]; diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c index 47aa6cb3c1..683c079b91 100644 --- a/libavcodec/aacsbr.c +++ b/libavcodec/aacsbr.c @@ -47,7 +47,6 @@ #include "mips/aacsbr_mips.h" #endif /* ARCH_MIPS */ -static VLC vlc_sbr[10]; static void aacsbr_func_ptr_init(AACSBRContext *c); static void make_bands(int16_t* bands, int start, int stop, int num_bands) diff --git a/libavcodec/aacsbr.h b/libavcodec/aacsbr.h index 09f9eb1d2c..0d182f822c 100644 --- a/libavcodec/aacsbr.h +++ b/libavcodec/aacsbr.h @@ -30,7 +30,7 @@ #define AVCODEC_AACSBR_H #include "get_bits.h" -#include "aac.h" +#include "aac_defines.h" #include "sbr.h" #define ENVELOPE_ADJUSTMENT_OFFSET 2 @@ -69,15 +69,6 @@ enum { static const int8_t vlc_sbr_lav[10] = { 60, 60, 24, 24, 31, 31, 12, 12, 31, 12 }; -#define SBR_INIT_VLC_STATIC(num, size) \ - VLC_INIT_STATIC(&vlc_sbr[num], 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ - sbr_tmp[num].sbr_bits , 1, 1, \ - sbr_tmp[num].sbr_codes, sbr_tmp[num].elem_size, sbr_tmp[num].elem_size, \ - size) - -#define SBR_VLC_ROW(name) \ - { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } - /** Initialize SBR. */ void AAC_RENAME(ff_aac_sbr_init)(void); /** Initialize one SBR context. */ diff --git a/libavcodec/aacsbr_fixed.c b/libavcodec/aacsbr_fixed.c index cac472552e..3dbda32447 100644 --- a/libavcodec/aacsbr_fixed.c +++ b/libavcodec/aacsbr_fixed.c @@ -70,7 +70,6 @@ #include #include -static VLC vlc_sbr[10]; static void aacsbr_func_ptr_init(AACSBRContext *c); static const int CONST_LN2 = Q31(0.6931471806/256); // ln(2)/256 static const int CONST_RECIP_LN2 = Q31(0.7213475204); // 0.5/ln(2) diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index f3d3258d2e..26be2739d3 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -32,6 +32,7 @@ * @author Zoran Basaric ( zoran.basaric@imgtec.com ) */ +#include "aacdectab.h" #include "libavutil/qsort.h" static av_cold void aacsbr_tableinit(void) @@ -44,34 +45,6 @@ static av_cold void aacsbr_tableinit(void) av_cold void AAC_RENAME(ff_aac_sbr_init)(void) { - static const struct { - const void *sbr_codes, *sbr_bits; - const unsigned int table_size, elem_size; - } sbr_tmp[] = { - SBR_VLC_ROW(t_huffman_env_1_5dB), - SBR_VLC_ROW(f_huffman_env_1_5dB), - SBR_VLC_ROW(t_huffman_env_bal_1_5dB), - SBR_VLC_ROW(f_huffman_env_bal_1_5dB), - SBR_VLC_ROW(t_huffman_env_3_0dB), - SBR_VLC_ROW(f_huffman_env_3_0dB), - SBR_VLC_ROW(t_huffman_env_bal_3_0dB), - SBR_VLC_ROW(f_huffman_env_bal_3_0dB), - SBR_VLC_ROW(t_huffman_noise_3_0dB), - SBR_VLC_ROW(t_huffman_noise_bal_3_0dB), - }; - - // SBR VLC table initialization - SBR_INIT_VLC_STATIC(0, 1098); - SBR_INIT_VLC_STATIC(1, 1092); - SBR_INIT_VLC_STATIC(2, 768); - SBR_INIT_VLC_STATIC(3, 1026); - SBR_INIT_VLC_STATIC(4, 1058); - SBR_INIT_VLC_STATIC(5, 1052); - SBR_INIT_VLC_STATIC(6, 544); - SBR_INIT_VLC_STATIC(7, 544); - SBR_INIT_VLC_STATIC(8, 592); - SBR_INIT_VLC_STATIC(9, 512); - aacsbr_tableinit(); AAC_RENAME(ff_ps_init)(); @@ -838,29 +811,29 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi if (sbr->bs_coupling && ch) { if (ch_data->bs_amp_res) { bits = 5; - t_huff = vlc_sbr[T_HUFFMAN_ENV_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_3_0DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { bits = 6; - t_huff = vlc_sbr[T_HUFFMAN_ENV_BAL_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_1_5DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_BAL_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_1_5DB]; } } else { if (ch_data->bs_amp_res) { bits = 6; - t_huff = vlc_sbr[T_HUFFMAN_ENV_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_3_0DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } else { bits = 7; - t_huff = vlc_sbr[T_HUFFMAN_ENV_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_1_5DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_1_5DB]; } } @@ -923,14 +896,14 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; if (sbr->bs_coupling && ch) { - t_huff = vlc_sbr[T_HUFFMAN_NOISE_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_BAL_3_0DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { - t_huff = vlc_sbr[T_HUFFMAN_NOISE_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB].table; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_3_0DB]; - f_huff = vlc_sbr[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } diff --git a/libavcodec/aacsbrdata.h b/libavcodec/aacsbrdata.h index 7bb45b229e..cb8b83d3d6 100644 --- a/libavcodec/aacsbrdata.h +++ b/libavcodec/aacsbrdata.h @@ -33,232 +33,6 @@ #include "libavutil/mem_internal.h" #include "aac_defines.h" -///< Huffman tables for SBR - -static const uint8_t t_huffman_env_1_5dB_bits[121] = { - 18, 18, 18, 18, 18, 18, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 17, 18, 16, 17, 18, 17, - 16, 16, 16, 16, 15, 14, 14, 13, - 13, 12, 11, 10, 9, 8, 7, 6, - 5, 4, 3, 2, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 12, 13, 14, - 14, 15, 16, 17, 16, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, -}; - -static const uint32_t t_huffman_env_1_5dB_codes[121] = { - 0x3ffd6, 0x3ffd7, 0x3ffd8, 0x3ffd9, 0x3ffda, 0x3ffdb, 0x7ffb8, 0x7ffb9, - 0x7ffba, 0x7ffbb, 0x7ffbc, 0x7ffbd, 0x7ffbe, 0x7ffbf, 0x7ffc0, 0x7ffc1, - 0x7ffc2, 0x7ffc3, 0x7ffc4, 0x7ffc5, 0x7ffc6, 0x7ffc7, 0x7ffc8, 0x7ffc9, - 0x7ffca, 0x7ffcb, 0x7ffcc, 0x7ffcd, 0x7ffce, 0x7ffcf, 0x7ffd0, 0x7ffd1, - 0x7ffd2, 0x7ffd3, 0x1ffe6, 0x3ffd4, 0x0fff0, 0x1ffe9, 0x3ffd5, 0x1ffe7, - 0x0fff1, 0x0ffec, 0x0ffed, 0x0ffee, 0x07ff4, 0x03ff9, 0x03ff7, 0x01ffa, - 0x01ff9, 0x00ffb, 0x007fc, 0x003fc, 0x001fd, 0x000fd, 0x0007d, 0x0003d, - 0x0001d, 0x0000d, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000c, 0x0001c, - 0x0003c, 0x0007c, 0x000fc, 0x001fc, 0x003fd, 0x00ffa, 0x01ff8, 0x03ff6, - 0x03ff8, 0x07ff5, 0x0ffef, 0x1ffe8, 0x0fff2, 0x7ffd4, 0x7ffd5, 0x7ffd6, - 0x7ffd7, 0x7ffd8, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd, 0x7ffde, - 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffe6, - 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffec, 0x7ffed, 0x7ffee, - 0x7ffef, 0x7fff0, 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, - 0x7fff7, 0x7fff8, 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, - 0x7ffff, -}; - -static const uint8_t f_huffman_env_1_5dB_bits[121] = { - 19, 19, 20, 20, 20, 20, 20, 20, - 20, 19, 20, 20, 20, 20, 19, 20, - 19, 19, 20, 18, 20, 20, 20, 19, - 20, 20, 20, 19, 20, 19, 18, 19, - 18, 18, 17, 18, 17, 17, 17, 16, - 16, 16, 15, 15, 14, 13, 13, 12, - 12, 11, 10, 9, 9, 8, 7, 6, - 5, 4, 3, 2, 2, 3, 4, 5, - 6, 8, 8, 9, 10, 11, 11, 11, - 12, 12, 13, 13, 14, 14, 16, 16, - 17, 17, 18, 18, 18, 18, 18, 18, - 18, 20, 19, 20, 20, 20, 20, 20, - 20, 19, 20, 20, 20, 20, 19, 20, - 18, 20, 20, 19, 19, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, - 20, -}; - -static const uint32_t f_huffman_env_1_5dB_codes[121] = { - 0x7ffe7, 0x7ffe8, 0xfffd2, 0xfffd3, 0xfffd4, 0xfffd5, 0xfffd6, 0xfffd7, - 0xfffd8, 0x7ffda, 0xfffd9, 0xfffda, 0xfffdb, 0xfffdc, 0x7ffdb, 0xfffdd, - 0x7ffdc, 0x7ffdd, 0xfffde, 0x3ffe4, 0xfffdf, 0xfffe0, 0xfffe1, 0x7ffde, - 0xfffe2, 0xfffe3, 0xfffe4, 0x7ffdf, 0xfffe5, 0x7ffe0, 0x3ffe8, 0x7ffe1, - 0x3ffe0, 0x3ffe9, 0x1ffef, 0x3ffe5, 0x1ffec, 0x1ffed, 0x1ffee, 0x0fff4, - 0x0fff3, 0x0fff0, 0x07ff7, 0x07ff6, 0x03ffa, 0x01ffa, 0x01ff9, 0x00ffa, - 0x00ff8, 0x007f9, 0x003fb, 0x001fc, 0x001fa, 0x000fb, 0x0007c, 0x0003c, - 0x0001c, 0x0000c, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000d, 0x0001d, - 0x0003d, 0x000fa, 0x000fc, 0x001fb, 0x003fa, 0x007f8, 0x007fa, 0x007fb, - 0x00ff9, 0x00ffb, 0x01ff8, 0x01ffb, 0x03ff8, 0x03ff9, 0x0fff1, 0x0fff2, - 0x1ffea, 0x1ffeb, 0x3ffe1, 0x3ffe2, 0x3ffea, 0x3ffe3, 0x3ffe6, 0x3ffe7, - 0x3ffeb, 0xfffe6, 0x7ffe2, 0xfffe7, 0xfffe8, 0xfffe9, 0xfffea, 0xfffeb, - 0xfffec, 0x7ffe3, 0xfffed, 0xfffee, 0xfffef, 0xffff0, 0x7ffe4, 0xffff1, - 0x3ffec, 0xffff2, 0xffff3, 0x7ffe5, 0x7ffe6, 0xffff4, 0xffff5, 0xffff6, - 0xffff7, 0xffff8, 0xffff9, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, - 0xfffff, -}; - -static const uint8_t t_huffman_env_bal_1_5dB_bits[49] = { - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 12, 11, 9, 7, 5, 3, - 1, 2, 4, 6, 8, 11, 12, 15, - 16, 16, 16, 16, 16, 16, 16, 17, - 17, 17, 17, 17, 17, 17, 17, 17, - 17, -}; - -static const uint32_t t_huffman_env_bal_1_5dB_codes[49] = { - 0x0ffe4, 0x0ffe5, 0x0ffe6, 0x0ffe7, 0x0ffe8, 0x0ffe9, 0x0ffea, 0x0ffeb, - 0x0ffec, 0x0ffed, 0x0ffee, 0x0ffef, 0x0fff0, 0x0fff1, 0x0fff2, 0x0fff3, - 0x0fff4, 0x0ffe2, 0x00ffc, 0x007fc, 0x001fe, 0x0007e, 0x0001e, 0x00006, - 0x00000, 0x00002, 0x0000e, 0x0003e, 0x000fe, 0x007fd, 0x00ffd, 0x07ff0, - 0x0ffe3, 0x0fff5, 0x0fff6, 0x0fff7, 0x0fff8, 0x0fff9, 0x0fffa, 0x1fff6, - 0x1fff7, 0x1fff8, 0x1fff9, 0x1fffa, 0x1fffb, 0x1fffc, 0x1fffd, 0x1fffe, - 0x1ffff, -}; - -static const uint8_t f_huffman_env_bal_1_5dB_bits[49] = { - 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 16, - 17, 14, 11, 11, 8, 7, 4, 2, - 1, 3, 5, 6, 9, 11, 12, 15, - 16, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, - 19, -}; - -static const uint32_t f_huffman_env_bal_1_5dB_codes[49] = { - 0x3ffe2, 0x3ffe3, 0x3ffe4, 0x3ffe5, 0x3ffe6, 0x3ffe7, 0x3ffe8, 0x3ffe9, - 0x3ffea, 0x3ffeb, 0x3ffec, 0x3ffed, 0x3ffee, 0x3ffef, 0x3fff0, 0x0fff7, - 0x1fff0, 0x03ffc, 0x007fe, 0x007fc, 0x000fe, 0x0007e, 0x0000e, 0x00002, - 0x00000, 0x00006, 0x0001e, 0x0003e, 0x001fe, 0x007fd, 0x00ffe, 0x07ffa, - 0x0fff6, 0x3fff1, 0x3fff2, 0x3fff3, 0x3fff4, 0x3fff5, 0x3fff6, 0x3fff7, - 0x3fff8, 0x3fff9, 0x3fffa, 0x3fffb, 0x3fffc, 0x3fffd, 0x3fffe, 0x7fffe, - 0x7ffff, -}; - -static const uint8_t t_huffman_env_3_0dB_bits[63] = { - 18, 18, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 17, 16, 16, 16, 14, 14, 14, - 13, 12, 11, 8, 6, 4, 2, 1, - 3, 5, 7, 9, 11, 13, 14, 14, - 15, 16, 17, 18, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, -}; - -static const uint32_t t_huffman_env_3_0dB_codes[63] = { - 0x3ffed, 0x3ffee, 0x7ffde, 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, - 0x7ffe4, 0x7ffe5, 0x7ffe6, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, - 0x7ffec, 0x1fff4, 0x0fff7, 0x0fff9, 0x0fff8, 0x03ffb, 0x03ffa, 0x03ff8, - 0x01ffa, 0x00ffc, 0x007fc, 0x000fe, 0x0003e, 0x0000e, 0x00002, 0x00000, - 0x00006, 0x0001e, 0x0007e, 0x001fe, 0x007fd, 0x01ffb, 0x03ff9, 0x03ffc, - 0x07ffa, 0x0fff6, 0x1fff5, 0x3ffec, 0x7ffed, 0x7ffee, 0x7ffef, 0x7fff0, - 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, 0x7fff7, 0x7fff8, - 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, 0x7ffff, -}; - -static const uint8_t f_huffman_env_3_0dB_bits[63] = { - 20, 20, 20, 20, 20, 20, 20, 18, - 19, 19, 19, 19, 18, 18, 20, 19, - 17, 18, 17, 16, 16, 15, 14, 12, - 11, 10, 9, 8, 6, 4, 2, 1, - 3, 5, 8, 9, 10, 11, 12, 13, - 14, 15, 15, 16, 16, 17, 17, 18, - 18, 18, 20, 19, 19, 19, 20, 19, - 19, 20, 20, 20, 20, 20, 20, -}; - -static const uint32_t f_huffman_env_3_0dB_codes[63] = { - 0xffff0, 0xffff1, 0xffff2, 0xffff3, 0xffff4, 0xffff5, 0xffff6, 0x3fff3, - 0x7fff5, 0x7ffee, 0x7ffef, 0x7fff6, 0x3fff4, 0x3fff2, 0xffff7, 0x7fff0, - 0x1fff5, 0x3fff0, 0x1fff4, 0x0fff7, 0x0fff6, 0x07ff8, 0x03ffb, 0x00ffd, - 0x007fd, 0x003fd, 0x001fd, 0x000fd, 0x0003e, 0x0000e, 0x00002, 0x00000, - 0x00006, 0x0001e, 0x000fc, 0x001fc, 0x003fc, 0x007fc, 0x00ffc, 0x01ffc, - 0x03ffa, 0x07ff9, 0x07ffa, 0x0fff8, 0x0fff9, 0x1fff6, 0x1fff7, 0x3fff5, - 0x3fff6, 0x3fff1, 0xffff8, 0x7fff1, 0x7fff2, 0x7fff3, 0xffff9, 0x7fff7, - 0x7fff4, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, 0xfffff, -}; - -static const uint8_t t_huffman_env_bal_3_0dB_bits[25] = { - 13, 13, 13, 13, 13, 13, 13, 12, - 8, 7, 4, 3, 1, 2, 5, 6, - 9, 13, 13, 13, 13, 13, 13, 14, - 14, -}; - -static const uint16_t t_huffman_env_bal_3_0dB_codes[25] = { - 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x0ff8, - 0x00fe, 0x007e, 0x000e, 0x0006, 0x0000, 0x0002, 0x001e, 0x003e, - 0x01fe, 0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, - 0x3fff, -}; - -static const uint8_t f_huffman_env_bal_3_0dB_bits[25] = { - 13, 13, 13, 13, 13, 14, 14, 11, - 8, 7, 4, 2, 1, 3, 5, 6, - 9, 12, 13, 14, 14, 14, 14, 14, - 14, -}; - -static const uint16_t f_huffman_env_bal_3_0dB_codes[25] = { - 0x1ff7, 0x1ff8, 0x1ff9, 0x1ffa, 0x1ffb, 0x3ff8, 0x3ff9, 0x07fc, - 0x00fe, 0x007e, 0x000e, 0x0002, 0x0000, 0x0006, 0x001e, 0x003e, - 0x01fe, 0x0ffa, 0x1ff6, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, - 0x3fff, -}; - -static const uint8_t t_huffman_noise_3_0dB_bits[63] = { - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 11, 8, 6, 4, 3, 1, - 2, 5, 8, 10, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 14, 14, -}; - -static const uint16_t t_huffman_noise_3_0dB_codes[63] = { - 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, - 0x1fd6, 0x1fd7, 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x1fdc, 0x1fdd, - 0x1fde, 0x1fdf, 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, - 0x1fe6, 0x1fe7, 0x07f2, 0x00fd, 0x003e, 0x000e, 0x0006, 0x0000, - 0x0002, 0x001e, 0x00fc, 0x03f8, 0x1fcc, 0x1fe8, 0x1fe9, 0x1fea, - 0x1feb, 0x1fec, 0x1fcd, 0x1fed, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, - 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x1ff9, - 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, 0x3fff, -}; - -static const uint8_t t_huffman_noise_bal_3_0dB_bits[25] = { - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 5, 2, 1, 3, 6, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static const uint8_t t_huffman_noise_bal_3_0dB_codes[25] = { - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, - 0xf4, 0xf5, 0x1c, 0x02, 0x00, 0x06, 0x3a, 0xf6, - 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, - 0xff, -}; - static const int8_t sbr_offset[6][16] = { {-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}, // fs_sbr = 16000 Hz {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13}, // fs_sbr = 22050 Hz From patchwork Tue Sep 26 22:17:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43959 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211257pzh; Tue, 26 Sep 2023 15:23:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHGul/vxHQbzSek8n6fG8+OC+vuSZ5wasprc0tsSLHFmtMtookzEjR276d0rqGgwcj8PqyA X-Received: by 2002:a05:6402:b1b:b0:522:3d36:ff27 with SMTP id bm27-20020a0564020b1b00b005223d36ff27mr280793edb.31.1695767005655; Tue, 26 Sep 2023 15:23:25 -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 q5-20020aa7d445000000b0052c0eaa233asi12231316edr.597.2023.09.26.15.23.25; Tue, 26 Sep 2023 15:23:25 -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="W1IFFnW/"; 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 02CCA68CAB9; Wed, 27 Sep 2023 01:21:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2075.outbound.protection.outlook.com [40.92.64.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D3E968CB18 for ; Wed, 27 Sep 2023 01:21:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KHPV6BFwbXsTwsK6GL+XAaCImy8jx6KSSHKybDh0Fw4didI35hvIGKpYl53QRKbfFvVYhutCz4H3x4YGUBe/VzHsK7O7QjsXH038ZsvHwBZ1k0Xw5iyGNz5hLGUY0FKI8Gx/z6Qj3x4Rtm7q6109j7uZT1kB7Om0XTB9efb8WJvziaDJ9xaN8OdHwXT9LYgWAENNx+yyXpWp4xQd1RObDs9kzygFcMcSNqziG3Dl70MW0s8KZ8Pv6aPRD8rN9jxj+n+LXlQX9yoXch/ONgTu+J89QtRQ4F03GiPSvCmd8Q7uqI7jUW/uBzW7AMLnDQi4dirXI7femPsrI+neSNyLBw== 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=P+yQxYkx3CeHIR+mDvkFaaRLx5lQ7j3qM1yYINPRBWc=; b=oF1vL7+5XG4u9UTAZ8xgiOlSa5WDIrUYIiI1pkH7CeZTbK8V5RlibCrJwc5Yt4wMF08lhuIVyimiSutO1B2kA6gQ2+XjBHXEjixp2JTOvhP4uD8z2VzKjpQqtGQ0dhesx0MxyvuiX7J3r2dvwuGLW6XEgaaH6nnh6EvqeEHoxwRW8KvqJxOQ22ahqvlDyL/npKraNVk7xJzbdlV2czFHMw5aqS/8lNg1QfrxygXxL9XDc/rSr1Sh1+mqYGrnmMB9JUS3w7LjKxG/mZPF3rFVP1lt/fbmGS8subLWkALqP+bqyxnbsurZZrcjAEMrlRPJmhhtvN/E+wuRcfAQcaS45A== 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=P+yQxYkx3CeHIR+mDvkFaaRLx5lQ7j3qM1yYINPRBWc=; b=W1IFFnW/XtINY+zZWcewUJtvFEfm1qnUvx0VjZp3oGF4JNyjLUhop6rwh0jdvCsbHTtQG0vs59CUDLjcjnUUTnt+Vry71ChGAyf2c0sWiMe9wfR8kOWVr7j2afzAZbRbSZs9kIpQFN27yQDoF+JDxDOFTctLw/+6iKSUjCq3AvU/AAELoDEfb8AAivuXvzQu9c+CcKnvMFZY1brMQ8TylhvqydmwH+Vz0tdPFmQ2+RdkQVHZO3vzjUWO+wtqLZRY7+G6oCl2WvbE0FrQLtxynC2Y9oNrUx+wPc+izqPJS4tMsdpYLpz5EwdV7Youk5Sx8tyUBWZUDy4zTynv27qrMw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:21:44 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:21:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:19 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [YiuzjU326y96G3ftqvgXsf0GuEhSMWWL] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-47-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 0442d6e2-e88f-4392-e1bd-08dbbedef6e6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mkeyRu7GskHRDmy4v+0X3mBoW1o+JScm+DaqC50LYofvJC7w7gPHrtXz3wEXOnbXPbcgbFC5x7d95NqY0n84G1qIxCMtUqloAPPGGBhkudF2CUySunXHCgqrqbg6nM7mkf6bzGcFrXhMX2Scga2D4oBll+it05mVXQOOtdJw1GHyrvWvQ1dsDQov0CFrZFsf8dpKgELclht5VItVYxVdKD4XodQMNPpN1jNwLl8Rgc//IFFskZExhxCEdDtgKi2eF9cR012O8PLX6l/r8UIMADxKqxhNzFLhiu6O/YnALfjvbOForrcQ0GhNo+iPg+T/Ak3C7amEZ14q7ko846goanfabWZwLOFGBWasBxliA8TGwabu6X2EzjDbcI2cxoo+bpep711Zstf9lY5YCTjsw+olbE/WZe7dKGRnEKbYSimTLgTyZvQtB9ZQWTyO7d/LZIRpR2L0lqvhAbBgc8ytcpkm6W68p5sRjOD1QqpxnluiW+6/D2U74ieEghDguEcz+XJGTkDImh/F01jpYMpG4T5N0Gw/4zYkJAdkroV0P7MqEN0ZivgT1BaDL/1sJfA1wSUCX6o5el+SUmP3++4kcGfEP0DdTm4aMJy9GA2nvMPtECrldgniJ1bc2sL+o0dL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yCR892Xt7A4Q/4ihX/mwT4UihtX/TyG5h72bWArtUYdc0euR0h36bEp5T5ljYv3ZoF/GI5LUDDoV1Tpquq2pOVvoyhcFhKwZTRvT7RfgQAAUHv/lYwzrN6dcHN85RXoLqOs9SYAxEfIt5oMccvrlfBIOytFCEmmqiIqbThtHREG7Ob4g+zvQMiOhyDxNWwsKxaVX+lZMySj0ZYMim/jt/b5gjX2bxKbCfQE3MffEfb+6wlrTQ0Stccc0iTtK4qsTr8RSWT15qd+VfrNseDtKwpcCj2WldyUqjBsWakIwlsejQwv/wfolv4xa/5uRIJzzrulfN293TDGBoVGShxFgC/26RfvwBYKNZerrlkgmrEXuefi1MrU9ckyBU4V6VS6qaaRqB5UiFTZltqH57EmV6AwgbdTecCYDbPIsPqdIYcSU8C4bVWPxg/G6OXW/E8rpnAj9ccyopHcYdy4OEoGyZc/VCJmEvv8S1OGrMFl2OuJQUh52rGkVSXalbI1StDbFUwNNOvlD8wsk7m8Qza9Hh5HNcjSUT2NkhLUkpWOIv7H2nvtdBrspXpA8jRGdAWFDgAuU5Sup0aZlYVqeYHnU/+I8br8zwoJs5YQcE7zwM5Hwo3kl0NtXi0nV/61tbVGQ1DvZadKq6nZkbxzMhxy+iq1ue/2wqeyeJsb5l6sL27+2TUjpChQ25YQza+X1DvmvSYHqYf7cJew6R6iHuonogeGPyzYR70jBsnj1Mi5TjMZshcesCKHAAqiaRwG/zSYTG16GfnBiQxPH9ilBnDSF+cTas2a3cpwEi5YUGpq/SMq77AmEmTvECQOHYVGX3kdD4yaPSkrs9OtrgnBMJfN4d8vkqC7nLfxUcRPyDdrr28+k/lh4Lhz5uPGxpoS5x6d+tDDvmB3x7r2TUM4qF7AudADc6FKGgQZR3f/2Lbesh0MPvqoPXzSXuqmZf2+QwHIJPUd9VxaBnU1mNorvQ3jHTdt8vDHGyxPXcsktMCdVPB/N6C4arpwqGCPm+c/TQ2HePPafCaOwRGTscjMWsVv6GC2nJXq4wfyEwz4yVts1EVzkhcp0dcp4tMxiIsufheX3Cf9vjrDvBObghHJ0kzRG5bHXZIrsOkok7p1JSIuNsnh9bmVKiaJQFjdz9aZv/maMvQY7gBaWKzb4uWmLWWwzMhNXyHU07Q4UqH7aHTpr1YDPsSA/1kpDPPsLjmlK5J9+WyO4/JUSUnX90zSzajEOCjUtDHt8q6c9Up0iF3wdWi2aouz3BGtnKzEYuDUk2C4r X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0442d6e2-e88f-4392-e1bd-08dbbedef6e6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:21:43.9924 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 48/61] avcodec/aacdec_common: Avoid superfluous VLC structures for SBR VLCs 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: tkW6PEHwnTSd For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 35 +++++++++++++++++++---------------- libavcodec/aacdectab.h | 2 +- libavcodec/aacsbr_template.c | 24 ++++++++++++------------ 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index cbd2a9ccd2..295ea87dce 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -352,15 +352,16 @@ static const uint8_t t_huffman_noise_bal_3_0dB_codes[25] = { 0xff, }; -VLC ff_aac_sbr_vlc[10]; +const VLCElem *ff_aac_sbr_vlc[10]; static av_cold void aacdec_common_init(void) { -#define SBR_INIT_VLC_STATIC(num, size) \ - VLC_INIT_STATIC(&ff_aac_sbr_vlc[num], 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ +#define SBR_INIT_VLC_STATIC(num) \ + ff_aac_sbr_vlc[num] = \ + ff_vlc_init_tables_sparse(&state, 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ sbr_tmp[num].sbr_bits , 1, 1, \ sbr_tmp[num].sbr_codes, sbr_tmp[num].elem_size, sbr_tmp[num].elem_size, \ - size) + NULL, 0, 0, 0) #define SBR_VLC_ROW(name) \ { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } static const struct { @@ -379,8 +380,10 @@ static av_cold void aacdec_common_init(void) SBR_VLC_ROW(t_huffman_noise_bal_3_0dB), }; - static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + - 294 + 306 + 268 + 510 + 366 + 462]; + static VLCElem vlc_buf[(304 + 270 + 550 + 300 + 328 + + 294 + 306 + 268 + 510 + 366 + 462) + + (1098 + 1092 + 768 + 1026 + 1058 + + 1052 + 544 + 544 + 592 + 512)]; VLCInitState state = VLC_INIT_STATE(vlc_buf); for (unsigned i = 0; i < 11; i++) { @@ -403,16 +406,16 @@ static av_cold void aacdec_common_init(void) sizeof(ff_aac_scalefactor_code[0]), 0); // SBR VLC table initialization - SBR_INIT_VLC_STATIC(0, 1098); - SBR_INIT_VLC_STATIC(1, 1092); - SBR_INIT_VLC_STATIC(2, 768); - SBR_INIT_VLC_STATIC(3, 1026); - SBR_INIT_VLC_STATIC(4, 1058); - SBR_INIT_VLC_STATIC(5, 1052); - SBR_INIT_VLC_STATIC(6, 544); - SBR_INIT_VLC_STATIC(7, 544); - SBR_INIT_VLC_STATIC(8, 592); - SBR_INIT_VLC_STATIC(9, 512); + SBR_INIT_VLC_STATIC(0); + SBR_INIT_VLC_STATIC(1); + SBR_INIT_VLC_STATIC(2); + SBR_INIT_VLC_STATIC(3); + SBR_INIT_VLC_STATIC(4); + SBR_INIT_VLC_STATIC(5); + SBR_INIT_VLC_STATIC(6); + SBR_INIT_VLC_STATIC(7); + SBR_INIT_VLC_STATIC(8); + SBR_INIT_VLC_STATIC(9); } av_cold void ff_aacdec_common_init_once(void) diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index 02e0d8a48e..7079b061fc 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -38,7 +38,7 @@ FF_VISIBILITY_PUSH_HIDDEN void ff_aacdec_common_init_once(void); -extern VLC ff_aac_sbr_vlc[10]; +extern const VLCElem *ff_aac_sbr_vlc[10]; extern VLCElem ff_vlc_scalefactors[]; extern const VLCElem *ff_vlc_spectral[11]; diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index 26be2739d3..a82be8a8d5 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -811,29 +811,29 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi if (sbr->bs_coupling && ch) { if (ch_data->bs_amp_res) { bits = 5; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { bits = 6; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_1_5DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_1_5DB]; } } else { if (ch_data->bs_amp_res) { bits = 6; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } else { bits = 7; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_1_5DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_1_5DB]; } } @@ -896,14 +896,14 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; if (sbr->bs_coupling && ch) { - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_BAL_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } From patchwork Tue Sep 26 22:17:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43960 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211314pzh; Tue, 26 Sep 2023 15:23:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEOkv+n+czSl1+l6SKV4Q40WVT6gPt90GgQD7CXPGjsJIDHmqeu8FCdPsM3Akc8teLIz03+ X-Received: by 2002:a05:6512:3ba2:b0:503:655:12e0 with SMTP id g34-20020a0565123ba200b00503065512e0mr108259lfv.50.1695767014490; Tue, 26 Sep 2023 15:23:34 -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 n22-20020aa7db56000000b005330b2d190csi11624882edt.224.2023.09.26.15.23.34; Tue, 26 Sep 2023 15:23:34 -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=sA1ctmIW; 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 EF2DD68CB94; Wed, 27 Sep 2023 01:22:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2061.outbound.protection.outlook.com [40.92.64.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ABE6668CB15 for ; Wed, 27 Sep 2023 01:21:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ovf8Oun2VhEOio1V9ixpxHnR+UEwGxSglGeLbqeBfMY8I789dCa+HVDnfZW52Hr9CbFjTlj5te8tLfFXBDeF9D6eHabFsgn802ptyJAmCI1FIi6xnf2ylM5k4e3RWOpj6Awo6eF3y7r7Qu0HXxHwrwDKdZRFunPSe9boy4VpSTwFPV/B4GK3y282s0J63jaxx+r6f0horIqzQ6nJPOi6IRkdmeHgaa6CHW5YCYqkQuWFvuz77W3ywGzfH9/YlzS+aglfRoKiZGNV3go7X3PHQzGuWFmtEpgkCrxq+3v2seMtNI9lPpcZecXLyvBCknjlqj7RBQ8X/9vafQPT0gvi8g== 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=jHlwGjjbXq/ReFVaAEzRd27udSVm6Of+fTTcZLcP/ao=; b=lLGN3G6kNKWDrvoYTySwnJyH7lJYZNq/qhl0LjLjqSMweQu2WjmpH8oGFxeOQBwI8aTjUEh+WFdGaj3sJtEpGEselw0CdZSg9Ze/Rn2buFTgeGCSm8kd9kmrjr80thdfambVOmuHTr1Y8gN+FvZWKwu172NcfyZtf+WBMc7wd61RUdFIL0fWbJfhCoCqgLtWDFYyRdPXwJ/WpPR2TqtxdCnGH9PnPRsqS6PRDL+5AYqjR4eI7MrSMsisFvTrDK69XD7WtQO2+nDkRHKacB6n8gltTdT+M3DsV6Tw/c4SjXFZmsTlAnEuxhLC4mAfpZFXS71jIwtC95jf5IDppaXrXg== 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=jHlwGjjbXq/ReFVaAEzRd27udSVm6Of+fTTcZLcP/ao=; b=sA1ctmIWeiu1ULb73eIL1aawaV9gmzZbbxTF1cPwmCi875IeabQU0SKG8pN5AuQxyzj9hjWV18Og2eJTfx/SBFyIlR87mDqQGQMbFQnQW2iLYVYvHYnW76cHYrXyk1OBWGqH7LJGbJbaZX8YufzGWysBGqth8tVzes7PLAE2QZElFKzXmTiacdL3DSop2WAeOvQxhjIEyMpiQ9igZ3TPI14qLlnE7uCbuB3GISzfXedf17iXb54alBsWxhT0Yw0WsXsBDwOCBrV1D5SPXkD8bdL9HqkTZy4Lxh5JyvxtJVgGMGu3IrQ1AMTgZogCck4EXJvVx7GHqAol/FYt5KW4Lw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:21:53 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:21:53 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:20 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [cc9f7AvJKUiadz+I8m0GIkdo1zOyw30+] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-48-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ecdc736-d515-44a8-8eb4-08dbbedefc46 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CU6+ygaL3k5cVia6RGJ23YEvvMvG0eAdxPouDOheJGQt03ZrQAZCn/TOorNve/QN/J2yKyYm7Sb+LjG7j8BoSrZDvS9TVtRkl40n39OMXcm4RrOItmke0ZFyH08qWlnY1D/UXXT/HhgUDf0t2UR50qtCMQxVDULUib7eAI1NhybGV0pdhcsTGzibR08eWxk1HIie1G/8PfFzDmCRIGiZKYijfDLy+0jJ2zUJtfwhXg7doYxiE9SRcD5envUBHjqwu4ouCx5UtOJv54lYBbxurjlldXUT41HPY1xloHK8bAw3JVTZv+n9zJFr2wew+QTDHLtJxTQ61jfINk6rIKnfrOmjODWuTLorBbX/lnRQMaNrtsmoPHVzjw6inf2yNIOak3tj650iOa5zhHnHjka4J/RHQhgYhyhHXteZKUvEy+yirv6KXsoP3TBc1/4g1Nmq2XV59vcqGD+6lv4drbT9MPkZiw3ABsFaH4Z+ULiptsXEkK62Gdfb+qxMILBRupMm+Echi7ig8zgJU5ksV4q3XRcObqNX0/T6AC4AFdoTgy1QE8ccfpOFgTIH4usi8KY+6Q+W7LosvkrHFWCGmgKUuh/G6LcmtIfw6YvPn80nLmxfzNdsCI1LMkipiw4WPthr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w1AyG9Pa3jlis7+YAtNKAhLYU8VaLnYN2PuEvHvPfTqrddB74bvfK0Btw0CmlzzU5DmNvy6pIJOESCIzjRlLkbM7Jvez4BzGgolpI4vL7RwyG9GJjZWXJoTy6pZ45ALdnUJvZs1hFjdRsAbMkHfbYvqFWEFDrSQbeVZ0eKrAaEUM6hvMkAiZRmnfo2G83bfL0XV4NvcTu/QGahS5pdPjJatSmPcs/14XyWgvt3Iq+qdiPXg6V1P9P8eef9OsU6SbqzgYn1PPyWiTvDOkiIdtA2p5+evPfBh9QileSpvgOwJxKrPyAcxYkRDNYtv9fE90r761LNyb3pr41xN8spz98+39NfbeKn1N+iavSaq6ScyT4SRM2CpWeLpbRv30LAEqoUVXKCDYjx5cTozdqh1Thv59T/L/CyD4c5d3HnE4tneXIDl5hiW6uCnB3GfQd0npr+o2OPhAPbGrhEk53koW3OEu6qWATZQenDIJY8q+ldtjlmXTMj28HHek/1jcY8zJ5l9Vfre8n1utw3LtdvJhP0rbZj9HAojxll+P5QqmAp7qxph2Sl1efpXcbBAdT6U2ID2v3gF1rVQmY8vliwavmtyW0qpIlh+cNZb6U9TbWuY4QNjOTgk7ctSh9GhvQvPO6mfFatSO9+/lzn1dBzuaU+2GvdHdD9zGOqPgkR+3DOwpl27/bJJTrQVCDOIpzGxGH805GPl/WlG/NFh+4rMl2ftfGTnBCYFPpMS3scC1YaIf/koLPcpIKGxpNlKqDQUEfR8iMFP1FHyyS2ieppXV/CyrT6NdBtmWwALQO8uU4zWQ1S13LMT5KRNK80g3/xAtunHNTY/TBNWesCz9gaN+jLlxIKfApWCItMcs2vH/1jBDmac9TkaDIfLwiYutiQfglm1wAqdY5xNXRU1GAow1NAFaOkmthKmrAP1HWlmxIYOlH6+0WUfYLCLDLdFdFlCU3PnbmCbdW+pevXrkFL/Pn/LsbM24yd9rkkgn8siUoboBd6qB+T1mrh1x2WQMPgtlJDexPFfuUOH21Xbk1st1kwYHHxlHiuF+QT38rFHptd1JBfBD3UJxcRepJsAP3K07XzAZUPy31K3IVU66QM0PdWETujUUrvv5GJiVhNASyFZ/BDALNOpp379wW4DXiI8MXhj6kVy9vz+sIxtuZerh6/ri4XkLZI3DMMiPmqMzDT4nEmhGcrjWvEYojfh+CO4UOtOwBMyoNEu1F9AOrmtNrz8wt53MjalIVjE65xfLv6X3EmqGkCQQAMlaIJWJJnLW X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ecdc736-d515-44a8-8eb4-08dbbedefc46 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:21:53.0764 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 49/61] avcodec/aacdec_common: Switch to ff_vlc_init_tables_from_lengths() 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: oQ86FCnid3rr It allows to replace code tables of type uint32_t or uint16_t by symbols of type uint8_t. It is also faster. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 377 +++++++++++++++---------------------- 1 file changed, 154 insertions(+), 223 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index 295ea87dce..d03fbdbaec 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -128,245 +128,179 @@ const VLCElem *ff_vlc_spectral[11]; /// Huffman tables for SBR -static const uint8_t t_huffman_env_1_5dB_bits[121] = { - 18, 18, 18, 18, 18, 18, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 17, 18, 16, 17, 18, 17, - 16, 16, 16, 16, 15, 14, 14, 13, - 13, 12, 11, 10, 9, 8, 7, 6, - 5, 4, 3, 2, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 12, 13, 14, - 14, 15, 16, 17, 16, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, + /* t_huffman_env_1_5dB - 121 entries */ +static const uint8_t t_huffman_env_1_5dB_tab[][2] = { + { 60, 2 }, { 59, 2 }, { 61, 3 }, { 58, 3 }, { 62, 4 }, + { 57, 4 }, { 63, 5 }, { 56, 5 }, { 64, 6 }, { 55, 6 }, + { 65, 7 }, { 54, 7 }, { 66, 8 }, { 53, 8 }, { 67, 9 }, + { 52, 9 }, { 51, 10 }, { 68, 10 }, { 50, 11 }, { 69, 12 }, + { 49, 12 }, { 70, 13 }, { 48, 13 }, { 47, 13 }, { 71, 14 }, + { 46, 14 }, { 72, 14 }, { 45, 14 }, { 44, 15 }, { 73, 15 }, + { 41, 16 }, { 42, 16 }, { 43, 16 }, { 74, 16 }, { 36, 16 }, + { 40, 16 }, { 76, 16 }, { 34, 17 }, { 39, 17 }, { 75, 17 }, + { 37, 17 }, { 35, 18 }, { 38, 18 }, { 0, 18 }, { 1, 18 }, + { 2, 18 }, { 3, 18 }, { 4, 18 }, { 5, 18 }, { 6, 19 }, + { 7, 19 }, { 8, 19 }, { 9, 19 }, { 10, 19 }, { 11, 19 }, + { 12, 19 }, { 13, 19 }, { 14, 19 }, { 15, 19 }, { 16, 19 }, + { 17, 19 }, { 18, 19 }, { 19, 19 }, { 20, 19 }, { 21, 19 }, + { 22, 19 }, { 23, 19 }, { 24, 19 }, { 25, 19 }, { 26, 19 }, + { 27, 19 }, { 28, 19 }, { 29, 19 }, { 30, 19 }, { 31, 19 }, + { 32, 19 }, { 33, 19 }, { 77, 19 }, { 78, 19 }, { 79, 19 }, + { 80, 19 }, { 81, 19 }, { 82, 19 }, { 83, 19 }, { 84, 19 }, + { 85, 19 }, { 86, 19 }, { 87, 19 }, { 88, 19 }, { 89, 19 }, + { 90, 19 }, { 91, 19 }, { 92, 19 }, { 93, 19 }, { 94, 19 }, + { 95, 19 }, { 96, 19 }, { 97, 19 }, { 98, 19 }, { 99, 19 }, + { 100, 19 }, { 101, 19 }, { 102, 19 }, { 103, 19 }, { 104, 19 }, + { 105, 19 }, { 106, 19 }, { 107, 19 }, { 108, 19 }, { 109, 19 }, + { 110, 19 }, { 111, 19 }, { 112, 19 }, { 113, 19 }, { 114, 19 }, + { 115, 19 }, { 116, 19 }, { 117, 19 }, { 118, 19 }, { 119, 19 }, + { 120, 19 }, }; -static const uint32_t t_huffman_env_1_5dB_codes[121] = { - 0x3ffd6, 0x3ffd7, 0x3ffd8, 0x3ffd9, 0x3ffda, 0x3ffdb, 0x7ffb8, 0x7ffb9, - 0x7ffba, 0x7ffbb, 0x7ffbc, 0x7ffbd, 0x7ffbe, 0x7ffbf, 0x7ffc0, 0x7ffc1, - 0x7ffc2, 0x7ffc3, 0x7ffc4, 0x7ffc5, 0x7ffc6, 0x7ffc7, 0x7ffc8, 0x7ffc9, - 0x7ffca, 0x7ffcb, 0x7ffcc, 0x7ffcd, 0x7ffce, 0x7ffcf, 0x7ffd0, 0x7ffd1, - 0x7ffd2, 0x7ffd3, 0x1ffe6, 0x3ffd4, 0x0fff0, 0x1ffe9, 0x3ffd5, 0x1ffe7, - 0x0fff1, 0x0ffec, 0x0ffed, 0x0ffee, 0x07ff4, 0x03ff9, 0x03ff7, 0x01ffa, - 0x01ff9, 0x00ffb, 0x007fc, 0x003fc, 0x001fd, 0x000fd, 0x0007d, 0x0003d, - 0x0001d, 0x0000d, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000c, 0x0001c, - 0x0003c, 0x0007c, 0x000fc, 0x001fc, 0x003fd, 0x00ffa, 0x01ff8, 0x03ff6, - 0x03ff8, 0x07ff5, 0x0ffef, 0x1ffe8, 0x0fff2, 0x7ffd4, 0x7ffd5, 0x7ffd6, - 0x7ffd7, 0x7ffd8, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd, 0x7ffde, - 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffe6, - 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffec, 0x7ffed, 0x7ffee, - 0x7ffef, 0x7fff0, 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, - 0x7fff7, 0x7fff8, 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, - 0x7ffff, + /* f_huffman_env_1_5dB - 121 entries */ +static const uint8_t f_huffman_env_1_5dB_tab[][2] = { + { 60, 2 }, { 59, 2 }, { 61, 3 }, { 58, 3 }, { 57, 4 }, + { 62, 4 }, { 56, 5 }, { 63, 5 }, { 55, 6 }, { 64, 6 }, + { 54, 7 }, { 65, 8 }, { 53, 8 }, { 66, 8 }, { 52, 9 }, + { 67, 9 }, { 51, 9 }, { 68, 10 }, { 50, 10 }, { 69, 11 }, + { 49, 11 }, { 70, 11 }, { 71, 11 }, { 48, 12 }, { 72, 12 }, + { 47, 12 }, { 73, 12 }, { 74, 13 }, { 46, 13 }, { 45, 13 }, + { 75, 13 }, { 76, 14 }, { 77, 14 }, { 44, 14 }, { 43, 15 }, + { 42, 15 }, { 41, 16 }, { 78, 16 }, { 79, 16 }, { 40, 16 }, + { 39, 16 }, { 80, 17 }, { 81, 17 }, { 36, 17 }, { 37, 17 }, + { 38, 17 }, { 34, 17 }, { 32, 18 }, { 82, 18 }, { 83, 18 }, + { 85, 18 }, { 19, 18 }, { 35, 18 }, { 86, 18 }, { 87, 18 }, + { 30, 18 }, { 33, 18 }, { 84, 18 }, { 88, 18 }, { 104, 18 }, + { 9, 19 }, { 14, 19 }, { 16, 19 }, { 17, 19 }, { 23, 19 }, + { 27, 19 }, { 29, 19 }, { 31, 19 }, { 90, 19 }, { 97, 19 }, + { 102, 19 }, { 107, 19 }, { 108, 19 }, { 0, 19 }, { 1, 19 }, + { 2, 20 }, { 3, 20 }, { 4, 20 }, { 5, 20 }, { 6, 20 }, + { 7, 20 }, { 8, 20 }, { 10, 20 }, { 11, 20 }, { 12, 20 }, + { 13, 20 }, { 15, 20 }, { 18, 20 }, { 20, 20 }, { 21, 20 }, + { 22, 20 }, { 24, 20 }, { 25, 20 }, { 26, 20 }, { 28, 20 }, + { 89, 20 }, { 91, 20 }, { 92, 20 }, { 93, 20 }, { 94, 20 }, + { 95, 20 }, { 96, 20 }, { 98, 20 }, { 99, 20 }, { 100, 20 }, + { 101, 20 }, { 103, 20 }, { 105, 20 }, { 106, 20 }, { 109, 20 }, + { 110, 20 }, { 111, 20 }, { 112, 20 }, { 113, 20 }, { 114, 20 }, + { 115, 20 }, { 116, 20 }, { 117, 20 }, { 118, 20 }, { 119, 20 }, + { 120, 20 }, }; -static const uint8_t f_huffman_env_1_5dB_bits[121] = { - 19, 19, 20, 20, 20, 20, 20, 20, - 20, 19, 20, 20, 20, 20, 19, 20, - 19, 19, 20, 18, 20, 20, 20, 19, - 20, 20, 20, 19, 20, 19, 18, 19, - 18, 18, 17, 18, 17, 17, 17, 16, - 16, 16, 15, 15, 14, 13, 13, 12, - 12, 11, 10, 9, 9, 8, 7, 6, - 5, 4, 3, 2, 2, 3, 4, 5, - 6, 8, 8, 9, 10, 11, 11, 11, - 12, 12, 13, 13, 14, 14, 16, 16, - 17, 17, 18, 18, 18, 18, 18, 18, - 18, 20, 19, 20, 20, 20, 20, 20, - 20, 19, 20, 20, 20, 20, 19, 20, - 18, 20, 20, 19, 19, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, - 20, + /* t_huffman_env_bal_1_5dB - 49 entries */ +static const uint8_t t_huffman_env_bal_1_5dB_tab[][2] = { + { 24, 1 }, { 25, 2 }, { 23, 3 }, { 26, 4 }, { 22, 5 }, + { 27, 6 }, { 21, 7 }, { 28, 8 }, { 20, 9 }, { 19, 11 }, + { 29, 11 }, { 18, 12 }, { 30, 12 }, { 31, 15 }, { 17, 16 }, + { 32, 16 }, { 0, 16 }, { 1, 16 }, { 2, 16 }, { 3, 16 }, + { 4, 16 }, { 5, 16 }, { 6, 16 }, { 7, 16 }, { 8, 16 }, + { 9, 16 }, { 10, 16 }, { 11, 16 }, { 12, 16 }, { 13, 16 }, + { 14, 16 }, { 15, 16 }, { 16, 16 }, { 33, 16 }, { 34, 16 }, + { 35, 16 }, { 36, 16 }, { 37, 16 }, { 38, 16 }, { 39, 17 }, + { 40, 17 }, { 41, 17 }, { 42, 17 }, { 43, 17 }, { 44, 17 }, + { 45, 17 }, { 46, 17 }, { 47, 17 }, { 48, 17 }, }; -static const uint32_t f_huffman_env_1_5dB_codes[121] = { - 0x7ffe7, 0x7ffe8, 0xfffd2, 0xfffd3, 0xfffd4, 0xfffd5, 0xfffd6, 0xfffd7, - 0xfffd8, 0x7ffda, 0xfffd9, 0xfffda, 0xfffdb, 0xfffdc, 0x7ffdb, 0xfffdd, - 0x7ffdc, 0x7ffdd, 0xfffde, 0x3ffe4, 0xfffdf, 0xfffe0, 0xfffe1, 0x7ffde, - 0xfffe2, 0xfffe3, 0xfffe4, 0x7ffdf, 0xfffe5, 0x7ffe0, 0x3ffe8, 0x7ffe1, - 0x3ffe0, 0x3ffe9, 0x1ffef, 0x3ffe5, 0x1ffec, 0x1ffed, 0x1ffee, 0x0fff4, - 0x0fff3, 0x0fff0, 0x07ff7, 0x07ff6, 0x03ffa, 0x01ffa, 0x01ff9, 0x00ffa, - 0x00ff8, 0x007f9, 0x003fb, 0x001fc, 0x001fa, 0x000fb, 0x0007c, 0x0003c, - 0x0001c, 0x0000c, 0x00005, 0x00001, 0x00000, 0x00004, 0x0000d, 0x0001d, - 0x0003d, 0x000fa, 0x000fc, 0x001fb, 0x003fa, 0x007f8, 0x007fa, 0x007fb, - 0x00ff9, 0x00ffb, 0x01ff8, 0x01ffb, 0x03ff8, 0x03ff9, 0x0fff1, 0x0fff2, - 0x1ffea, 0x1ffeb, 0x3ffe1, 0x3ffe2, 0x3ffea, 0x3ffe3, 0x3ffe6, 0x3ffe7, - 0x3ffeb, 0xfffe6, 0x7ffe2, 0xfffe7, 0xfffe8, 0xfffe9, 0xfffea, 0xfffeb, - 0xfffec, 0x7ffe3, 0xfffed, 0xfffee, 0xfffef, 0xffff0, 0x7ffe4, 0xffff1, - 0x3ffec, 0xffff2, 0xffff3, 0x7ffe5, 0x7ffe6, 0xffff4, 0xffff5, 0xffff6, - 0xffff7, 0xffff8, 0xffff9, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, - 0xfffff, + /* f_huffman_env_bal_1_5dB - 49 entries */ +static const uint8_t f_huffman_env_bal_1_5dB_tab[][2] = { + { 24, 1 }, { 23, 2 }, { 25, 3 }, { 22, 4 }, { 26, 5 }, + { 27, 6 }, { 21, 7 }, { 20, 8 }, { 28, 9 }, { 19, 11 }, + { 29, 11 }, { 18, 11 }, { 30, 12 }, { 17, 14 }, { 31, 15 }, + { 32, 16 }, { 15, 16 }, { 16, 17 }, { 0, 18 }, { 1, 18 }, + { 2, 18 }, { 3, 18 }, { 4, 18 }, { 5, 18 }, { 6, 18 }, + { 7, 18 }, { 8, 18 }, { 9, 18 }, { 10, 18 }, { 11, 18 }, + { 12, 18 }, { 13, 18 }, { 14, 18 }, { 33, 18 }, { 34, 18 }, + { 35, 18 }, { 36, 18 }, { 37, 18 }, { 38, 18 }, { 39, 18 }, + { 40, 18 }, { 41, 18 }, { 42, 18 }, { 43, 18 }, { 44, 18 }, + { 45, 18 }, { 46, 18 }, { 47, 19 }, { 48, 19 }, }; -static const uint8_t t_huffman_env_bal_1_5dB_bits[49] = { - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 12, 11, 9, 7, 5, 3, - 1, 2, 4, 6, 8, 11, 12, 15, - 16, 16, 16, 16, 16, 16, 16, 17, - 17, 17, 17, 17, 17, 17, 17, 17, - 17, + /* t_huffman_env_3_0dB - 63 entries */ +static const uint8_t t_huffman_env_3_0dB_tab[][2] = { + { 31, 1 }, { 30, 2 }, { 32, 3 }, { 29, 4 }, { 33, 5 }, + { 28, 6 }, { 34, 7 }, { 27, 8 }, { 35, 9 }, { 26, 11 }, + { 36, 11 }, { 25, 12 }, { 24, 13 }, { 37, 13 }, { 23, 14 }, + { 38, 14 }, { 22, 14 }, { 21, 14 }, { 39, 14 }, { 40, 15 }, + { 41, 16 }, { 18, 16 }, { 20, 16 }, { 19, 16 }, { 17, 17 }, + { 42, 17 }, { 43, 18 }, { 0, 18 }, { 1, 18 }, { 2, 19 }, + { 3, 19 }, { 4, 19 }, { 5, 19 }, { 6, 19 }, { 7, 19 }, + { 8, 19 }, { 9, 19 }, { 10, 19 }, { 11, 19 }, { 12, 19 }, + { 13, 19 }, { 14, 19 }, { 15, 19 }, { 16, 19 }, { 44, 19 }, + { 45, 19 }, { 46, 19 }, { 47, 19 }, { 48, 19 }, { 49, 19 }, + { 50, 19 }, { 51, 19 }, { 52, 19 }, { 53, 19 }, { 54, 19 }, + { 55, 19 }, { 56, 19 }, { 57, 19 }, { 58, 19 }, { 59, 19 }, + { 60, 19 }, { 61, 19 }, { 62, 19 }, }; -static const uint32_t t_huffman_env_bal_1_5dB_codes[49] = { - 0x0ffe4, 0x0ffe5, 0x0ffe6, 0x0ffe7, 0x0ffe8, 0x0ffe9, 0x0ffea, 0x0ffeb, - 0x0ffec, 0x0ffed, 0x0ffee, 0x0ffef, 0x0fff0, 0x0fff1, 0x0fff2, 0x0fff3, - 0x0fff4, 0x0ffe2, 0x00ffc, 0x007fc, 0x001fe, 0x0007e, 0x0001e, 0x00006, - 0x00000, 0x00002, 0x0000e, 0x0003e, 0x000fe, 0x007fd, 0x00ffd, 0x07ff0, - 0x0ffe3, 0x0fff5, 0x0fff6, 0x0fff7, 0x0fff8, 0x0fff9, 0x0fffa, 0x1fff6, - 0x1fff7, 0x1fff8, 0x1fff9, 0x1fffa, 0x1fffb, 0x1fffc, 0x1fffd, 0x1fffe, - 0x1ffff, + /* f_huffman_env_3_0dB - 63 entries */ +static const uint8_t f_huffman_env_3_0dB_tab[][2] = { + { 31, 1 }, { 30, 2 }, { 32, 3 }, { 29, 4 }, { 33, 5 }, + { 28, 6 }, { 34, 8 }, { 27, 8 }, { 35, 9 }, { 26, 9 }, + { 36, 10 }, { 25, 10 }, { 37, 11 }, { 24, 11 }, { 38, 12 }, + { 23, 12 }, { 39, 13 }, { 40, 14 }, { 22, 14 }, { 21, 15 }, + { 41, 15 }, { 42, 15 }, { 20, 16 }, { 19, 16 }, { 43, 16 }, + { 44, 16 }, { 18, 17 }, { 16, 17 }, { 45, 17 }, { 46, 17 }, + { 17, 18 }, { 49, 18 }, { 13, 18 }, { 7, 18 }, { 12, 18 }, + { 47, 18 }, { 48, 18 }, { 9, 19 }, { 10, 19 }, { 15, 19 }, + { 51, 19 }, { 52, 19 }, { 53, 19 }, { 56, 19 }, { 8, 19 }, + { 11, 19 }, { 55, 19 }, { 0, 20 }, { 1, 20 }, { 2, 20 }, + { 3, 20 }, { 4, 20 }, { 5, 20 }, { 6, 20 }, { 14, 20 }, + { 50, 20 }, { 54, 20 }, { 57, 20 }, { 58, 20 }, { 59, 20 }, + { 60, 20 }, { 61, 20 }, { 62, 20 }, }; -static const uint8_t f_huffman_env_bal_1_5dB_bits[49] = { - 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 16, - 17, 14, 11, 11, 8, 7, 4, 2, - 1, 3, 5, 6, 9, 11, 12, 15, - 16, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 19, - 19, + /* t_huffman_env_bal_3_0dB - 25 entries */ +static const uint8_t t_huffman_env_bal_3_0dB_tab[][2] = { + { 12, 1 }, { 13, 2 }, { 11, 3 }, { 10, 4 }, { 14, 5 }, + { 15, 6 }, { 9, 7 }, { 8, 8 }, { 16, 9 }, { 7, 12 }, + { 0, 13 }, { 1, 13 }, { 2, 13 }, { 3, 13 }, { 4, 13 }, + { 5, 13 }, { 6, 13 }, { 17, 13 }, { 18, 13 }, { 19, 13 }, + { 20, 13 }, { 21, 13 }, { 22, 13 }, { 23, 14 }, { 24, 14 }, }; -static const uint32_t f_huffman_env_bal_1_5dB_codes[49] = { - 0x3ffe2, 0x3ffe3, 0x3ffe4, 0x3ffe5, 0x3ffe6, 0x3ffe7, 0x3ffe8, 0x3ffe9, - 0x3ffea, 0x3ffeb, 0x3ffec, 0x3ffed, 0x3ffee, 0x3ffef, 0x3fff0, 0x0fff7, - 0x1fff0, 0x03ffc, 0x007fe, 0x007fc, 0x000fe, 0x0007e, 0x0000e, 0x00002, - 0x00000, 0x00006, 0x0001e, 0x0003e, 0x001fe, 0x007fd, 0x00ffe, 0x07ffa, - 0x0fff6, 0x3fff1, 0x3fff2, 0x3fff3, 0x3fff4, 0x3fff5, 0x3fff6, 0x3fff7, - 0x3fff8, 0x3fff9, 0x3fffa, 0x3fffb, 0x3fffc, 0x3fffd, 0x3fffe, 0x7fffe, - 0x7ffff, + /* f_huffman_env_bal_3_0dB - 25 entries */ +static const uint8_t f_huffman_env_bal_3_0dB_tab[][2] = { + { 12, 1 }, { 11, 2 }, { 13, 3 }, { 10, 4 }, { 14, 5 }, + { 15, 6 }, { 9, 7 }, { 8, 8 }, { 16, 9 }, { 7, 11 }, + { 17, 12 }, { 18, 13 }, { 0, 13 }, { 1, 13 }, { 2, 13 }, + { 3, 13 }, { 4, 13 }, { 5, 14 }, { 6, 14 }, { 19, 14 }, + { 20, 14 }, { 21, 14 }, { 22, 14 }, { 23, 14 }, { 24, 14 }, }; -static const uint8_t t_huffman_env_3_0dB_bits[63] = { - 18, 18, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 17, 16, 16, 16, 14, 14, 14, - 13, 12, 11, 8, 6, 4, 2, 1, - 3, 5, 7, 9, 11, 13, 14, 14, - 15, 16, 17, 18, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, + /* t_huffman_noise_3_0dB - 63 entries */ +static const uint8_t t_huffman_noise_3_0dB_tab[][2] = { + { 31, 1 }, { 32, 2 }, { 30, 3 }, { 29, 4 }, { 33, 5 }, + { 28, 6 }, { 34, 8 }, { 27, 8 }, { 35, 10 }, { 26, 11 }, + { 36, 13 }, { 42, 13 }, { 0, 13 }, { 1, 13 }, { 2, 13 }, + { 3, 13 }, { 4, 13 }, { 5, 13 }, { 6, 13 }, { 7, 13 }, + { 8, 13 }, { 9, 13 }, { 10, 13 }, { 11, 13 }, { 12, 13 }, + { 13, 13 }, { 14, 13 }, { 15, 13 }, { 16, 13 }, { 17, 13 }, + { 18, 13 }, { 19, 13 }, { 20, 13 }, { 21, 13 }, { 22, 13 }, + { 23, 13 }, { 24, 13 }, { 25, 13 }, { 37, 13 }, { 38, 13 }, + { 39, 13 }, { 40, 13 }, { 41, 13 }, { 43, 13 }, { 44, 13 }, + { 45, 13 }, { 46, 13 }, { 47, 13 }, { 48, 13 }, { 49, 13 }, + { 50, 13 }, { 51, 13 }, { 52, 13 }, { 53, 13 }, { 54, 13 }, + { 55, 13 }, { 56, 13 }, { 57, 13 }, { 58, 13 }, { 59, 13 }, + { 60, 13 }, { 61, 14 }, { 62, 14 }, }; -static const uint32_t t_huffman_env_3_0dB_codes[63] = { - 0x3ffed, 0x3ffee, 0x7ffde, 0x7ffdf, 0x7ffe0, 0x7ffe1, 0x7ffe2, 0x7ffe3, - 0x7ffe4, 0x7ffe5, 0x7ffe6, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, - 0x7ffec, 0x1fff4, 0x0fff7, 0x0fff9, 0x0fff8, 0x03ffb, 0x03ffa, 0x03ff8, - 0x01ffa, 0x00ffc, 0x007fc, 0x000fe, 0x0003e, 0x0000e, 0x00002, 0x00000, - 0x00006, 0x0001e, 0x0007e, 0x001fe, 0x007fd, 0x01ffb, 0x03ff9, 0x03ffc, - 0x07ffa, 0x0fff6, 0x1fff5, 0x3ffec, 0x7ffed, 0x7ffee, 0x7ffef, 0x7fff0, - 0x7fff1, 0x7fff2, 0x7fff3, 0x7fff4, 0x7fff5, 0x7fff6, 0x7fff7, 0x7fff8, - 0x7fff9, 0x7fffa, 0x7fffb, 0x7fffc, 0x7fffd, 0x7fffe, 0x7ffff, -}; - -static const uint8_t f_huffman_env_3_0dB_bits[63] = { - 20, 20, 20, 20, 20, 20, 20, 18, - 19, 19, 19, 19, 18, 18, 20, 19, - 17, 18, 17, 16, 16, 15, 14, 12, - 11, 10, 9, 8, 6, 4, 2, 1, - 3, 5, 8, 9, 10, 11, 12, 13, - 14, 15, 15, 16, 16, 17, 17, 18, - 18, 18, 20, 19, 19, 19, 20, 19, - 19, 20, 20, 20, 20, 20, 20, -}; - -static const uint32_t f_huffman_env_3_0dB_codes[63] = { - 0xffff0, 0xffff1, 0xffff2, 0xffff3, 0xffff4, 0xffff5, 0xffff6, 0x3fff3, - 0x7fff5, 0x7ffee, 0x7ffef, 0x7fff6, 0x3fff4, 0x3fff2, 0xffff7, 0x7fff0, - 0x1fff5, 0x3fff0, 0x1fff4, 0x0fff7, 0x0fff6, 0x07ff8, 0x03ffb, 0x00ffd, - 0x007fd, 0x003fd, 0x001fd, 0x000fd, 0x0003e, 0x0000e, 0x00002, 0x00000, - 0x00006, 0x0001e, 0x000fc, 0x001fc, 0x003fc, 0x007fc, 0x00ffc, 0x01ffc, - 0x03ffa, 0x07ff9, 0x07ffa, 0x0fff8, 0x0fff9, 0x1fff6, 0x1fff7, 0x3fff5, - 0x3fff6, 0x3fff1, 0xffff8, 0x7fff1, 0x7fff2, 0x7fff3, 0xffff9, 0x7fff7, - 0x7fff4, 0xffffa, 0xffffb, 0xffffc, 0xffffd, 0xffffe, 0xfffff, -}; - -static const uint8_t t_huffman_env_bal_3_0dB_bits[25] = { - 13, 13, 13, 13, 13, 13, 13, 12, - 8, 7, 4, 3, 1, 2, 5, 6, - 9, 13, 13, 13, 13, 13, 13, 14, - 14, -}; - -static const uint16_t t_huffman_env_bal_3_0dB_codes[25] = { - 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x0ff8, - 0x00fe, 0x007e, 0x000e, 0x0006, 0x0000, 0x0002, 0x001e, 0x003e, - 0x01fe, 0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, - 0x3fff, -}; - -static const uint8_t f_huffman_env_bal_3_0dB_bits[25] = { - 13, 13, 13, 13, 13, 14, 14, 11, - 8, 7, 4, 2, 1, 3, 5, 6, - 9, 12, 13, 14, 14, 14, 14, 14, - 14, -}; - -static const uint16_t f_huffman_env_bal_3_0dB_codes[25] = { - 0x1ff7, 0x1ff8, 0x1ff9, 0x1ffa, 0x1ffb, 0x3ff8, 0x3ff9, 0x07fc, - 0x00fe, 0x007e, 0x000e, 0x0002, 0x0000, 0x0006, 0x001e, 0x003e, - 0x01fe, 0x0ffa, 0x1ff6, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, - 0x3fff, -}; - -static const uint8_t t_huffman_noise_3_0dB_bits[63] = { - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 11, 8, 6, 4, 3, 1, - 2, 5, 8, 10, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 14, 14, -}; - -static const uint16_t t_huffman_noise_3_0dB_codes[63] = { - 0x1fce, 0x1fcf, 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x1fd4, 0x1fd5, - 0x1fd6, 0x1fd7, 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x1fdc, 0x1fdd, - 0x1fde, 0x1fdf, 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, - 0x1fe6, 0x1fe7, 0x07f2, 0x00fd, 0x003e, 0x000e, 0x0006, 0x0000, - 0x0002, 0x001e, 0x00fc, 0x03f8, 0x1fcc, 0x1fe8, 0x1fe9, 0x1fea, - 0x1feb, 0x1fec, 0x1fcd, 0x1fed, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, - 0x1ff2, 0x1ff3, 0x1ff4, 0x1ff5, 0x1ff6, 0x1ff7, 0x1ff8, 0x1ff9, - 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x3ffe, 0x3fff, -}; - -static const uint8_t t_huffman_noise_bal_3_0dB_bits[25] = { - 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 5, 2, 1, 3, 6, 8, - 8, 8, 8, 8, 8, 8, 8, 8, - 8, -}; - -static const uint8_t t_huffman_noise_bal_3_0dB_codes[25] = { - 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, - 0xf4, 0xf5, 0x1c, 0x02, 0x00, 0x06, 0x3a, 0xf6, - 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, - 0xff, + /* t_huffman_noise_bal_3_0dB - 25 entries */ +static const uint8_t t_huffman_noise_bal_3_0dB_tab[][2] = { + { 12, 1 }, { 11, 2 }, { 13, 3 }, { 10, 5 }, { 14, 6 }, + { 0, 8 }, { 1, 8 }, { 2, 8 }, { 3, 8 }, { 4, 8 }, + { 5, 8 }, { 6, 8 }, { 7, 8 }, { 8, 8 }, { 9, 8 }, + { 15, 8 }, { 16, 8 }, { 17, 8 }, { 18, 8 }, { 19, 8 }, + { 20, 8 }, { 21, 8 }, { 22, 8 }, { 23, 8 }, { 24, 8 }, }; const VLCElem *ff_aac_sbr_vlc[10]; static av_cold void aacdec_common_init(void) { -#define SBR_INIT_VLC_STATIC(num) \ - ff_aac_sbr_vlc[num] = \ - ff_vlc_init_tables_sparse(&state, 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ - sbr_tmp[num].sbr_bits , 1, 1, \ - sbr_tmp[num].sbr_codes, sbr_tmp[num].elem_size, sbr_tmp[num].elem_size, \ - NULL, 0, 0, 0) #define SBR_VLC_ROW(name) \ - { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } + { name ## _tab, FF_ARRAY_ELEMS(name ## _tab) } static const struct { - const void *sbr_codes, *sbr_bits; - const unsigned int table_size, elem_size; + const uint8_t (*sbr_tab)[2]; + const unsigned int table_size; } sbr_tmp[] = { SBR_VLC_ROW(t_huffman_env_1_5dB), SBR_VLC_ROW(f_huffman_env_1_5dB), @@ -406,16 +340,13 @@ static av_cold void aacdec_common_init(void) sizeof(ff_aac_scalefactor_code[0]), 0); // SBR VLC table initialization - SBR_INIT_VLC_STATIC(0); - SBR_INIT_VLC_STATIC(1); - SBR_INIT_VLC_STATIC(2); - SBR_INIT_VLC_STATIC(3); - SBR_INIT_VLC_STATIC(4); - SBR_INIT_VLC_STATIC(5); - SBR_INIT_VLC_STATIC(6); - SBR_INIT_VLC_STATIC(7); - SBR_INIT_VLC_STATIC(8); - SBR_INIT_VLC_STATIC(9); + for (int i = 0; i < FF_ARRAY_ELEMS(ff_aac_sbr_vlc); i++) { + ff_aac_sbr_vlc[i] = + ff_vlc_init_tables_from_lengths(&state, 9, sbr_tmp[i].table_size, + &sbr_tmp[i].sbr_tab[0][1], 2, + &sbr_tmp[i].sbr_tab[0][0], 2, 1, + 0, 0); + } } av_cold void ff_aacdec_common_init_once(void) From patchwork Tue Sep 26 22:17:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43961 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211383pzh; Tue, 26 Sep 2023 15:23:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEn6bgOwpZpE2rwo84F0EQAhx1H9rXNQPFYbzePBPuLsAuiQn/U7wBrdpqiDPRiLSR/UDZm X-Received: by 2002:adf:e791:0:b0:31f:fdcf:b2b6 with SMTP id n17-20020adfe791000000b0031ffdcfb2b6mr17332wrm.55.1695767023346; Tue, 26 Sep 2023 15:23:43 -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 v3-20020a17090606c300b0099cbfe8a383si11607180ejb.779.2023.09.26.15.23.42; Tue, 26 Sep 2023 15:23:43 -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=nC37dfnY; 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 DBF1A68CB17; Wed, 27 Sep 2023 01:22:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2061.outbound.protection.outlook.com [40.92.64.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDB3568CB15 for ; Wed, 27 Sep 2023 01:21:59 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i9oPBuIV0DXD/frUSKEdzHGRdOsqiX/Rxylc2pdCELTj+S+f48XRUW5c+WKZ7jg9yng21uZ8QShUQHMHobpL9DeSRHOTHurU3R72Rk+yInvDLwfGzexqjjblN77kM8EayFqIQ6C8PJB5zh8djuDp+GKU4/B35HiNMrjBDvWh/fpCksZreOX89pwUJ6/BT8tglS5xsHj9dWlSOI1x4E7ct+3/OM7C+mlUhR/41fm/czCXxAr5TNMsgur2fulMP7lLNLrh1JMahUIQF1SLHVrFxX2HDR8v3cJXM2Sjl2KbFzV1/qNa4tQ1ytGUH9NCwEGC9WW45O0FriFRCpLjgISM4Q== 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=HUBU4UsgajBJv3vG748XnYPMtdJb5NRZ2p00FDvPFXo=; b=AT6DQgoEikDEfhq68iKefFohbOPF5ILdQTrEsXsQh4i0wlCr/QxbD0HFh/loZ6WciaebF5h8+O4VwMuveg+QP5pEf51tl2SD7x6z6qdkDsOIGwIlc8K6khZGDCn0Ny8UnxbX65J+XRWhRkJvWP3Kp6cVj1aJNlAyGi268RkJj6+0bKba68nT7TglkNeuT2dEaYOIj/xh8ROq90OnSv8VrGSMauPxxs+G/OPoD/VxkC9G41Wv1eWCn4t97CkKm14713Sc3Z5QqUPeosDJwl8FsZxpPdHcOWGNjO5h6TwTVIuUYUo3UKc3w/pJXC7zl8dRETouECvm0Gp8HA0c6hWk0A== 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=HUBU4UsgajBJv3vG748XnYPMtdJb5NRZ2p00FDvPFXo=; b=nC37dfnYeEb91cVyGPYGdmMjVWJHpxeqvr/wxQaQlkvb93hOxcyxY8PPWKoNlGZHoXHcnNRdKXJjnVLQIrehOjspucTLSaRtlKaSCSusTRwttrdqsFaBzMQZUKYRVAWLoezlQhmaeaaKthGUoBINJsiVGghsbcgiBlj7GEHT1FUV0MsMdtV5+II8FKnhYpXLAI9sLNPJFhFuvFzKu0/eqbv7PT+adGwfWKZTBlybQAke4/EbtJfgDfBYYGBvdhmg1qleaElnxWEu5xWqI0MZjFAp0lxQbguFXHrteVDJNQ+FhSp7wvm3kgoaz2+kU/mxlo+DJE5Qy8govyo0KwhSAA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:21:57 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:21:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:21 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [InOiaI3YVO6yyeYmOX0gdaKb7FnRZnx4] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-49-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: db9c15f3-4ea6-44bc-6c9e-08dbbedeff0f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7KHchwF95WmWGhcUh9zKYRUAnARGpVeT/AqxrdI1KdqWh62RmOIbk02TFRNW9kMCnoCLHGS35EGIMKyNj5xJzAzYY6ZkF4cX6jt3I+48XOXuWX48njazFiMuQcIBITZdC+CVrMuHbn8nXLEeRp63C6i8HUZIe9qBLPblALlzwzaSIikHcjjtjWNQeSOSjq8/Z9kJPZaZWAihgbVusJsZPopdpMMA5gVBu+gtOZYn49rgJagrqqV4VPMnPI3uT2FV6oAtztkA9UlWkkqGrPzUsKcPTmFhgNywyd8IjUOYy8MTGqTF3nwY9uN5xpPuoGc3ZydppfE3CztklISo9BAveVHMXBFydxQbUyq8anq9Yjo7WRkmD2x1LPfFdmCwFkaT8OjjOP5ndI+VAYFFDg2MbrNOzJzZAU2w7W1bted3YKQ66ARFq6qdAeClpmFQfug5GrxzISkW25PbTr7aDzl0416MuLOej1Qq9EAEIIdErSWEPXju6RHomuZqItgUxuTPAc00m1ZO6PCGQOQ92Y3lyvyAghTeLX3/Fv7S6IWdApYCb1GlmG+Qqt1GSFhro2+gdSfC1PL2Y8S5p9AktBRDliQkms0utdyxiQ/p0VYxvaP9rhZGPavA7iPegWG2mln3 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yFJcS9MLHEZxhpVKxMG9MjvyJTm0zTE1yb7uJ6l0FY5XGzIlP98rEzc22oluikyrKS6Pp22AhndssZTkVDbThsnoZT+exGEEuOCd3J28i4yMYJvcmkTvQ6XfZBGtssc+haL5wthz/TDE+qV/hF0ROr7LfQsfcHBjnikskPHpYcCDdQCYCg4pnqWkezq4RoqXVYx8852mhWAdff4p2UXBgjRGc0PrTiZ/MLK+xsYhfG/ZwwCAwJ6oZGUSlRQdD2vm6apbQPtKzB131iXtT0RJwO6UT/GAlpp1PK+tmx0xpryFPvD6+efkZMRj/fvrx9XbeFwXlyVc4eE8Q5qi0imvvV5be+toBVBkYcaIKKeYuJfApCPNcfj0tBCIVuRaT0hyXhgI30cqjxo7WEfLNSs61RfT5ny2p2n2dyb8hpeHdHsaH8h772332KV6Twspc6/fNuiWajfm+g3IQibyPWQxI2Ek+U1NDO1Jngk6tQgl8aLyC/+9+l5nvMcg6Sj19dPdqdVHlmyDM/whbhn/BhUfg4YDii/ql31lpw0E0UTlXE71drObMUBhLuD2cg4T12ZJdJFDimIWqDfVmy3YtvQMz58NQkx4nwAK70hpLQauPtyXgS2Rlo9nQrKz79qk1K9Zr0Qy7FInDeIkXmj/CzGzMBsbblq3eLBpFxeRe6kxbyrVIeTJfjtjmeM9x9+Uwn2jsTE9oDT0aZdWkGBftxmV0YrzDEHcZ5kWmi65MCdpYeAU3iVPbriqOI/DbCLKH8f5RQ5mCNzx1jBRS4crx2HNT/hbJ1NNX6VTg0BX0Dow0DDyBiMiHV/loxg68fIDHoJNwjDmdN23XHJZ+U3nkpTVXbgepzO2Ydu5Bc38+lG4QiL5BtRJyxqUEnvybcmGwBZz2hJDQPiuXKStV6H5qgW3OtxJIUqUA6v+LS35XUiExXvI2d45OwA3Yj0Tgol+/KKkLozmEQ6wa0hKO8xMdohyh/cxc/S6ZsPaVYbBppns2XFmIh2VwIOaQzsZ7Pdxmb0LUvX0aw0ZVXb4FLnnQmfUd6Gr+ONcvBuhJPctlyZL3vKVpWuZ7Ueo09p9MDCewtSSUD7qpUSnxhBTgxdXxao/aVS1z4tmKJ8BX+WzGifZdZk8yGi5wUTK6t2u8VcVVi28O54AZkTZ5DuG6cUu7cHFI7BqmwO8gIP/lA0XL6e9auuaja4hFEK0FObIh7wHUwF4hNe2VYRnLUU9kFcwmPP+s0K3UJ4xZc8Et50boJgUs+jziKMY0fM6ggUN22N2545Q X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db9c15f3-4ea6-44bc-6c9e-08dbbedeff0f X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:21:57.7066 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 50/61] avcodec/aacdec_common: Combine huffman tabs 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: tmw9ZyGwu4F1 This allows to avoid the relocations inherent in a table to individual tables; it also reduces padding. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 59 +++++++------------------------------- 1 file changed, 10 insertions(+), 49 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index d03fbdbaec..6a592600dc 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -128,8 +128,8 @@ const VLCElem *ff_vlc_spectral[11]; /// Huffman tables for SBR +static const uint8_t sbr_huffman_tab[][2] = { /* t_huffman_env_1_5dB - 121 entries */ -static const uint8_t t_huffman_env_1_5dB_tab[][2] = { { 60, 2 }, { 59, 2 }, { 61, 3 }, { 58, 3 }, { 62, 4 }, { 57, 4 }, { 63, 5 }, { 56, 5 }, { 64, 6 }, { 55, 6 }, { 65, 7 }, { 54, 7 }, { 66, 8 }, { 53, 8 }, { 67, 9 }, @@ -155,10 +155,7 @@ static const uint8_t t_huffman_env_1_5dB_tab[][2] = { { 110, 19 }, { 111, 19 }, { 112, 19 }, { 113, 19 }, { 114, 19 }, { 115, 19 }, { 116, 19 }, { 117, 19 }, { 118, 19 }, { 119, 19 }, { 120, 19 }, -}; - /* f_huffman_env_1_5dB - 121 entries */ -static const uint8_t f_huffman_env_1_5dB_tab[][2] = { { 60, 2 }, { 59, 2 }, { 61, 3 }, { 58, 3 }, { 57, 4 }, { 62, 4 }, { 56, 5 }, { 63, 5 }, { 55, 6 }, { 64, 6 }, { 54, 7 }, { 65, 8 }, { 53, 8 }, { 66, 8 }, { 52, 9 }, @@ -184,10 +181,7 @@ static const uint8_t f_huffman_env_1_5dB_tab[][2] = { { 110, 20 }, { 111, 20 }, { 112, 20 }, { 113, 20 }, { 114, 20 }, { 115, 20 }, { 116, 20 }, { 117, 20 }, { 118, 20 }, { 119, 20 }, { 120, 20 }, -}; - /* t_huffman_env_bal_1_5dB - 49 entries */ -static const uint8_t t_huffman_env_bal_1_5dB_tab[][2] = { { 24, 1 }, { 25, 2 }, { 23, 3 }, { 26, 4 }, { 22, 5 }, { 27, 6 }, { 21, 7 }, { 28, 8 }, { 20, 9 }, { 19, 11 }, { 29, 11 }, { 18, 12 }, { 30, 12 }, { 31, 15 }, { 17, 16 }, @@ -198,10 +192,7 @@ static const uint8_t t_huffman_env_bal_1_5dB_tab[][2] = { { 35, 16 }, { 36, 16 }, { 37, 16 }, { 38, 16 }, { 39, 17 }, { 40, 17 }, { 41, 17 }, { 42, 17 }, { 43, 17 }, { 44, 17 }, { 45, 17 }, { 46, 17 }, { 47, 17 }, { 48, 17 }, -}; - /* f_huffman_env_bal_1_5dB - 49 entries */ -static const uint8_t f_huffman_env_bal_1_5dB_tab[][2] = { { 24, 1 }, { 23, 2 }, { 25, 3 }, { 22, 4 }, { 26, 5 }, { 27, 6 }, { 21, 7 }, { 20, 8 }, { 28, 9 }, { 19, 11 }, { 29, 11 }, { 18, 11 }, { 30, 12 }, { 17, 14 }, { 31, 15 }, @@ -212,10 +203,7 @@ static const uint8_t f_huffman_env_bal_1_5dB_tab[][2] = { { 35, 18 }, { 36, 18 }, { 37, 18 }, { 38, 18 }, { 39, 18 }, { 40, 18 }, { 41, 18 }, { 42, 18 }, { 43, 18 }, { 44, 18 }, { 45, 18 }, { 46, 18 }, { 47, 19 }, { 48, 19 }, -}; - /* t_huffman_env_3_0dB - 63 entries */ -static const uint8_t t_huffman_env_3_0dB_tab[][2] = { { 31, 1 }, { 30, 2 }, { 32, 3 }, { 29, 4 }, { 33, 5 }, { 28, 6 }, { 34, 7 }, { 27, 8 }, { 35, 9 }, { 26, 11 }, { 36, 11 }, { 25, 12 }, { 24, 13 }, { 37, 13 }, { 23, 14 }, @@ -229,10 +217,7 @@ static const uint8_t t_huffman_env_3_0dB_tab[][2] = { { 50, 19 }, { 51, 19 }, { 52, 19 }, { 53, 19 }, { 54, 19 }, { 55, 19 }, { 56, 19 }, { 57, 19 }, { 58, 19 }, { 59, 19 }, { 60, 19 }, { 61, 19 }, { 62, 19 }, -}; - /* f_huffman_env_3_0dB - 63 entries */ -static const uint8_t f_huffman_env_3_0dB_tab[][2] = { { 31, 1 }, { 30, 2 }, { 32, 3 }, { 29, 4 }, { 33, 5 }, { 28, 6 }, { 34, 8 }, { 27, 8 }, { 35, 9 }, { 26, 9 }, { 36, 10 }, { 25, 10 }, { 37, 11 }, { 24, 11 }, { 38, 12 }, @@ -246,28 +231,19 @@ static const uint8_t f_huffman_env_3_0dB_tab[][2] = { { 3, 20 }, { 4, 20 }, { 5, 20 }, { 6, 20 }, { 14, 20 }, { 50, 20 }, { 54, 20 }, { 57, 20 }, { 58, 20 }, { 59, 20 }, { 60, 20 }, { 61, 20 }, { 62, 20 }, -}; - /* t_huffman_env_bal_3_0dB - 25 entries */ -static const uint8_t t_huffman_env_bal_3_0dB_tab[][2] = { { 12, 1 }, { 13, 2 }, { 11, 3 }, { 10, 4 }, { 14, 5 }, { 15, 6 }, { 9, 7 }, { 8, 8 }, { 16, 9 }, { 7, 12 }, { 0, 13 }, { 1, 13 }, { 2, 13 }, { 3, 13 }, { 4, 13 }, { 5, 13 }, { 6, 13 }, { 17, 13 }, { 18, 13 }, { 19, 13 }, { 20, 13 }, { 21, 13 }, { 22, 13 }, { 23, 14 }, { 24, 14 }, -}; - /* f_huffman_env_bal_3_0dB - 25 entries */ -static const uint8_t f_huffman_env_bal_3_0dB_tab[][2] = { { 12, 1 }, { 11, 2 }, { 13, 3 }, { 10, 4 }, { 14, 5 }, { 15, 6 }, { 9, 7 }, { 8, 8 }, { 16, 9 }, { 7, 11 }, { 17, 12 }, { 18, 13 }, { 0, 13 }, { 1, 13 }, { 2, 13 }, { 3, 13 }, { 4, 13 }, { 5, 14 }, { 6, 14 }, { 19, 14 }, { 20, 14 }, { 21, 14 }, { 22, 14 }, { 23, 14 }, { 24, 14 }, -}; - /* t_huffman_noise_3_0dB - 63 entries */ -static const uint8_t t_huffman_noise_3_0dB_tab[][2] = { { 31, 1 }, { 32, 2 }, { 30, 3 }, { 29, 4 }, { 33, 5 }, { 28, 6 }, { 34, 8 }, { 27, 8 }, { 35, 10 }, { 26, 11 }, { 36, 13 }, { 42, 13 }, { 0, 13 }, { 1, 13 }, { 2, 13 }, @@ -281,10 +257,7 @@ static const uint8_t t_huffman_noise_3_0dB_tab[][2] = { { 50, 13 }, { 51, 13 }, { 52, 13 }, { 53, 13 }, { 54, 13 }, { 55, 13 }, { 56, 13 }, { 57, 13 }, { 58, 13 }, { 59, 13 }, { 60, 13 }, { 61, 14 }, { 62, 14 }, -}; - /* t_huffman_noise_bal_3_0dB - 25 entries */ -static const uint8_t t_huffman_noise_bal_3_0dB_tab[][2] = { { 12, 1 }, { 11, 2 }, { 13, 3 }, { 10, 5 }, { 14, 6 }, { 0, 8 }, { 1, 8 }, { 2, 8 }, { 3, 8 }, { 4, 8 }, { 5, 8 }, { 6, 8 }, { 7, 8 }, { 8, 8 }, { 9, 8 }, @@ -292,33 +265,20 @@ static const uint8_t t_huffman_noise_bal_3_0dB_tab[][2] = { { 20, 8 }, { 21, 8 }, { 22, 8 }, { 23, 8 }, { 24, 8 }, }; +static const uint8_t sbr_huffman_nb_codes[] = { + 121, 121, 49, 49, 63, 63, 25, 25, 63, 25 +}; + const VLCElem *ff_aac_sbr_vlc[10]; static av_cold void aacdec_common_init(void) { -#define SBR_VLC_ROW(name) \ - { name ## _tab, FF_ARRAY_ELEMS(name ## _tab) } - static const struct { - const uint8_t (*sbr_tab)[2]; - const unsigned int table_size; - } sbr_tmp[] = { - SBR_VLC_ROW(t_huffman_env_1_5dB), - SBR_VLC_ROW(f_huffman_env_1_5dB), - SBR_VLC_ROW(t_huffman_env_bal_1_5dB), - SBR_VLC_ROW(f_huffman_env_bal_1_5dB), - SBR_VLC_ROW(t_huffman_env_3_0dB), - SBR_VLC_ROW(f_huffman_env_3_0dB), - SBR_VLC_ROW(t_huffman_env_bal_3_0dB), - SBR_VLC_ROW(f_huffman_env_bal_3_0dB), - SBR_VLC_ROW(t_huffman_noise_3_0dB), - SBR_VLC_ROW(t_huffman_noise_bal_3_0dB), - }; - static VLCElem vlc_buf[(304 + 270 + 550 + 300 + 328 + 294 + 306 + 268 + 510 + 366 + 462) + (1098 + 1092 + 768 + 1026 + 1058 + 1052 + 544 + 544 + 592 + 512)]; VLCInitState state = VLC_INIT_STATE(vlc_buf); + const uint8_t (*tab)[2] = sbr_huffman_tab; for (unsigned i = 0; i < 11; i++) { #define TAB_WRAP_SIZE(name) name[i], sizeof(name[i][0]), sizeof(name[i][0]) @@ -342,10 +302,11 @@ static av_cold void aacdec_common_init(void) // SBR VLC table initialization for (int i = 0; i < FF_ARRAY_ELEMS(ff_aac_sbr_vlc); i++) { ff_aac_sbr_vlc[i] = - ff_vlc_init_tables_from_lengths(&state, 9, sbr_tmp[i].table_size, - &sbr_tmp[i].sbr_tab[0][1], 2, - &sbr_tmp[i].sbr_tab[0][0], 2, 1, + ff_vlc_init_tables_from_lengths(&state, 9, sbr_huffman_nb_codes[i], + &tab[0][1], 2, + &tab[0][0], 2, 1, 0, 0); + tab += sbr_huffman_nb_codes[i]; } } From patchwork Tue Sep 26 22:17:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43962 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211427pzh; Tue, 26 Sep 2023 15:23:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHNpnmJWC0/uiIBU9embMKEP4OZXoj2oAqiNgOCEkz2vLGzfJut6wIoSRwYBxNjjhGE2d5G X-Received: by 2002:a17:906:739b:b0:9ad:e43b:1ef2 with SMTP id f27-20020a170906739b00b009ade43b1ef2mr70666ejl.16.1695767032102; Tue, 26 Sep 2023 15:23:52 -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 g17-20020a1709063b1100b009ae1757155dsi13477640ejf.115.2023.09.26.15.23.51; Tue, 26 Sep 2023 15:23:52 -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=OrYqZT8L; 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 E99DC68CBA3; Wed, 27 Sep 2023 01:22:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2090.outbound.protection.outlook.com [40.92.64.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4830868CB7F for ; Wed, 27 Sep 2023 01:22:04 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ctv5UT4yqpFe3VYjS8cu+Tgwy/oKw4ooTH6wCcN4+OFLreBGB7mp4hYMGRnXi9H/U9RIAlP0ySoj1v59tV0RfB8clNxn+X3EycyyzXsKllRZ2TKl/UCIsgYR9G+VOAaxjHdlJkKWNk5Zpb2h8Mc8DU9jY2LI6lOKw2cD5QrjluIDx1EZRipFZWcy63S9YO4vz/3FxxsNxgyMUijrd04uXv6UXFPODI4zuY+KeMVhJ/d9AuE4WdtsSJgcKNqxGLJJ5tkQHa5KPZ+fAj+zG+B6FXd4rqrUyGTuETSSb040gmXsZK4UMu8ynpRQgHyjipf+feg3ItjB6RUqYyyLEqDVtA== 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=HdKXOBb4ghFW98SVztwIu0qhCQ+/4uKLlOAt0mrln6M=; b=maiyuaUv19mlF9Y00u5Agdg0+xVBzf52xbKuppJWgz/hwbOAlI17bl6+c/KkGEn3oau8PvsdQ8lBvTivBkp03b4/Jl947HUuU7gvw3yIh2rXNgZhdOI1hhgUzx5SbJwxCjyFTf/rY67k/MBUZhd4rklreIoTDh4LnIoyffvocTu9OJqapbA4ATdxX51n6ifvG0bAvEAPtjBtMm4bO2AO2M7KYdqsriSJmE4Uv5JTlNf43btDv0X46s6hOymb9yFwSf4ALmTs5/ApQhRut2FUmvgLcO8Lph0f0NV3Qtd79RicGOPIHIV8tDGN1sE7OJUgdGU18VeMX/RgArNjhuPlhQ== 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=HdKXOBb4ghFW98SVztwIu0qhCQ+/4uKLlOAt0mrln6M=; b=OrYqZT8LUG1+HBvAbK7xpMeMOq0rkFbhsCvkpQwX3I4B3nxZ5jvaLBk8A9m2o3fDyQyiQ8WIv7gc8chz24dUul2XWg7aw7sE2rMd7quQRpJkbX/zLqjs4EcnmtEky7KzmdI35RcqUGz639XZLM9LvnhUMNi7bvx9CGr2p+XZUFGTP0vGMowK6fRFmhbCFn92XQqrXX+ij/QdMZRoxXleiOkZW0copRyjkIcgechv1lwhIkxO8y+VzmGha0euEcI1KIJjoFiCSApceUhHPN+hkgnU5u71xw5SXPbr9KlBt9bS4cPt5OLAKXhiE5qmdRwMcFBM6wklVmzeFldrHG2rOA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:02 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:22 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [dIhJl9I1QupAHr0Cb+7bFFKPenCPlPka] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-50-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: cf4f4d40-48d0-4154-2360-08dbbedf020f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gPKsdJJPY5W2jKsG7clpJCAaZKqN92hypjisTBRtw9BBiIBPfPuLLQwyH3lK1ezTdH3bE14HMwVqtaXU08oVWulsYgRS3C0qaE41eRLjFt0z+5pgrN+ymPafkXsaBurGmIQs/b59wAm9LcRfMNgfyc7UUAMczns2sWuauRmTyD8KUCYj1kyHlSFKCK+P3ax3m6VAYA6VuCepH+jtJfCCM0+R9rd3+RgKeDat9g3JMTjRmmIlACpB1rXU7OCMWT/jOhoN3lsOS+fR4FQeeZBGXMtAavLBj0PW+IYBP04S1knB0erNOfP3MFLA3HxTccfdfky7j+gi/U9KRjRX9KMVeLuPEBlsellxHZl/So9NAZBwmt7On9uHZpznCEmSemSXGjw0fo1VXxdHtgh+dcOI1Ggg2lWKD/qThoEP/HAIjSIheTf1V2Ohd625nJ9WKnVM9J7KxnF+jAulIai8JVXGOAiwk+d/Fy++fCNoCeko5mg+WIDlHm1ZArTBamFZJCf/EbmVRLO45pq38xu7ZL9oY2JElYDBqhVBG831n7bx48yheBSNcYVlyaeDQ2EslKkGx+S+E3WLwCoAItZYJVgfiBYteCzxAofq8apIanJAtwq7iJDIIbjOH8A61hAH/D+y X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1oIJG6MPyM409eyAApNovGuTK9m05X4j41ygDGWYcbV587ccSAPUT2HKQZcVnBFTftuvPnhZAl40z61x47oASQyrNABmaLAttUHjw7DiKoKQ5fbTjG5uCWdXJPBPosHUMfyZ0ZDC1uNO3KKB+9LWuU2Lt4uCNyJG6n90kXBmyiCVINlnvp5Tk/cF8U8jZPAnyqbBeyBufjWKbUrTTeTTBYdOFMJVkrDcgmSqEtNkhGQR8iex5q7Hf/OFMYTBRFRAJnrrdiWZ6/f/qG6DJAMQk2+Sf97kIUu+v4NmdTMcFgEcAkqu0GLk7FKig5/E0zDcPbireeNSe7T13GNSHXgFr/gHXrP0oUUrq9flZPcdWE//sT5tQuxzvmo8M3zIW+ueEM7/+gx/SfgZg9qLQYwFROcI22Tzhzg5PAxgIydyRD7sxIpmgsq1IvmVeHpuuy25jYGy/8T9wQqn0ly21BbZ+zW+MoCKJczQkgJfsyEyszMcH32S4wjHeeiAqktyqIqOeDrMSYoAaDABm3un8hs7j5P1AHfVopcpUZqvFtdHVdkSI+tGbqs2yMT1M0WjO98fFRjwLC6zHlgKEXYqtENfHIDm0A5PMktxMC7e4u1bXSfJetqdd9CWtN8cOOUYqXcefYsz/nvgxkrNq3FQQ5iKVVHMtnxZ4gAyEbxWoNjsnj90eOQDX51mMoUlWPXvXE4SXGZBPZ4lLioFZt7T8Hicirp/SvN3woJrdwuOM6C2elLk2CKFC0ArAYRK+J8bTMBDS3MCtVzERfpht4NI1XeSRjjsrxMIA5rWOuZhssGvVeVVs/imVAnnJr6+RlmSUu1pZqhoLoOGr79b1JheriOCQ+isjvoMMYSETLY6BVBPMJOv7DtDWcIbNLVKfighRZ0t8TQUJMGDlyRNgD9Wb4+rXtms6yz6KHhDdrlWxY6hT77WR9CMlcbkC04o79pevxeBBkFE+i7jPJ+knw8NukWZWRaRLJ9DiTBGB9vJPWoFtNwPJvNtFDm7cV0ztfAL4Vj5lp9MBpQogW8W31XTEKc8tVSOJCGfnmus9/jaer5DJ8CO9/DtjNYRZOamWt7Iv5uRDq8d3Lv5iOfgQ1QU79j4+MuZfgA4ad1QyxS5nh0O2s8RSiaOG8U6qdEOaVT9g1/9O0gEuzw+KyfcgcEoHCGg6bmlOtxNG/Yh2iXBEHGKfuCjy3fLsmlD+iBaIPwAwOZ+1gZmjAPKoV7UOweIRiAGQ1gB4pQWEpLeJnc0kSFhxG7rSVc9QTGV4NhfvV5HKzGd X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf4f4d40-48d0-4154-2360-08dbbedf020f X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:02.6990 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 51/61] avcodec/aacdec_common: Apply offset for SBR VLCs during init 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: T0lrz0dTaGjA This avoids having to apply it later after every get_vlc2(). Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 6 +++++- libavcodec/aacsbr.h | 3 --- libavcodec/aacsbr_template.c | 26 ++++++-------------------- 3 files changed, 11 insertions(+), 24 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index 6a592600dc..4af60e8c7c 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -269,6 +269,10 @@ static const uint8_t sbr_huffman_nb_codes[] = { 121, 121, 49, 49, 63, 63, 25, 25, 63, 25 }; +static const int8_t sbr_vlc_offsets[10] = { + -60, -60, -24, -24, -31, -31, -12, -12, -31, -12 +}; + const VLCElem *ff_aac_sbr_vlc[10]; static av_cold void aacdec_common_init(void) @@ -305,7 +309,7 @@ static av_cold void aacdec_common_init(void) ff_vlc_init_tables_from_lengths(&state, 9, sbr_huffman_nb_codes[i], &tab[0][1], 2, &tab[0][0], 2, 1, - 0, 0); + sbr_vlc_offsets[i], 0); tab += sbr_huffman_nb_codes[i]; } } diff --git a/libavcodec/aacsbr.h b/libavcodec/aacsbr.h index 0d182f822c..3a19fe1c7e 100644 --- a/libavcodec/aacsbr.h +++ b/libavcodec/aacsbr.h @@ -66,9 +66,6 @@ enum { EXTENSION_ID_PS = 2, }; -static const int8_t vlc_sbr_lav[10] = - { 60, 60, 24, 24, 31, 31, 12, 12, 31, 12 }; - /** Initialize SBR. */ void AAC_RENAME(ff_aac_sbr_init)(void); /** Initialize one SBR context. */ diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index a82be8a8d5..98e9fd8fed 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -804,7 +804,6 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi int bits; int i, j, k; const VLCElem *t_huff, *f_huff; - int t_lav, f_lav; const int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; const int odd = sbr->n[1] & 1; @@ -812,29 +811,21 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi if (ch_data->bs_amp_res) { bits = 5; t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_3_0DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { bits = 6; t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_1_5DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_1_5DB]; } } else { if (ch_data->bs_amp_res) { bits = 6; t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_3_0DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } else { bits = 7; t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_1_5DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_1_5DB]; } } @@ -843,7 +834,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi // bs_freq_res[0] == bs_freq_res[bs_num_env] from prev frame if (ch_data->bs_freq_res[i + 1] == ch_data->bs_freq_res[i]) { for (j = 0; j < sbr->n[ch_data->bs_freq_res[i + 1]]; j++) { - ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][j] + delta * (get_vlc2(gb, t_huff, 9, 3) - t_lav); + ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][j] + delta * get_vlc2(gb, t_huff, 9, 3); if (ch_data->env_facs_q[i + 1][j] > 127U) { av_log(ac->avctx, AV_LOG_ERROR, "env_facs_q %d is invalid\n", ch_data->env_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; @@ -852,7 +843,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi } else if (ch_data->bs_freq_res[i + 1]) { for (j = 0; j < sbr->n[ch_data->bs_freq_res[i + 1]]; j++) { k = (j + odd) >> 1; // find k such that f_tablelow[k] <= f_tablehigh[j] < f_tablelow[k + 1] - ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][k] + delta * (get_vlc2(gb, t_huff, 9, 3) - t_lav); + ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][k] + delta * get_vlc2(gb, t_huff, 9, 3); if (ch_data->env_facs_q[i + 1][j] > 127U) { av_log(ac->avctx, AV_LOG_ERROR, "env_facs_q %d is invalid\n", ch_data->env_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; @@ -861,7 +852,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi } else { for (j = 0; j < sbr->n[ch_data->bs_freq_res[i + 1]]; j++) { k = j ? 2*j - odd : 0; // find k such that f_tablehigh[k] == f_tablelow[j] - ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][k] + delta * (get_vlc2(gb, t_huff, 9, 3) - t_lav); + ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i][k] + delta * get_vlc2(gb, t_huff, 9, 3); if (ch_data->env_facs_q[i + 1][j] > 127U) { av_log(ac->avctx, AV_LOG_ERROR, "env_facs_q %d is invalid\n", ch_data->env_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; @@ -871,7 +862,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi } else { ch_data->env_facs_q[i + 1][0] = delta * get_bits(gb, bits); // bs_env_start_value_balance for (j = 1; j < sbr->n[ch_data->bs_freq_res[i + 1]]; j++) { - ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i + 1][j - 1] + delta * (get_vlc2(gb, f_huff, 9, 3) - f_lav); + ch_data->env_facs_q[i + 1][j] = ch_data->env_facs_q[i + 1][j - 1] + delta * get_vlc2(gb, f_huff, 9, 3); if (ch_data->env_facs_q[i + 1][j] > 127U) { av_log(ac->avctx, AV_LOG_ERROR, "env_facs_q %d is invalid\n", ch_data->env_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; @@ -892,25 +883,20 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo { int i, j; const VLCElem *t_huff, *f_huff; - int t_lav, f_lav; int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; if (sbr->bs_coupling && ch) { t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_BAL_3_0DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB]; - t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_3_0DB]; f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; - f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } for (i = 0; i < ch_data->bs_num_noise; i++) { if (ch_data->bs_df_noise[i]) { for (j = 0; j < sbr->n_q; j++) { - ch_data->noise_facs_q[i + 1][j] = ch_data->noise_facs_q[i][j] + delta * (get_vlc2(gb, t_huff, 9, 2) - t_lav); + ch_data->noise_facs_q[i + 1][j] = ch_data->noise_facs_q[i][j] + delta * get_vlc2(gb, t_huff, 9, 2); if (ch_data->noise_facs_q[i + 1][j] > 30U) { av_log(ac->avctx, AV_LOG_ERROR, "noise_facs_q %d is invalid\n", ch_data->noise_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; @@ -919,7 +905,7 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo } else { ch_data->noise_facs_q[i + 1][0] = delta * get_bits(gb, 5); // bs_noise_start_value_balance or bs_noise_start_value_level for (j = 1; j < sbr->n_q; j++) { - ch_data->noise_facs_q[i + 1][j] = ch_data->noise_facs_q[i + 1][j - 1] + delta * (get_vlc2(gb, f_huff, 9, 3) - f_lav); + ch_data->noise_facs_q[i + 1][j] = ch_data->noise_facs_q[i + 1][j - 1] + delta * get_vlc2(gb, f_huff, 9, 3); if (ch_data->noise_facs_q[i + 1][j] > 30U) { av_log(ac->avctx, AV_LOG_ERROR, "noise_facs_q %d is invalid\n", ch_data->noise_facs_q[i + 1][j]); return AVERROR_INVALIDDATA; From patchwork Tue Sep 26 22:17:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43963 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211489pzh; Tue, 26 Sep 2023 15:24:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHHxbYulfdPsIDRYfg8kurqtqvAcHdemFprlX/pOEBxsCNuyEQZ+esKcT5pHYNxBioHGETH X-Received: by 2002:a2e:8417:0:b0:2c0:2b1b:d14c with SMTP id z23-20020a2e8417000000b002c02b1bd14cmr293522ljg.24.1695767040421; Tue, 26 Sep 2023 15:24:00 -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 gt21-20020a170906f21500b009888b517932si12278097ejb.333.2023.09.26.15.24.00; Tue, 26 Sep 2023 15:24:00 -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=NBgKI2FI; 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 12F7068CBA8; Wed, 27 Sep 2023 01:22:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2092.outbound.protection.outlook.com [40.92.64.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 220FB68CB09 for ; Wed, 27 Sep 2023 01:22:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jOuC4MKHBSNpBRl1Nq3OXlJR5MxODEh99ohc2AjbuvaKMNphu/h0s7TIgR4AN8AFbJ8tIJNbSKAbP4EJG7ke0AVGfZ2GqPM9kM/HRD8l4MYNRlSerhWcHmCfCBWXO7xaMD3hshLuqLPb8dr0Jzdkav65DBTwZpbVV9qBqH0Xl18oND+M52i1n9VnVzHvS54Lx1Xcwax/gdHcBzbavr7TDBLUGP5enfOa5Fgogiwabzoczz4Y4c/fQumGBeZknVRVeMFxrYx7CMLnNeNIKWdUjyrHKjp7iAipv756S5Wy+JkuCDwSHeIKXxzRZyyn87mNcaDsYt2qovMJCSzEuPgYYw== 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=HgFnaEMETBoPh4pppY6ufJVtootkIcSVrWAypTaKQzE=; b=BpCLZ2IorkiW84W/rcR48mKsUIvIArqaBzqUeL8AUjq7tpsHTjPHDHGJbcaYJjR994qj/7/+8OPYo3qIVsns8K42AjWxinxotsKT3iLaFPTzrZ03hrccfgj0IZyNyXJ3WF4UUobj1g/w8MUUPuDxbG89MDAp+/IqrZ5L6FUuXUQAyD9XVm7MkXBErwBrXLvhi+c00rU3ZWeZ1qqHQo0kXkbQJdQ20R6alyi0j7rvoQZnLJJVzR7FBud2Ii7IuZVy3vt16XBa5XwXtmaTjmAHy5C9ZecW47761/v3dl2drK7W9cZcAxl+KzB68FYirOgLuS9UBRX46E08ROp3ekZFZg== 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=HgFnaEMETBoPh4pppY6ufJVtootkIcSVrWAypTaKQzE=; b=NBgKI2FIMvfa2XHNQ5AFudYfcN4UHwdOH2jsXu6UMCDPTiGUuSPoNCUzIIpNOWE+jnEGvcrYCb4KBzvHEoWL4eH85A881/lLM2OzrS1VbgJtszpvnVSiSpCyxoLnNPquie0+P8PdbU6sVz2RApwBzuL/ubI198Pwa/zgITQEBbeFNr+FY0T61qYGU7U+xbfBZLu7WX0TVZLZc3yyigjKh1Zc/0J5yDYWYVaMkC4q/vMrjtds6lee3E5VCOTKSJz4a40zaZjGhHRzzSm8cxrYCgvPLpT6Ybk+6zOW8LAypi7fDuPWCJX0oPSn3+B/Fi2/SGqFYT5S3Nxnvok0qaClPw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:11 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:23 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [LO9WKlnoaBBGhWpsqXb51NXNlGcGjSG7] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-51-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 849806f8-a203-4a5d-5dd3-08dbbedf0759 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tHtpOOxgTRJlxZAnsjk1Mb8e7u5OCRp972a9SVpNATdidYDXnD158PVYn6k2a3zcnDtLX8S+BZPtokDc91X/IrCAnUFstWC/gME/uGrt0YUfQRlgkjSgEOhUjN8Oth/A3Ehip4sC89f4ZvTzHbfVhPo2KzLJeEZuUHOQES7MQacBZDeDSmq/rUcTuiMstQiGcD45vRK4obhUfhGnUGpzKPpZS0cqBh7EMQYA35u9nimhp3p7Z4eURfOHHgpU7VJcGKUuk7KcpISpZcMYzaDho9zRTRTTXDkl3byOoxU+TSvGXFxNajKHP5ohO9AhKUIh4l4kKDkQuUG3VVaMSJztBherIQ5670XKExzFeVA19/NthJy2tvvKBmEciZOm70Qko/fueIAFAL6ZimN2IKRdGdbvUZSsBdcs2XL9je/bqnhaIVQpyl70fn00ZMUlHFnzEx2vSEToGJUhbi/dhiryY1FhCLEGEkIxVp8/Xu7OQvHlXl4fywSo0xXjEZXDL37I5iRCJ1fRduxSUcgQZ26S/Zdicp4jPAsALexwJIQfGqAqDU1fEmUJWfwISyAQeCUwMwMnv5UEDWTDuUecpLa/EkgprgUJYd+vRs7pHASaWnomztQh+jc1YR3yEagKpgX2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: y9U9fXnRknS5dq9vfUqEr30Ig/8IzXe2U4+qsEhNBYnkJx39ZIKEdDogTfscQtA/zIq60Hy8UvIeNdM5pHdKrck6onl8ubfa+Jt2kmedS1rYs7kGcmGEk7z1c02XgydsoDB9m9ZyIn4Y524I/TyBcTtQgNfj/152H/UEiojXQrDJUVNhfWmc4w/olzsN6lTB16jIvlMcOI1xU0rQzK5mG6v94WcNFmTNyiPSim8lZk/BR7Txs8GkHcvreJlL79SOgjHTN5+NjosDqWtT1BSajMbqwF35pkVI/vtDet7FmhSGXPtEkRduNMtraZtZh7u0pFxPDDMtE7oHqJNPOv0L0xQLqYmD8/5jlClMcNXgJUVIowa0cfStMQV1LYWNeKwpndLYSFdpGY5meLMurJovz3yBgi15xe7JEwinurUjTvpITLC5g7CcI9BwZDxYKMI8F39mcndoj4r5JtmQi60dj6BybyUgxkqkjt9IwtxUE1+MqDFsiLkp5IhTFeTRyiq9Hv030IUfg3Ke9Hg7bnbhyq3PWuVyoIpKFk5LtyGd91DnUPU6gQ2vC4tx42GNEcbknPI1r/19f2FpbQYW3yD6OxdJE+2gvqVpL9/H1ywltC0mBQmL6SIhcIM5mh8K1T2jv1yvewd9ewvJwIbYzaolpkwDGypob6+Fs536tLPc7ij8jO4wJmam9LCoCdueZq8xHgIkBl4GCdKQJP0MJPLP3b4iQyhe/YxQ38KF/nnY67iMy3tj/Wcg5W2/8ov4CBs9Hg5ZotdpNaIRhS6d5DXlKqVCeSWtETEtEENbUYfse/6MXkYFvzeZNICa0HS/2blTKx85p2Vc48mdD55qxvjYkJsjE20h2SadSiwAcibZSbD5nu/xeYdu49cYovYcsvx8oMVf6GMluZg3q6GwBtl89nUpVsord05St519RN7PjHfCp0gvBzSZsVp9VIoZCladngmPcQJE35fzo2Q8Ukop6yEfGcJ60Io8DJm2UGlvfMNuQHRKRlkJ6DHSEdDVTA4qzH7sEaZUNwd2WbWpB37uRHGNW1zu5xpDnQl/PtCcfTV91m+ZKMDkiK9N4H0IxuaALcLgrvy/7cWjSsgHaaMKiXHSqFcXmDP18Ex4Pif4e1uXBVhKPUyJfY2HOj1yUinPKaXxPepJ3DXkqMYBa2SxsoEQri2IrhSssrfxRbUFSQFNHJnefh3ZRBihrlYH72+aWkJVyBIpLppQ73RKsa2zWdjObdr+2q6vDvmHOZ1j5ruXSB9r6auiM3co4bIm7BSP X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 849806f8-a203-4a5d-5dd3-08dbbedf0759 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:11.6009 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 52/61] avcodec/aacps: Move initializing common stuff to aacdec_common.c 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: vK6j1ZkfJc3i ff_ps_init() initializes some tables for AAC parametric stereo and some of them are only valid for the fixed- or floating-point decoder, whereas others (namely VLCs) are valid for both. The latter are therefore initialized by ff_ps_init_common() and because the two versions of ff_ps_init() can be run concurrently, it is guarded by an AVOnce. Yet now that there is ff_aacdec_common_init_once() there is a better way to do this: Call ff_ps_init_common() from ff_aacdec_common_init_once(). That way there is no need to guard ff_ps_init_common() by an AVOnce any more. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 3 +++ libavcodec/aacps.c | 1 - libavcodec/aacps_common.c | 9 +-------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index 4af60e8c7c..75368b7075 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -27,6 +27,7 @@ #include "aac.h" #include "aacdectab.h" +#include "aacps.h" #include "aactab.h" #include "vlc.h" @@ -312,6 +313,8 @@ static av_cold void aacdec_common_init(void) sbr_vlc_offsets[i], 0); tab += sbr_huffman_nb_codes[i]; } + + ff_ps_init_common(); } av_cold void ff_aacdec_common_init_once(void) diff --git a/libavcodec/aacps.c b/libavcodec/aacps.c index ed00006a3a..5a3e6b3dfd 100644 --- a/libavcodec/aacps.c +++ b/libavcodec/aacps.c @@ -739,7 +739,6 @@ int AAC_RENAME(ff_ps_apply)(PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][ av_cold void AAC_RENAME(ff_ps_init)(void) { ps_tableinit(); - ff_ps_init_common(); } av_cold void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index 11bdb960cf..6b5493d4c2 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -21,7 +21,6 @@ #include #include "libavutil/common.h" -#include "libavutil/thread.h" #include "aacps.h" #include "get_bits.h" #include "aacpsdata.c" @@ -298,7 +297,7 @@ err: #define PS_VLC_ROW(name) \ { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } -static av_cold void ps_init_common(void) +av_cold void ff_ps_init_common(void) { // Syntax initialization static const struct { @@ -328,9 +327,3 @@ static av_cold void ps_init_common(void) PS_INIT_VLC_STATIC(8, 5, 32); PS_INIT_VLC_STATIC(9, 5, 32); } - -av_cold void ff_ps_init_common(void) -{ - static AVOnce init_static_once = AV_ONCE_INIT; - ff_thread_once(&init_static_once, ps_init_common); -} From patchwork Tue Sep 26 22:17:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43964 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211538pzh; Tue, 26 Sep 2023 15:24:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG+QARrQka1IFmv2Mj2vebsUb3QcCiUad6RLhEKtMRycqQYflYHw8/RYg7R9vdUTeeU1VA8 X-Received: by 2002:aa7:cad1:0:b0:527:fa8d:d3ff with SMTP id l17-20020aa7cad1000000b00527fa8dd3ffmr251213edt.6.1695767048398; Tue, 26 Sep 2023 15:24:08 -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 d26-20020a056402517a00b00529445792edsi11221927ede.17.2023.09.26.15.24.08; Tue, 26 Sep 2023 15:24:08 -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=sX3ftgp7; 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 356EB68CAD3; Wed, 27 Sep 2023 01:22:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2075.outbound.protection.outlook.com [40.92.66.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D43A68CB0F for ; Wed, 27 Sep 2023 01:22:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wd9UzU8eARY/AhCzkWGVHDWIKC2OIsQShzejAjnElSDs1lF/0i1d7X7tacKg8O8luv57yynw8K9rc5M4MytH4mfU7+RtbJ1KzKWJjEGWazgLO0VoYTOdFKIwUWY0hEk1a7RKac1GeZUlwIMfVQuD4V6kLirr4D3J77hYTApPu1Xd0mAet86sre3m00odqbTCPyqcOuXfHI3myAwAs0icFDA2/bFFTdWnbJp2bLIO9eNfbUirlGnCOREu1vueOAJ52EOOGx+cxbWS6Nt9zQxGVk/rLC+lKTtHR5TjXu5e8KZLi/O/AQ/eoot+wjVy0VCUh/1KeQgY1H+wTVcQlnzeAA== 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=ouW0i4+LIqNLwLn3rjKqrV3zxhujylbQXLvGcY2VUJU=; b=YwatWdrKYbkNSJ2bQ+Ri2RGM/nGn3Bmy+pISFwgrJk6rQ5Z6kupo4rOVIPL3WZBZEPfgMKiyaekrj58s7BlAMdAqW9QGG7llESAF9c/LaqsKHlme8IBw9Zt2DPl/AshwpKlnTmCfpF5cxbyKaTugP2vYMpLwTyIrN57tyggVmctpzwvJ/N+pVXv0wNJM4FUKuuZC3vs3CpudneY60LkVzTN95ugg9yZzrgaKYaznWvjwFr5gj2+haMEsr82UIGOB3JfmEAK4L4+z556J5FfGQQPl+c2yq+SIpMCPXbaokAMk+yYnOq3P7v6MCHH7TZS/k66Uv5TSoVBPHhU8hTUZ2w== 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=ouW0i4+LIqNLwLn3rjKqrV3zxhujylbQXLvGcY2VUJU=; b=sX3ftgp7fC3tkz8aJOI3ZCapF1TNZ73Qlew76pWocjId70GSQHzu5Nym6aH7rd1WRRZksh8v0di0fpbZTG8VAK6WAki9K2W1m5AhVAlyHt/nONNgR681UeaHi9buPjZoxlygqEfZjcgGxzwW9RYRYmbbQLp5J+SuYFNmudWPEK8MKIkR+UUnnROdRv4j9bnBMD8NO0+70rWcWPjmgVxt1pBUZeE3Kvbcppy2Rz8FgRWlVVnkG2kaAP/DC1O/SYP72uy9JoXeX7N+gbKIfc5yXZNR0ISRDb3NSWKPzyP0JgVLToz8md+65L8CjL14BgCs4YlaDqPv3rkSps1ljCoAKQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:20 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:24 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [ipILeyeai5F0PMiUi1in9D0RpwSPF0AH] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-52-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 9763b045-5a5c-4418-26c9-08dbbedf0c6f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ae01Hz49LpzZusUzRCereW9tMrOPtxjAuRTAtmZKi9IS/scfXfI8KErc35m8+O075YJXatsingqykZQ4HnjY9XCfuytjMrlKbCF39Fdf4hG0UdPRPEcdSzyzha9rbMllN12jfOmqTc7pVCWGsJa0Raj9T0UQdxEB4AVsEiyjjxHlzH1ATKkuexEuSZ7t9SNruVJnIwbbM9zuAsRkccKTmbxcCLcU5m9TWHYRcsA/wpJYohTWf87ER9n6U7R1X61nrap+JeA20Keoe04Ui/jyudj/BG69p4DZAdqqD/EWvcVXVFDHgDmigeH07ck2IUdRjWCdK+JrcUyu+GthlXNwSBU+hjjO6r6XV+kUhz1sZFv2Vfzr1I/EQM2Uk20DPiX5nmecLwZZ7/vP0f1/edUEacAzwSg0NL+d4pei61TPpqmHGtXHmm8Tx5+W9OXuqmQlFBRoA/y153B0GCuvdf2nBuosaILAqAi3ffwzdvQGbtRUMynhqzBEUqfEkmDMqw68/3ynj7I+F8jJ6lA6x7oodCGzmS/njlhdygsRbwLQBU8iAd0RLXy1QXOAf4dglqQQv20vrr0liNvNyMz0pGw8vEjL5tWqUrDxkQteuEJGjHZ140DVu8JAN4z3kvvHLHyR X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PqJhQK4oY/09VJ0bsamJ/8GUGEGd0wbk1FY+sZanZmj+N8WyV4ctP4bgeXH4Gpb5y9qZK2murEdDUGwcXiA2wrCkB5rE3M0pA00Ytl9mz+WdRqpR8cNE3xvnEq0KdHFMbUBsyJGbtQ6E4LyC0zkWm8uHG10P0CMNNm9+skeIl8hmPA+ETn3YVy1lQ42h2EGfef8oMzUSV2/XO6FW4pdZQfs2GZp0xNnxolJ5y3ISulAWCixLQ1/RB/Drq/PFHjGvRGhtIO4ypjT8y5KnNUwCKAmW33AMiLMkC4jf81veic/XeBMlT9lpk7dnC7ogWXiVDa1rDHptEHCd4M9G1HgcnlfOlusCmUpaQ8lcTlxfXRorcygqoDa+6coLZoTk8WJgyypgtaPyW7UOuYhuwkGXqYnFPVwMQ1rKvzDzayENT9JGYbv8fhZxFahI1jIQAXXYOXpD7ERB+ZcAC6PEFGOLVNE4acJAk9LMc92t9t2VW2ddTzXl1Kq2h83njxtY4I4LUNlpM6xX0FaBuR4ufeHpC1fkM/aedh15TrLMWjeB+Enxl3lvt7eKSzqZOdanGZDYPj6KtykJpVAzPDCaP3/2RboOlcgE4gPb8mxT6aes5d1dX3BVyRjGbdnPs7pZydgXT5AQJgUXOVZWRQhwaaGNWl+XsbFeeGc88yeTdtRvbKGa3BZ6kJpXjrQ+iE7A0vbLYMh5G3E6Ut8efPBl+AFD9R3GWBp6kproD+R8ET75S1LAFL7Gq+jT1TS7pqbm4KXZUhvl612Qb2xe7LhW3F0T0queW7mA5Z+pigxLNzVKpIV51NCHIbb1rTCt6e1XQCTEYH9MT/pbBUb10vNDUmDFkDcYTTAOo1ra6d8BFE7dEhH0OZJDaxN8mQi6XywFjf9AKCeQE/UGCR6e7kHr5HKVlORAIYo4G0HfMDcnhqefsN3BJCdtdGeHqtFti0efZ9dUNmQpJBGSBBuQEfLh9ZXpAC2uiiBcgyflyN9TmP1p+zJ/auoonGUOhMSMoG6pZgFeNqlrmmcapMGebzaLc6pi1KKvvz2qSTDztUn2kmbJq1voPtnF/ucz0AEdfucBkVdGZuretza1tvAQCEo2dRwTyifazp8VBr8XjjDwFhyf+Kfk9mas+Sq6rxI7HM0U8Yq/Qxvx96JZuZaTda7KzV4LjjQTZ6YGAgY5mlFENN9GCmephSyufRNgaZaSw0R9OtH8Ay/Mcjdf56MPKRBQvnzmvyFIPzfPlRWEAyT8NCPIOwCIsLNe1VmOVEfKJqM6rzFk X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9763b045-5a5c-4418-26c9-08dbbedf0c6f X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:20.1445 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 53/61] avcodec/aacps_common: Avoid superfluous VLC structures 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: +Hp7hgHgCkZj For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps_common.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index 6b5493d4c2..281eaa12e7 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -58,7 +58,7 @@ static const int huff_iid[] = { huff_iid_dt1, }; -static VLC vlc_ps[10]; +static const VLCElem *vlc_ps[10]; #define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH) \ /** \ @@ -77,7 +77,7 @@ static int read_ ## PAR ## _data(void *logctx, GetBitContext *gb, PSCommonContex int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \ { \ int b, num = ps->nr_ ## PAR ## _par; \ - const VLCElem *vlc_table = vlc_ps[table_idx].table; \ + const VLCElem *vlc_table = vlc_ps[table_idx]; \ if (dt) { \ int e_prev = e ? e - 1 : ps->num_env_old - 1; \ e_prev = FFMAX(e_prev, 0); \ @@ -289,16 +289,18 @@ err: } #define PS_INIT_VLC_STATIC(num, nb_bits, size) \ - VLC_INIT_STATIC(&vlc_ps[num], nb_bits, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ - ps_tmp[num].ps_bits, 1, 1, \ - ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, \ - size); + vlc_ps[num] = ff_vlc_init_tables(&state, nb_bits, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ + ps_tmp[num].ps_bits, 1, 1, \ + ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, 0); #define PS_VLC_ROW(name) \ { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } av_cold void ff_ps_init_common(void) { + static VLCElem vlc_buf[(1544 + 832 + 1024 + 1036) + + (544 + 544) + (32 + 32 + 32 + 32)]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); // Syntax initialization static const struct { const void *ps_codes, *ps_bits; From patchwork Tue Sep 26 22:17:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43965 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211589pzh; Tue, 26 Sep 2023 15:24:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGQdE11RmJUMFl3SnA+KGC7BKaUgyUrk+5vO0sPGuQNY+qH6KVqzE/JMIlyvCcWiB3iABvz X-Received: by 2002:ac2:4d8e:0:b0:500:b64e:4f40 with SMTP id g14-20020ac24d8e000000b00500b64e4f40mr88440lfe.41.1695767056732; Tue, 26 Sep 2023 15:24:16 -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 m11-20020a056402050b00b0052ed507d45esi11700663edv.111.2023.09.26.15.24.16; Tue, 26 Sep 2023 15:24:16 -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=c120PKLW; 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 4D48068CBAE; Wed, 27 Sep 2023 01:22:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2031.outbound.protection.outlook.com [40.92.50.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C533568CB24 for ; Wed, 27 Sep 2023 01:22:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ssj/XrmrGF2Y4aVrR9jDT21Og0T3Unt5M9HASsDJxgImDQQl25zPnugqYTULUR909fGQ5Uo94kkBBom3SXwE4jSYAjiU5qRuJUmp7kCIRUBtdHVBTfEC+mSZyjI9TxmQuf/bpfNRfZqsF/qm0MoaQ5QKlDAYTRqi4MxoGuh3mgzQUE4XQfFLvmWTuhAbYyI/dFlK7X8rrecaZ25Vxxu3/lwkTdpxv4NR17XEDiet2dUUH6/t2IcUauxqy5IMf7fg6R1iaZAR+eFr9zHgQG2dorLUKi11U0oLOGifeG7gWfEyJ412e1oIpDPNe0IhqHcFDk3az0rioRITR6suGV084Q== 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=wgJwOzTRE8URKWb67RVgCFjbhWzYsNA56UYn6b8Wxfs=; b=Oec5UT0re6imMXmTqyDI808vrWhzn+br3Pb7aY2ZA7NL23lmx4EirFLztrpMPYk1rA+Sm63ReNQGOj9PDVBzsRGIlfA+AFy+xDnLtz7Wz4uaygke0bV6PWipJfV28ilPrqNZyq9u6Ya3e+SkDCE9Rmazac+9MkgG/0oO5YQyRz0GuGN2uAGsrYR8IHLeH8hHPhQ9sWgIc4s4JMO0m+9mKczQAV7boQNnGqbKASrQzk3clYICbcmCaVQJqgxr/G99xiwiDqL2ReVmstFaYd2yr0S7pl29Pd6zylwp5O0dBZQhzc5dKRw0GuQe0kjYMZwE4HBBEXi5M8lxazP6a9DeWA== 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=wgJwOzTRE8URKWb67RVgCFjbhWzYsNA56UYn6b8Wxfs=; b=c120PKLWM0k+ueKfLYIf18Tn0j0IP4IMXSmc+tyG3THyRl/Urrddlx3ZcRPTUAJEGv9yNFPmLRSuYNj9vRdJ4xnQMDBRsPj+kqYY3NV78+Vaiaa9IjWYtVSV2D5wlznWKap43DKUxQvF1JFVvSyvKZ2HSObiqhictY67bw3o16qETmnP1hEKx2GHDveQcGs1VEDaz7hpKkClMESWbeG4m7KyUkvw1rdIGA+VUl2mhNYaOmaU07Zax007IAN7eZKWOo+ca+DV9/krwdLnkFD9urLwGtO2423T2dU/0E+DKGvyRMfLucJalcAAZW1nhrmlAJ+G/M55AD4f02jk4w0bpw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:32 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:25 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [0XIHKC+EULfTOWYKCSKIntpDoTqy9tQE] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-53-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 48516d83-0a4d-46d6-254e-08dbbedf1383 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PVMZ/PMCXQjCtXArYaIUsd3VHlrwmTuAN7pAuT2f4yWrNlxMGAH0yP+mcZY5DtaFEQkOoepc8d4TuyQNSLzb4XnG9vSiJV7ri5redC89E9QRmNRMeOWoSMQ2zs85JGrnM/2ZVee0lgQPVL+k5QRn5rmPJ6Ch9ayK+1uMndXSFB+m36m3a4NZaeiKl7+8D9qAA7+7zxMykKj18fccSskmY6Y5hIHiOnoF3W+T5qPl6sn4pdRarxrBQ4EPnL9kIQe3qGjbqMhrdUGMAwq84v3XN+jtzsxYq+JiXPTdw1QH9uOw9qgjgk8RQaLvV4aCmbslvYU6/+9YQIos8IGffNW9kMiUJZaqZvq6xn72CvRSGtsgFupeKfaAOmMXQnfVmEHt5DxhjDdMSL9eyuEQJvFHVlqXcjTChJ9h7kSeCjLPu4iRRRv9GqqV8D0I95KtltvKVt8QrTrhEUTd6JaWhkoQkQdMMn5kR0sehvMszgsFTOlZd4jncz2OyQWtjyMsyZNi0aIH39jSoQKhW0AGfvOi9aJCXXS+iBQt/LdZdGA+AiznUIIP4xRJ5o24CEJsgD7/UCBjvtftVkk19Rxf7P06eWrt/3ipWoGp2DJ6yP/w/TZRWZ/Tvejb8HFCehl+YxdT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Sg2wo8Z0TU1gV+EW0S9IV4dqujfCxZeO48eFtDmh//1DKdPzLo9ckczbBBdRP0Dts5idilqyFINW16LDWGNeWdljqk+gKs+x36NpP1QYcdLInRv+ZH2iwa8Fo3RgEleJ9SBPNmA0LO8mVgw6zjr3YDUadfxsl8y0NVeC2bie4t96cQhKSP1Y32/CxjxdAVmE1oIjPs+YUUq9z6uTK51C+R5Op7Op/FDiiUa0wH50Cp7FeLK3c9Pp4k2ZfdnznGKsGBw7jSm1NtGdA4hzeGqsTwOoXmdSKM0M/zSdk4bojqLoNUTN2NE9wU6fyEGKOLKFRoUmZrzymbsLsXTVRcWgCJxx7bHY1fe557wdPNdBWbkT704gpbUr7Mi50OuKllCR2O+g9KphzxDIoCJ3ulgXHBAg//Wu6nZhicc/U0hR3q3/IpwXL8H5ezd9um++kk7wP+CmSU155LKESLSF7RIShdcXtLCCqr/UFoDCLXNmfE4CjnZ7G9DF6XF9feYHOwbYH64zVq1vJ9mM2KS/ZQ3ql1xRCl85Y7gflj7HO4jFVZ/YusXicJYaulMpSTR+z+yvzDI4gwEJDBbFhG6GadPfAjNXSSphI15NnoBjIcinYO3cpXvcGOX3CYWvD1XEkMt/342eU2Vz6l5NfIkX6TSrmt5oDQQ7qLSBwpDQ++2noCZCpbdYY7lsCQNbJA+nXyJXl8JjFjflnZ1pQbry3VTJ/Gh1EazjGvIh2bxRIONahOM8qmsrPUVy0ziuqCGrt0bEmVLr9zBBvcgH1xd3bGM/2dC/z+GI7+kfwFH17ImopwBETksXd8gY8PbcFYPcvksarEpUzdu5DzeaysL1G7ee2ZMzBipjuQzVvG15y/0uFDsCboxfiAy65b6Jk6zBX0LGxmYsSp3ljB/pLFNzHcUGkfpRDbsdoDNdp9E62f9xHHQZNPGw4Au/stNvWCROmEGYBozm9PRZqE3sdSxVUbDfWPF4TPvj7RIDcEBX5y4L6bHUzBpy22uEGac0HOixfwhVu1pAf1wZ/TkAcM+O+WxuM4xVWYxsrkBbTmU5U89bUAsnovp7z/mVoQLF0IshWGWwjKoxp8wXGuWKfNSBZQkpiYWPHzYZmiHdDrLXQ1PJVRWLzKn1R7xSPVMIhtS6jWSZGlNcK81WXXcQkOMF+iWtNjMmYqcoFQ/2o6xQKGarsQvH3FHYmalvxeBaCASGOX5yW4+GcLWMKNvhITWwf+2WpXf6AG+JCEuH23cxH14tnRyubL2dt2yeQ+avx/YWoiam X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48516d83-0a4d-46d6-254e-08dbbedf1383 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:32.0010 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 54/61] avcodec/aacps_common: Switch to ff_vlc_init_tables_from_lengths() 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: hpzyDFO5Hgzs It allows to replace codes of type uint16_t or uint32_t by symbols of type uint8_t. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps_common.c | 28 ++---- libavcodec/aacpsdata.c | 204 +++++++++++++++++--------------------- 2 files changed, 102 insertions(+), 130 deletions(-) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index 281eaa12e7..653fc38da3 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -288,13 +288,8 @@ err: return bits_left; } -#define PS_INIT_VLC_STATIC(num, nb_bits, size) \ - vlc_ps[num] = ff_vlc_init_tables(&state, nb_bits, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ - ps_tmp[num].ps_bits, 1, 1, \ - ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, 0); - #define PS_VLC_ROW(name) \ - { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } + { name ## _tab, FF_ARRAY_ELEMS(name ## _tab) } av_cold void ff_ps_init_common(void) { @@ -303,8 +298,8 @@ av_cold void ff_ps_init_common(void) VLCInitState state = VLC_INIT_STATE(vlc_buf); // Syntax initialization static const struct { - const void *ps_codes, *ps_bits; - const unsigned int table_size, elem_size; + const uint8_t (*vlc_tab)[2]; + const unsigned int table_elems; } ps_tmp[] = { PS_VLC_ROW(huff_iid_df1), PS_VLC_ROW(huff_iid_dt1), @@ -318,14 +313,11 @@ av_cold void ff_ps_init_common(void) PS_VLC_ROW(huff_opd_dt), }; - PS_INIT_VLC_STATIC(0, 9, 1544); - PS_INIT_VLC_STATIC(1, 9, 832); - PS_INIT_VLC_STATIC(2, 9, 1024); - PS_INIT_VLC_STATIC(3, 9, 1036); - PS_INIT_VLC_STATIC(4, 9, 544); - PS_INIT_VLC_STATIC(5, 9, 544); - PS_INIT_VLC_STATIC(6, 5, 32); - PS_INIT_VLC_STATIC(7, 5, 32); - PS_INIT_VLC_STATIC(8, 5, 32); - PS_INIT_VLC_STATIC(9, 5, 32); + for (int i = 0; i < FF_ARRAY_ELEMS(vlc_ps); i++) { + vlc_ps[i] = + ff_vlc_init_tables_from_lengths(&state, i <= 5 ? 9 : 5, ps_tmp[i].table_elems, + &ps_tmp[i].vlc_tab[0][1], 2, + &ps_tmp[i].vlc_tab[0][0], 2, 1, + 0, 0); + } } diff --git a/libavcodec/aacpsdata.c b/libavcodec/aacpsdata.c index 7a1f490060..8241346b0d 100644 --- a/libavcodec/aacpsdata.c +++ b/libavcodec/aacpsdata.c @@ -19,118 +19,98 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -static const uint8_t huff_iid_df1_bits[] = { - 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 18, 17, 17, 16, 16, 15, 14, 14, - 13, 12, 12, 11, 10, 10, 8, 7, 6, 5, 4, 3, 1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 17, 18, 18, - 18, 18, 18, 18, 18, 18, 18, -}; - -static const uint32_t huff_iid_df1_codes[] = { - 0x01FEB4, 0x01FEB5, 0x01FD76, 0x01FD77, 0x01FD74, 0x01FD75, 0x01FE8A, - 0x01FE8B, 0x01FE88, 0x00FE80, 0x01FEB6, 0x00FE82, 0x00FEB8, 0x007F42, - 0x007FAE, 0x003FAF, 0x001FD1, 0x001FE9, 0x000FE9, 0x0007EA, 0x0007FB, - 0x0003FB, 0x0001FB, 0x0001FF, 0x00007C, 0x00003C, 0x00001C, 0x00000C, - 0x000000, 0x000001, 0x000001, 0x000002, 0x000001, 0x00000D, 0x00001D, - 0x00003D, 0x00007D, 0x0000FC, 0x0001FC, 0x0003FC, 0x0003F4, 0x0007EB, - 0x000FEA, 0x001FEA, 0x001FD6, 0x003FD0, 0x007FAF, 0x007F43, 0x00FEB9, - 0x00FE83, 0x01FEB7, 0x00FE81, 0x01FE89, 0x01FE8E, 0x01FE8F, 0x01FE8C, - 0x01FE8D, 0x01FEB2, 0x01FEB3, 0x01FEB0, 0x01FEB1, -}; - -static const uint8_t huff_iid_dt1_bits[] = { - 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 14, 14, 13, - 13, 13, 12, 12, 11, 10, 9, 9, 7, 6, 5, 3, 1, 2, 5, 6, 7, 8, - 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, -}; - -static const uint16_t huff_iid_dt1_codes[] = { - 0x004ED4, 0x004ED5, 0x004ECE, 0x004ECF, 0x004ECC, 0x004ED6, 0x004ED8, - 0x004F46, 0x004F60, 0x002718, 0x002719, 0x002764, 0x002765, 0x00276D, - 0x0027B1, 0x0013B7, 0x0013D6, 0x0009C7, 0x0009E9, 0x0009ED, 0x0004EE, - 0x0004F7, 0x000278, 0x000139, 0x00009A, 0x00009F, 0x000020, 0x000011, - 0x00000A, 0x000003, 0x000001, 0x000000, 0x00000B, 0x000012, 0x000021, - 0x00004C, 0x00009B, 0x00013A, 0x000279, 0x000270, 0x0004EF, 0x0004E2, - 0x0009EA, 0x0009D8, 0x0013D7, 0x0013D0, 0x0027B2, 0x0027A2, 0x00271A, - 0x00271B, 0x004F66, 0x004F67, 0x004F61, 0x004F47, 0x004ED9, 0x004ED7, - 0x004ECD, 0x004ED2, 0x004ED3, 0x004ED0, 0x004ED1, -}; - -static const uint8_t huff_iid_df0_bits[] = { - 17, 17, 17, 17, 16, 15, 13, 10, 9, 7, 6, 5, 4, 3, 1, 3, 4, 5, - 6, 6, 8, 11, 13, 14, 14, 15, 17, 18, 18, -}; - -static const uint32_t huff_iid_df0_codes[] = { - 0x01FFFB, 0x01FFFC, 0x01FFFD, 0x01FFFA, 0x00FFFC, 0x007FFC, 0x001FFD, - 0x0003FE, 0x0001FE, 0x00007E, 0x00003C, 0x00001D, 0x00000D, 0x000005, - 0x000000, 0x000004, 0x00000C, 0x00001C, 0x00003D, 0x00003E, 0x0000FE, - 0x0007FE, 0x001FFC, 0x003FFC, 0x003FFD, 0x007FFD, 0x01FFFE, 0x03FFFE, - 0x03FFFF, -}; - -static const uint8_t huff_iid_dt0_bits[] = { - 19, 19, 19, 20, 20, 20, 17, 15, 12, 10, 8, 6, 4, 2, 1, 3, 5, 7, - 9, 11, 13, 14, 17, 19, 20, 20, 20, 20, 20, -}; - -static const uint32_t huff_iid_dt0_codes[] = { - 0x07FFF9, 0x07FFFA, 0x07FFFB, 0x0FFFF8, 0x0FFFF9, 0x0FFFFA, 0x01FFFD, - 0x007FFE, 0x000FFE, 0x0003FE, 0x0000FE, 0x00003E, 0x00000E, 0x000002, - 0x000000, 0x000006, 0x00001E, 0x00007E, 0x0001FE, 0x0007FE, 0x001FFE, - 0x003FFE, 0x01FFFC, 0x07FFF8, 0x0FFFFB, 0x0FFFFC, 0x0FFFFD, 0x0FFFFE, - 0x0FFFFF, -}; - -static const uint8_t huff_icc_df_bits[] = { - 14, 14, 12, 10, 7, 5, 3, 1, 2, 4, 6, 8, 9, 11, 13, -}; - -static const uint16_t huff_icc_df_codes[] = { - 0x3FFF, 0x3FFE, 0x0FFE, 0x03FE, 0x007E, 0x001E, 0x0006, 0x0000, - 0x0002, 0x000E, 0x003E, 0x00FE, 0x01FE, 0x07FE, 0x1FFE, -}; - -static const uint8_t huff_icc_dt_bits[] = { - 14, 13, 11, 9, 7, 5, 3, 1, 2, 4, 6, 8, 10, 12, 14, -}; - -static const uint16_t huff_icc_dt_codes[] = { - 0x3FFE, 0x1FFE, 0x07FE, 0x01FE, 0x007E, 0x001E, 0x0006, 0x0000, - 0x0002, 0x000E, 0x003E, 0x00FE, 0x03FE, 0x0FFE, 0x3FFF, -}; - -static const uint8_t huff_ipd_df_bits[] = { - 1, 3, 4, 4, 4, 4, 4, 4, -}; - -static const uint8_t huff_ipd_df_codes[] = { - 0x01, 0x00, 0x06, 0x04, 0x02, 0x03, 0x05, 0x07, -}; - -static const uint8_t huff_ipd_dt_bits[] = { - 1, 3, 4, 5, 5, 4, 4, 3, -}; - -static const uint8_t huff_ipd_dt_codes[] = { - 0x01, 0x02, 0x02, 0x03, 0x02, 0x00, 0x03, 0x03, -}; - -static const uint8_t huff_opd_df_bits[] = { - 1, 3, 4, 4, 5, 5, 4, 3, -}; - -static const uint8_t huff_opd_df_codes[] = { - 0x01, 0x01, 0x06, 0x04, 0x0F, 0x0E, 0x05, 0x00, -}; - -static const uint8_t huff_opd_dt_bits[] = { - 1, 3, 4, 5, 5, 4, 4, 3, -}; - -static const uint8_t huff_opd_dt_codes[] = { - 0x01, 0x02, 0x01, 0x07, 0x06, 0x00, 0x02, 0x03, +#include + +static const uint8_t huff_iid_df1_tab[][2] = { + /* huff_iid_df1 - 61 entries */ + { 28, 4 }, { 32, 4 }, { 29, 3 }, { 31, 3 }, { 27, 5 }, + { 33, 5 }, { 26, 6 }, { 34, 6 }, { 25, 7 }, { 35, 7 }, + { 24, 8 }, { 36, 8 }, { 37, 9 }, { 40, 11 }, { 19, 12 }, + { 41, 12 }, { 22, 10 }, { 38, 10 }, { 9, 17 }, { 51, 17 }, + { 11, 17 }, { 49, 17 }, { 13, 16 }, { 47, 16 }, { 16, 14 }, + { 18, 13 }, { 42, 13 }, { 44, 14 }, { 12, 17 }, { 48, 17 }, + { 4, 18 }, { 5, 18 }, { 2, 18 }, { 3, 18 }, { 15, 15 }, + { 21, 11 }, { 39, 11 }, { 45, 15 }, { 8, 18 }, { 52, 18 }, + { 6, 18 }, { 7, 18 }, { 55, 18 }, { 56, 18 }, { 53, 18 }, + { 54, 18 }, { 17, 14 }, { 43, 14 }, { 59, 18 }, { 60, 18 }, + { 57, 18 }, { 58, 18 }, { 0, 18 }, { 1, 18 }, { 10, 18 }, + { 50, 18 }, { 14, 16 }, { 46, 16 }, { 20, 12 }, { 23, 10 }, + { 30, 1 }, +}; + +static const uint8_t huff_iid_dt1_tab[][2] = { + /* huff_iid_dt1 - 61 entries */ + { 31, 2 }, { 26, 7 }, { 34, 7 }, { 27, 6 }, { 33, 6 }, + { 35, 8 }, { 24, 9 }, { 36, 9 }, { 39, 11 }, { 41, 12 }, + { 9, 15 }, { 10, 15 }, { 48, 15 }, { 49, 15 }, { 17, 13 }, + { 23, 10 }, { 37, 10 }, { 43, 13 }, { 11, 15 }, { 12, 15 }, + { 4, 16 }, { 56, 16 }, { 2, 16 }, { 3, 16 }, { 59, 16 }, + { 60, 16 }, { 57, 16 }, { 58, 16 }, { 0, 16 }, { 1, 16 }, + { 5, 16 }, { 55, 16 }, { 6, 16 }, { 54, 16 }, { 13, 15 }, + { 15, 14 }, { 20, 12 }, { 40, 12 }, { 22, 11 }, { 38, 11 }, + { 45, 14 }, { 47, 15 }, { 7, 16 }, { 53, 16 }, { 18, 13 }, + { 42, 13 }, { 16, 14 }, { 44, 14 }, { 8, 16 }, { 52, 16 }, + { 14, 15 }, { 46, 15 }, { 50, 16 }, { 51, 16 }, { 19, 13 }, + { 21, 12 }, { 25, 9 }, { 28, 5 }, { 32, 5 }, { 29, 3 }, + { 30, 1 }, +}; + +static const uint8_t huff_iid_df0_tab[][2] = { + /* huff_iid_df0 - 29 entries */ + { 14, 1 }, { 15, 3 }, { 13, 3 }, { 16, 4 }, { 12, 4 }, + { 17, 5 }, { 11, 5 }, { 10, 6 }, { 18, 6 }, { 19, 6 }, + { 9, 7 }, { 20, 8 }, { 8, 9 }, { 7, 10 }, { 21, 11 }, + { 22, 13 }, { 6, 13 }, { 23, 14 }, { 24, 14 }, { 5, 15 }, + { 25, 15 }, { 4, 16 }, { 3, 17 }, { 0, 17 }, { 1, 17 }, + { 2, 17 }, { 26, 17 }, { 27, 18 }, { 28, 18 }, +}; + +static const uint8_t huff_iid_dt0_tab[][2] = { + /* huff_iid_dt0 - 29 entries */ + { 14, 1 }, { 13, 2 }, { 15, 3 }, { 12, 4 }, { 16, 5 }, + { 11, 6 }, { 17, 7 }, { 10, 8 }, { 18, 9 }, { 9, 10 }, + { 19, 11 }, { 8, 12 }, { 20, 13 }, { 21, 14 }, { 7, 15 }, + { 22, 17 }, { 6, 17 }, { 23, 19 }, { 0, 19 }, { 1, 19 }, + { 2, 19 }, { 3, 20 }, { 4, 20 }, { 5, 20 }, { 24, 20 }, + { 25, 20 }, { 26, 20 }, { 27, 20 }, { 28, 20 }, +}; + +static const uint8_t huff_icc_df_tab[][2] = { + /* huff_icc_df - 15 entries */ + { 7, 1 }, { 8, 2 }, { 6, 3 }, { 9, 4 }, { 5, 5 }, + { 10, 6 }, { 4, 7 }, { 11, 8 }, { 12, 9 }, { 3, 10 }, + { 13, 11 }, { 2, 12 }, { 14, 13 }, { 1, 14 }, { 0, 14 }, +}; + +static const uint8_t huff_icc_dt_tab[][2] = { + /* huff_icc_dt - 15 entries */ + { 7, 1 }, { 8, 2 }, { 6, 3 }, { 9, 4 }, { 5, 5 }, + { 10, 6 }, { 4, 7 }, { 11, 8 }, { 3, 9 }, { 12, 10 }, + { 2, 11 }, { 13, 12 }, { 1, 13 }, { 0, 14 }, { 14, 14 }, +}; + +static const uint8_t huff_ipd_df_tab[][2] = { + /* huff_ipd_df - 8 entries */ + { 1, 3 }, { 4, 4 }, { 5, 4 }, { 3, 4 }, { 6, 4 }, + { 2, 4 }, { 7, 4 }, { 0, 1 }, +}; + +static const uint8_t huff_ipd_dt_tab[][2] = { + /* huff_ipd_dt - 8 entries */ + { 5, 4 }, { 4, 5 }, { 3, 5 }, { 2, 4 }, { 6, 4 }, + { 1, 3 }, { 7, 3 }, { 0, 1 }, +}; + +static const uint8_t huff_opd_df_tab[][2] = { + /* huff_opd_df - 8 entries */ + { 7, 3 }, { 1, 3 }, { 3, 4 }, { 6, 4 }, { 2, 4 }, + { 5, 5 }, { 4, 5 }, { 0, 1 }, +}; + +static const uint8_t huff_opd_dt_tab[][2] = { + /* huff_opd_dt - 8 entries */ + { 5, 4 }, { 2, 4 }, { 6, 4 }, { 4, 5 }, { 3, 5 }, + { 1, 3 }, { 7, 3 }, { 0, 1 }, }; static const int8_t huff_offset[] = { From patchwork Tue Sep 26 22:17:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43966 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211665pzh; Tue, 26 Sep 2023 15:24:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFn1mZPDF6/9NanrH+H69Nz4pkqVoEVZzFMrqIdKeVx6MjDxpTDe1ZhkPZS2mXNUJ6cWxu+ X-Received: by 2002:a17:906:1096:b0:9a1:c370:1af2 with SMTP id u22-20020a170906109600b009a1c3701af2mr68749eju.3.1695767065958; Tue, 26 Sep 2023 15:24:25 -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 n2-20020a170906840200b009925144d755si12335134ejx.461.2023.09.26.15.24.25; Tue, 26 Sep 2023 15:24:25 -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=XEsKFx74; 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 56F0868CBB8; Wed, 27 Sep 2023 01:22:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2061.outbound.protection.outlook.com [40.92.50.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A03468CB43 for ; Wed, 27 Sep 2023 01:22:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NPYpoPp2hwQFufocEFimsWnbTvEzo+729qtRzirkPCL/tIpsQHO6mYZgnstCOJsGp63tXSLA57J87iw4NhSZRndMb/d1WMrfW/3+Wz96IQ5HJ9G5yfyK8uENhgf/z6diZnW3sV6kbI/QrIqRgiuzlXkkwlOSuhUvv9JIY7LjcovD3e0aMH7vqSG9EfU9cMbKoTSkU6qul4grSPF6MXnoR1rLfDTAAA/SOo1KldbDORe2boq5VXy++1ReRD2Fg4EDk864KMFKyLbkurjRycbIzhNLiBQURer2ucvte6/wasYKA4GB/Bfz6FWY4IMeo72+huv1VJx820Jm+0fIn5mpqg== 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=IFWmpTBactP0yLlxHwd3tUK6MkoLpAoAyMUFrwBLxJg=; b=SjHcKv04+IAXx6XuGUnMy77KWZ4vTw8JDpKnvQk5AwFIKMjli4otNh+kwOX0ypzg1PPQh5zkvJvFThJVkOIfM9EhKfG/q3IztYEqeVt9Y2lDqUxEqEIZmYDnQeMKlvWSjjqwYxX79vaZPSvf2AEZdw//JjMgTgFmH7tDsyI27gsF3C03/sn5BE0WZoGSZlypzXUL17cRb3nSZLZjcVPk06Rq55E025Gyy8mKrIFTOVZRko3X6gIgGUtB1bJT8rICPF+71v8TP68UIdmXo8JKF6IXUBW+xyiFOlruv0ODPQR2B9wKAesoBkPspcCN+gWt1ldJwz5q2BthlvYTVJf6Zg== 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=IFWmpTBactP0yLlxHwd3tUK6MkoLpAoAyMUFrwBLxJg=; b=XEsKFx74In1AZ4PFkXXTkdXDD3J6SM6QTihqvcWPQYHYB01phDdjPR2MPrjqH+9U+Idkm9WQcZ5x9izcJbpmTiYQslk8IHw/FNOSSQalsHFkEadB+/wmZHkr5ZOrkKJd6XpaxuOo6mugQaCIXTGq7rJEfJYQk47ENqKdG/IU6YLJw7aX5oVQZBf10DmNJ4/3Y7gyVbGSjIOoRYJMWoAfparnZxuAFKzclvyg7gEe/8Er3Cl8qJqyFlu66YZ210IqbPsXAwjQDDvu6hLWTWgiLX0F91cJwH5vlH+M4kLP2MVJWiwZINw90AA/cAxdex6V3obMjmOq7jhwGmMymZvxKQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:39 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:26 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [MP4FRElBvJZ8Bvga7BRVi9tdBKZw7yeh] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-54-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 953cb78c-525e-4f51-bb02-08dbbedf17c4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jqsUFmWajgSc8OTv/i5aE1NuJfpTDq7Sjl4LJEL7eH6F37OZjZ0F1v/8+JFodMnbOUmv+T/piq3Q6pX0J9AYtKo6pGdJm4wfPXUv/oNy/O+S/Mo55ua8wuW0A+nhW4X2eYJd/xLP+XencNJS+DYqB6ORdnAd6KthEceE3LzA1esOM3CL5jwRhCoNpdHQYcHT2a1RCsKvMPRoTtUg19IYUJN26tGvl3RWMmRA8gYdoe17fcRo6+YfNtzZn1xJSNiJ46st+W9algM0PkfOjasoXTesJfSBUwRtK63OFC+Yf4vJ6WCbU/XS0EunLx0ZCoUAvvd2YF3bsR5tJUo7wKelPUFhx33sefvqki/X87O8HW8rEah19jnOXrcJYzV6D7LQmDweVSM6tVL2BGQzjsVY3NDZLP4REbHBs+msGC7AdTx42OWuTRfAtdO8glMU/VM20c07yz8a9Zqf8DWZnshaFZ80vD2KJLLlvN/VSA2lrmbw5okxzyVO6ptQeMBzyoIBIT5z60e6DCUqyuJsSziCQOWGmryiHE/TcN9RSmcWJDbx+4UnpqUz4rU2RI4mPkz7PI6UkY3U5X1WeYL2dPwmoXWPIuhS1qAQBfrH72Zk+cJOZiNGisGcz+wmGhWwuyfa X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Fid5gISje3gom1IZoc1IjpSIaRYb3f6s/Ne5/wnLXznvF+HzLt4IWlj7nHrh4zajfmhO6uHLTNveC27UtTXdpvhLcj4OgA6jyXPJi1JMZGJblE/4zEZvYcgvwwCLHiRckOumJbZLRxvDzdUaeAtYT/coO8EFGRsLuMtxsvZ/8wl8I2uvbwXgjhNAg1UjygMckQrhiBvAIGc+CLMvwB9vT6Dthf4QSH0qKtyQhGT0Og6OG58PIfr/NdS0PvgjlFM+Ap1WFBOVPSLXLORS2taNFvFpvuFqET3IbcLJQYZeilPsbzldlmJb8zs5Xn3agjshIwiyca3wBpaRpgHFH5/0i/pRUbzfChxKLKunNJ69004qtWTAK/YBmsQq+KR1ZBa5mgDNdIgWswXuFVHKUx+7PScCCBc+p+m3UnP3v602S9kT1Q55ngW/ukIZvVFT9wY1ZgsXDO4jme33Dhg24cg/P2K/tTEire+m3Ni96WIa0vqiPJPG+f943EPJP2oDBiJbTFq5hHRHZDdB2fNQyn6+18lxj/kBwW5XRah5t9tPPrHlpnsaRcGRIl4XUnmUTFOw0s7eZbG5B8uK8CI91SwZfI9x26mLb9VWTQsYQjyImycvzOwZTSAT7Iyu3dnKNXEGF1vzOo2CLzuSKiR5BfpoW2PULAmcphn7JsIOwT1HDJljtuUjkqjT2xK2KlxV0mhszcEWMvRxlpaHf1j4W4kQoChc9kfE7Ua2QKIthDnZ5I7w+1JYFOZG2eCi4z6/wIaWybq8NCCUV2uHV38gbae/MngZn8MNrZrzTqT/9ald6C5dj3pmkDm8M7J5N3G4q042xdDY0Wxmz/U3VUnfX+TF/+FWmYx1Psc6jelp7spiD8XTq0Fj0e5mUIMX4VKhahxmT6HokYlD4zCKkZf7QoU1uNubFJCNher2z8BGp7iAFYZdoYXiNo0evY0Svglof2ghRWxTKQ22635pbSEELiSTzmwjKjw/Z6M/CW+nBg06pYNPl7Hrzy1VIu+PFwHvI0geajsyHBIbzzm94HNmUyz9VpyjJA1HV7oATBXqj0DLQJq1rI9NBkPD9ct7CrWWXX0ccF96gmu3SWT5jgjpNGasO5n2qdQx4svWnpu438XFJO9WdcPdgA2qENFTB6/Kmcq884wNmqNBTqYrTgTSKV5f9+f+APfalMJoNsli15Yl/izZMSa6umViTdIdoDLooEwZ/WlLjydaPwWQjdTYwnZCrSaFd710QO3AkAV8Ma4d3UFwrnBfcFZt6CC+EIj6sdEw X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 953cb78c-525e-4f51-bb02-08dbbedf17c4 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:39.1409 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 55/61] avcodec/aacps_common: Combine huffman tabels 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: jmcxnRB7uSx3 This allows to avoid the relocations inherent in an array to individual tables; it also reduces padding. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps_common.c | 27 +++++---------------------- libavcodec/aacpsdata.c | 31 +++---------------------------- 2 files changed, 8 insertions(+), 50 deletions(-) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index 653fc38da3..7a83cbd7d6 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -288,36 +288,19 @@ err: return bits_left; } -#define PS_VLC_ROW(name) \ - { name ## _tab, FF_ARRAY_ELEMS(name ## _tab) } - av_cold void ff_ps_init_common(void) { static VLCElem vlc_buf[(1544 + 832 + 1024 + 1036) + (544 + 544) + (32 + 32 + 32 + 32)]; VLCInitState state = VLC_INIT_STATE(vlc_buf); - // Syntax initialization - static const struct { - const uint8_t (*vlc_tab)[2]; - const unsigned int table_elems; - } ps_tmp[] = { - PS_VLC_ROW(huff_iid_df1), - PS_VLC_ROW(huff_iid_dt1), - PS_VLC_ROW(huff_iid_df0), - PS_VLC_ROW(huff_iid_dt0), - PS_VLC_ROW(huff_icc_df), - PS_VLC_ROW(huff_icc_dt), - PS_VLC_ROW(huff_ipd_df), - PS_VLC_ROW(huff_ipd_dt), - PS_VLC_ROW(huff_opd_df), - PS_VLC_ROW(huff_opd_dt), - }; + const uint8_t (*tab)[2] = aacps_huff_tabs; for (int i = 0; i < FF_ARRAY_ELEMS(vlc_ps); i++) { vlc_ps[i] = - ff_vlc_init_tables_from_lengths(&state, i <= 5 ? 9 : 5, ps_tmp[i].table_elems, - &ps_tmp[i].vlc_tab[0][1], 2, - &ps_tmp[i].vlc_tab[0][0], 2, 1, + ff_vlc_init_tables_from_lengths(&state, i <= 5 ? 9 : 5, huff_sizes[i], + &tab[0][1], 2, + &tab[0][0], 2, 1, 0, 0); + tab += huff_sizes[i]; } } diff --git a/libavcodec/aacpsdata.c b/libavcodec/aacpsdata.c index 8241346b0d..6885b386c0 100644 --- a/libavcodec/aacpsdata.c +++ b/libavcodec/aacpsdata.c @@ -21,7 +21,9 @@ #include -static const uint8_t huff_iid_df1_tab[][2] = { +static const uint8_t huff_sizes[] = { 61, 61, 29, 29, 15, 15, 8, 8, 8, 8 }; + +static const uint8_t aacps_huff_tabs[][2] = { /* huff_iid_df1 - 61 entries */ { 28, 4 }, { 32, 4 }, { 29, 3 }, { 31, 3 }, { 27, 5 }, { 33, 5 }, { 26, 6 }, { 34, 6 }, { 25, 7 }, { 35, 7 }, @@ -36,9 +38,6 @@ static const uint8_t huff_iid_df1_tab[][2] = { { 57, 18 }, { 58, 18 }, { 0, 18 }, { 1, 18 }, { 10, 18 }, { 50, 18 }, { 14, 16 }, { 46, 16 }, { 20, 12 }, { 23, 10 }, { 30, 1 }, -}; - -static const uint8_t huff_iid_dt1_tab[][2] = { /* huff_iid_dt1 - 61 entries */ { 31, 2 }, { 26, 7 }, { 34, 7 }, { 27, 6 }, { 33, 6 }, { 35, 8 }, { 24, 9 }, { 36, 9 }, { 39, 11 }, { 41, 12 }, @@ -53,9 +52,6 @@ static const uint8_t huff_iid_dt1_tab[][2] = { { 14, 15 }, { 46, 15 }, { 50, 16 }, { 51, 16 }, { 19, 13 }, { 21, 12 }, { 25, 9 }, { 28, 5 }, { 32, 5 }, { 29, 3 }, { 30, 1 }, -}; - -static const uint8_t huff_iid_df0_tab[][2] = { /* huff_iid_df0 - 29 entries */ { 14, 1 }, { 15, 3 }, { 13, 3 }, { 16, 4 }, { 12, 4 }, { 17, 5 }, { 11, 5 }, { 10, 6 }, { 18, 6 }, { 19, 6 }, @@ -63,9 +59,6 @@ static const uint8_t huff_iid_df0_tab[][2] = { { 22, 13 }, { 6, 13 }, { 23, 14 }, { 24, 14 }, { 5, 15 }, { 25, 15 }, { 4, 16 }, { 3, 17 }, { 0, 17 }, { 1, 17 }, { 2, 17 }, { 26, 17 }, { 27, 18 }, { 28, 18 }, -}; - -static const uint8_t huff_iid_dt0_tab[][2] = { /* huff_iid_dt0 - 29 entries */ { 14, 1 }, { 13, 2 }, { 15, 3 }, { 12, 4 }, { 16, 5 }, { 11, 6 }, { 17, 7 }, { 10, 8 }, { 18, 9 }, { 9, 10 }, @@ -73,41 +66,23 @@ static const uint8_t huff_iid_dt0_tab[][2] = { { 22, 17 }, { 6, 17 }, { 23, 19 }, { 0, 19 }, { 1, 19 }, { 2, 19 }, { 3, 20 }, { 4, 20 }, { 5, 20 }, { 24, 20 }, { 25, 20 }, { 26, 20 }, { 27, 20 }, { 28, 20 }, -}; - -static const uint8_t huff_icc_df_tab[][2] = { /* huff_icc_df - 15 entries */ { 7, 1 }, { 8, 2 }, { 6, 3 }, { 9, 4 }, { 5, 5 }, { 10, 6 }, { 4, 7 }, { 11, 8 }, { 12, 9 }, { 3, 10 }, { 13, 11 }, { 2, 12 }, { 14, 13 }, { 1, 14 }, { 0, 14 }, -}; - -static const uint8_t huff_icc_dt_tab[][2] = { /* huff_icc_dt - 15 entries */ { 7, 1 }, { 8, 2 }, { 6, 3 }, { 9, 4 }, { 5, 5 }, { 10, 6 }, { 4, 7 }, { 11, 8 }, { 3, 9 }, { 12, 10 }, { 2, 11 }, { 13, 12 }, { 1, 13 }, { 0, 14 }, { 14, 14 }, -}; - -static const uint8_t huff_ipd_df_tab[][2] = { /* huff_ipd_df - 8 entries */ { 1, 3 }, { 4, 4 }, { 5, 4 }, { 3, 4 }, { 6, 4 }, { 2, 4 }, { 7, 4 }, { 0, 1 }, -}; - -static const uint8_t huff_ipd_dt_tab[][2] = { /* huff_ipd_dt - 8 entries */ { 5, 4 }, { 4, 5 }, { 3, 5 }, { 2, 4 }, { 6, 4 }, { 1, 3 }, { 7, 3 }, { 0, 1 }, -}; - -static const uint8_t huff_opd_df_tab[][2] = { /* huff_opd_df - 8 entries */ { 7, 3 }, { 1, 3 }, { 3, 4 }, { 6, 4 }, { 2, 4 }, { 5, 5 }, { 4, 5 }, { 0, 1 }, -}; - -static const uint8_t huff_opd_dt_tab[][2] = { /* huff_opd_dt - 8 entries */ { 5, 4 }, { 2, 4 }, { 6, 4 }, { 4, 5 }, { 3, 5 }, { 1, 3 }, { 7, 3 }, { 0, 1 }, From patchwork Tue Sep 26 22:17:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43967 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211728pzh; Tue, 26 Sep 2023 15:24:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFfvF1i2CPJqGKEFwVe2oCqlAzlDO9gU4jOKzna/k+Lavk0SoxwXSLgf3GjzjZB9LiISJvY X-Received: by 2002:a17:906:51c7:b0:9ad:e41c:e9c4 with SMTP id v7-20020a17090651c700b009ade41ce9c4mr46542ejk.4.1695767074240; Tue, 26 Sep 2023 15:24:34 -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 lv27-20020a170906bc9b00b009ad7dcecf03si12106511ejb.327.2023.09.26.15.24.33; Tue, 26 Sep 2023 15:24:34 -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=DwJsw2Mb; 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 6C8B368C98A; Wed, 27 Sep 2023 01:22:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2101.outbound.protection.outlook.com [40.92.58.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 398A168CBB0 for ; Wed, 27 Sep 2023 01:22:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DURrqqxOkFxc2jT5DHShOw43kIDLjdnW0CymZCQsna5NRarbMZAARBh8W/v7jgVakQo/e7aWo2RAl/GvTuLPp303y9FEPtcLHXNHTPsaL/TQAAsTTidXucoOUihzMWtMtQ/cF2HOQeK7bvXBvGBR6MTTH6GkRVnPMTJNp9x1SD8piufIeEClmcdNjP/Ds4PGoRBdThlXIp9eF1TIjxsFbmueY+FjQ37Q35nA4lCdEN/97e3DKmdMkPL+H9kPg9pljqYjkirqzx2rQAAfEr+kVUSes4st/5TrFDxGH7h+nSRn46DXHu/KTRgQU1SPlDqAmiXgmreA7VI+ifOAd1oBKw== 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=Fzkyem15prfH5PNSUxBMRj+ytUv+RqEfXrD0SsTiCNU=; b=iI/LFmoEkFrSJpm6tdw5tnYvlR0E1paNt3HuT/3wbSxfH9XWalLiZTvPP2DKGHkclUTaaOVYxdqXFExTBEL1gxpEIzK17x97oSLwYyaURkgcAWy5zqBbHrAiFS0Z0bn/ICQyvVbaoPO6y9U7JvtUMdN9kbpe704j7eqj0MtsAL2Yq2xMAwrQcuWOZxEQ+tNzeAhi2Gs2YwYua7/6LRIW27spkoU4HHlxI6SF6kQaYKU4JYx6O3NnDv8hSdjp11bZ3ch6r4L8hmtJ1gSTUN1pctkQFCMwImXRHYNogOXTn9j162ugaTtX/Wgi+Av+aqvFhqL+uU/gz4vpsgZRm5FACg== 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=Fzkyem15prfH5PNSUxBMRj+ytUv+RqEfXrD0SsTiCNU=; b=DwJsw2MbqlaIzE3GQa8yqIkrlDpCx+pOrFmzdJPRcSFq7eXow2qHVuv0mLDp+SsPnYbFM5JPyrx8vWd5VlexUg8A77qgCbUZ4lNlInM3eNJJNSCxNsoX8PdcH/RT479c8QyKw3FCfVt1vKU0FLZkf8hvpVmeCbb7tzPMQLhPfgmkei4eq+47iH6INbzX/z2yuOWoBhtuMosnxofxkgpyC5ZE5buR4hBpEsR1IE0XyuqciQdTc4jnGxypr7ieao2JMyXWU37hHUCzfABjUcx/Ca4YgmQyjNRMjHfkaoTGSwo2f9MViY+RJbn9liVgYwI9T5YaBriOv2dP8PEJg8b0TQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:46 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:46 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:27 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [JbY8nVRtc5Sp97oPgNrMiIMUfsuiRJCh] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-55-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: a98a256f-eb3c-40ec-2354-08dbbedf1c3d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5hspINZ2A0zPJBZUs75HLThBaWHs/LdNDgJxXSRI4V4daBxM/sKe1oM0e4neF3zsf7qB7Dhh70c3IrA5KE157LTQy54pPtPzIqqE35jOc07S/4PPW+15H9p0bOErFvgOSEJxMjPxlQ+RJb8RUwaSl1dCUd/IGSA8DHo8CcIc+IItXKP5Gi8DKgwiVl/Y1iT4SR3zgo3uBoA66voz/lCBwIPHCsGnT/b2oyRXQnHHzZ9EjJlIvXzDY3mK7aOWQHrwQ+jhATlujC/7Eqdsc9XR/0q6KHEnzD3rf634pvT72ZKpr52VZan5UX0ficjKA4Esvu5vvRn2Fl5ge8biXPQY5P65CGsYsQAtzfeuTLJ1q9ROH1on+zN/lFDdHls9VNvGr9oMjfGom4pnvwtAhjCyG2u/0JTIgpo1w47Q0NwI9w4DbWEphWEezF626nDiyp71tRYyNoOPoCDZyxf61VQc/bXXuGA4pVzQP1JtbXstg8g3jSpeckygwO4bzMJsIO2SLRJCpofM5vwUszzRfzQcSGdHNNcT9FLjaekbrmaUdvX9j7iSq1NYnchgZm/RMIU6sxT+sxQoef/5rbbSGHuPz2w2HzibfyBbkyIy7Qht0qWWfDCgx1/Xe7oJdFqng68p X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x5bSvUuk4bafsvAg73P7jtxoRZh5/oVeay+5ilwx8oAkCG4Xq0tp3UuFCDtpANuOvo24KqzUGeXNAoS/shyhydIkBWO/AeihwX6NpAoAxxM9qjHMxuijlT8YErbf7SMamUqifvFAdBlnoyljVDrsnm6W58eqZCWcLdQKUayM21Vk6lHeGv7So+YO7PQvP59lCCKStCnaN0MR6mXzxkPr3wxGDXZ13Iu5kChcAYK14g/9S2VuWn7+/aU0HxZGoxSnLeMzjgxzeYW1/d89GqOhtlRTYvxeK1jpc/gOS5ZQf4UHVQf2H4pjRe3rxNAjVmsFQ7vbFBRGNAGKoYpmi/PGmrAf2SBg/kqfc8fGphihbjViYE+B+eR+M402B/6n4CW7g49YbR2CREkukN2YhJ5Q0Ao828cpss+ilFtxiX+/ixyZWzBIKN3bY3N19lx2/ScPYO75SjYON3phZlG9m9rF61BCuJRmOIf9w1J6x1tVUJv0hw7wsDlVEBJ5BSr2vZ/Dj+maiVphxZFUysREPC1BH+1IQ8npyNTLpbz2xa3H2shVfj1wBh/FmSLCKEfuU7F/kJQeUZe6m+4V3QUeLoZ4hB2eRH1+lNzBYQPuPsdbVP0WTYkEsYXSl9weOYF39TuoaKfMfI/CBiHzLkoMj9kMw8JmSH5TIGraDkJlIYSRFQhfMQxokhO2A8Dq/PdFKXaIcnOF0wxi0IYD0LyvQxiXlPd9lxo/R6dQ04cRw3kWAbq+J0Zp3P06Ypzsny++3Aroj1vAIFKWqqU1XCSCLh852bOeulZli391rjtdkwdfWpVOMaTMukeS8C8ykfX5p1T1JmMNvmQRtqJwzdFgPok0qOXmw9YljtOrVAy5AnxzfFP6bZnxBHcDeod0ZO+2SEQweGIfKwfbwXajazv5pl7Zhd7Og0KfUNwRRnPv3FNBY3xFk/BfRDsq4Im1DfdbfzxmTDjjsRTaG05NLPbYT4Y/ydGO4jfiMpk5FqNZTxlSfZNup3dYCvRHzVh+pL5DDPCeWBetDMuGWQSeiJ7QAna7bzgNRudZ8/QDQ0KAAGulqWoYuO4SXs8F9oh9+qlPUtnHzUBgAC0tVVgxg8EW01pfYA/aqC4ggZf/l1k2WrKiCE6/4+YnuCdCfxi44y9j0Cmmuq4JNivmvfRWM2da7hfW7XiodNjyWwXuhaLntS7JfuTOq6P0Jbjdynct0UCw0fpx+1AdFW0tBsMBI5tvoYojnv54fkrt4YV+rDX9Wr6nGhYaKYuHCC5tWcY+2+euv+Zk X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a98a256f-eb3c-40ec-2354-08dbbedf1c3d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:46.6051 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 56/61] avcodec/aacps_common: Apply offset for VLCs during init 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: x+0LtFL/SPCz This avoids having to apply it later after every get_vlc2(). Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps_common.c | 14 +++++++------- libavcodec/aacpsdata.c | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index 7a83cbd7d6..74fa005aaf 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -60,7 +60,7 @@ static const int huff_iid[] = { static const VLCElem *vlc_ps[10]; -#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH) \ +#define READ_PAR_DATA(PAR, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH) \ /** \ * Read Inter-channel Intensity Difference/Inter-Channel Coherence/ \ * Inter-channel Phase Difference/Overall Phase Difference parameters from the \ @@ -82,7 +82,7 @@ static int read_ ## PAR ## _data(void *logctx, GetBitContext *gb, PSCommonContex int e_prev = e ? e - 1 : ps->num_env_old - 1; \ e_prev = FFMAX(e_prev, 0); \ for (b = 0; b < num; b++) { \ - int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \ + int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH); \ if (MASK) val &= MASK; \ PAR[e][b] = val; \ if (ERR_CONDITION) \ @@ -91,7 +91,7 @@ static int read_ ## PAR ## _data(void *logctx, GetBitContext *gb, PSCommonContex } else { \ int val = 0; \ for (b = 0; b < num; b++) { \ - val += get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \ + val += get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH); \ if (MASK) val &= MASK; \ PAR[e][b] = val; \ if (ERR_CONDITION) \ @@ -104,9 +104,9 @@ err: \ return AVERROR_INVALIDDATA; \ } -READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant, 9, 3) -READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U, 9, 2) -READ_PAR_DATA(ipdopd, 0, 0x07, 0, 5, 1) +READ_PAR_DATA(iid, 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant, 9, 3) +READ_PAR_DATA(icc, 0, ps->icc_par[e][b] > 7U, 9, 2) +READ_PAR_DATA(ipdopd, 0x07, 0, 5, 1) static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps, int ps_extension_id) @@ -300,7 +300,7 @@ av_cold void ff_ps_init_common(void) ff_vlc_init_tables_from_lengths(&state, i <= 5 ? 9 : 5, huff_sizes[i], &tab[0][1], 2, &tab[0][0], 2, 1, - 0, 0); + huff_offset[i], 0); tab += huff_sizes[i]; } } diff --git a/libavcodec/aacpsdata.c b/libavcodec/aacpsdata.c index 6885b386c0..8c79a154e2 100644 --- a/libavcodec/aacpsdata.c +++ b/libavcodec/aacpsdata.c @@ -89,9 +89,9 @@ static const uint8_t aacps_huff_tabs[][2] = { }; static const int8_t huff_offset[] = { - 30, 30, - 14, 14, - 7, 7, + -30, -30, + -14, -14, + -7, -7, 0, 0, 0, 0, }; From patchwork Tue Sep 26 22:17:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43949 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211783pzh; Tue, 26 Sep 2023 15:24:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFYS/RpTw8vNaQlvzSimzbUknf6im2gR8NuyUbiKFci9rwUqe0+jEbsrB4EEoQV7Eoiu6pq X-Received: by 2002:a17:906:32d0:b0:9ae:690d:4282 with SMTP id k16-20020a17090632d000b009ae690d4282mr50412ejk.18.1695767082521; Tue, 26 Sep 2023 15:24:42 -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 a12-20020a1709065f8c00b009ad88075ac2si12203241eju.46.2023.09.26.15.24.42; Tue, 26 Sep 2023 15:24:42 -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=D25z81G2; 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 8ED3D68CB56; Wed, 27 Sep 2023 01:22:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2033.outbound.protection.outlook.com [40.92.58.33]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6C9768CA7F for ; Wed, 27 Sep 2023 01:22:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WQLz+mDcDJp+s7zwkXyiE8yhFBkm/SBhvdOtTNNXcSLR51vl0dhdpqSI4yTjrZf3EKPCCpySeOMOU8Fh6jWNTdw+EGMZgg70gI4MiFAOmV29DN7qdxcIqKdbpH+AARFXn4YwMa+PaqHAjfXPdZYWTKCq6j9cfxIo+x4Thb8lQc/u/JOBAACTm4HX3+8CH+36SkvfzEgOSnlAf/TVeVRU8bs02pHzmdrK3INQf9rTNe9XXQARD8Ff9sJSoBeV5F7Q81u1OhphtCpyc+0TN4Lie6e3MmuZFs7YGuzNyyS83zi8lSK1tcOjGuw+Qy7hayKRNqXO4BnosyBvmDwPvjh0/g== 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=WzEHj8KDpJOoDKrFOUXYuAMSD3dEHeVlewExh1DAjr8=; b=SsGqpao2WjgZJmPC2SrWiJls3zxymC6J5BA45dBaiIMKqiHG5HXZ8wx4qVBj8e7wKUsM031iWbqLfRoVaLkA5mEEiyh0UOba4JChS90Us5hLeXxTnc2knjFmPNQ+lT08WfuxH6HXTTMjSLXsVOm/EKr3fxg4+3Tg0lrMBBJhA1T9QlBJ18f5HuiBeuZPWrTKAbrVUxXntC0d2oAGxWwkUNcFoI+qFlooJbYCmIGM6oyJbshj9CYkgayvpRefGJNJbUKJDJVD6M0Ynww8eywIDsN1rMx5a1IIBD3O5WDrgrPyEs/UEuZD8iAlRuVf0XnDCFSYfIQJWcsplOW1Mw7psw== 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=WzEHj8KDpJOoDKrFOUXYuAMSD3dEHeVlewExh1DAjr8=; b=D25z81G2unxfcZ4jRMUf4Z9681UcsNLJdHBIXlWz9DTCe1gYnQLlJ7DQT6fCzWs91HUOZ3GynMgkNce5KBxEjdcOw6g43Jt4SKHHgZYp3rNLwqw6THBaANkzN16emaKCXM0lSGl3REUZOJPNDBy63fnOX8+solV4xBIXVA3o/1oj9WwP4DL6B6QQRpfr5NC2sTW4Iqbu4Y+mZsFtSzMZWKJ0bAnxEtKxbRaaCo3z7sC83/EvIYLzm7ry/M0lp0iSAhkwaaDAyalqnXO18PSAiCPqYPsnrgylfepYTHu5aB10vBdQugqFG/xmtx3n5cSO5w5riwTNt5URqnv/upZBww== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:51 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:28 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [hNTvIST1jIJhycosBQ65jZXBV8IrKPm/] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-56-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 69f3ee44-4ce0-41c4-dcb7-08dbbedf1efe X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NrJqOHrRTEs5gHgw2ffdPaaHRuSGO86vKsv2yfUcJwWrQ6pl7khlwM9Nmb/TJ8c5Rv042hcH9xDlwACZNlrpmADauDJCD5LyPuUmwVZgiTfDnX3V6RqnLJriZitLYQJbTqSUZfljUwiWB5v23X6BBjZluAc9L7LxUSbpitVjzR4PmtiR+sYzCMkFHcoOq6vTKAQVNvb8W5yqh9I0x5xIEsL6YfhC3RqK4RCN6fgsvS76WRfp+JIAtrPmSAjwmWwkeU7LiWKot5fsQjdlCPRIJ8CdBhGVAeOEcHnVTIY8W7Ep9YsfPx3udBmQvyWbcSga+S+hcuLDUADupYhHMfz1mRqdDmGLIRChbwAf5LD4DY3b21A0H7ljLXxQPwZPghghJ+CiiI+PZuhZVu66soxlsBefYi1W1jGUbNLblBVCjNAc7JhbCGLQrvShdFxnQWswXZQBxUf79HuaJcoL7aDC3BbZ1/Iz0TeyFQLEeDqdyjBeP0udeYpAOa7agxmCg44aLfXCSbiJgSImzKOTuS6FZUlkJUVKfWBanXAFIsnJkOSoNBfTKIhGjh5WD/FhkBxysJnH7O4o+MbQEamNMVctAAjYKkYkDNJnX7xNOH7FxckDHjqo7wbhKU0QDI1zsMVY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UcSrlDRxN7Yu899zwoRuWUEgtkHje0RTyy0Ztsfrvr5p2CVdUaA2q9r3MZ81xRotdfwSTnNSZpzprW+52z4jDCqwli/HQGoC/89BRsIDbFjmkllZVjHVk6p8ZUWx09UmpAfcfnSDL+oIIw9oM2e1P5RfRLqSca4ifLp9CquCHKjpccV6oeS1vWkNjEGtu1ExZ7AQ74H232mlfUjbgiM+mg0HarRsiiL7GKFn5wTYmoCUzh//nxgeaev81jnLHoL8TzE8vyvuP3LINoOdXx2Cb3afaTZ0Rjv33A9/xgiVv5GW4lxojfCdaig1VdtV6Zf7e0TI09Uq5ujOeV+mJtmZVPNkUIqFU2QflXA1lgrdHStVPnYByu6pipB4tX3Fy1PgpLY2m24DOxhmIuOV4wIsFY9yHwFhMjxh1UPNk94G66QQibs6RDpdVyzTDg/MFEzQJJiOMe6n+GBwzmvJLZVaxqVPqAYMMmA9pADVM+yVbnF/Q2GUAfKhuu3leNIeHmLxgXfXg/xB+2upAm544+qG6RaLi6I3hPqdpKQz7bd2HdNfXoqQJjs2rK0h7tTrAugHpAZKQQ/Xu747dANCET3NQu+0by0BcOhobVE5T01Q2SjO7M/Mp9gBGkPt+whl87D/+888cn8j5LPymoOWHt1wEYNYi2ysqJDqAz94tyS6D5z50EKF9y2dTEZCKP/RTenR80GPNcDB75Yivpo/fO1tx++U/GW9bWWEY76VaWcqm06QAXWYlnPvNowSszpg868l3BGg3Lymg14syFfZRpMsKS4hIViMmzdafe+INLQSgp0Gsyad0JtmKmmFdJiA1tNz+rcOxBSmI+luLtY42OXl/V5DJjC7I0f8uCAHqnGH/dy4aHQciOoQjSwBt+i8dqlwZ1wo8QFBDbfl2C9eUHLNXQyPKwzbMQIL+sSP2oNPveRd65b+y0GkOReXRLILlJW8vC5KBNWUBKBovAlVNKrS2IaGjVUh1JG7YKUcGqzk4LzbKvOniv7u9ZYeJy2aSXP4FY1q6K0pqPkpIo9dAfwuRPk8w/R8xal66e0+8d79rOo/hS8/Tib+QEpYokYxSZo0wZJYJHtACuXLA5mQsf3BhqtfZ8ulDqPF1HjBZpOIkP4EHsQsvEM+Nea9kWHEAb19RcfwcxAkjHdUynrF6YLUUlsyDXMZEjFtn9VEl/IvioLFolN8iNC62wdEj3eBjdn8w43Dx+EFbZoEen4BxCVimLDdOazCJsXV4bBQ1VklbPry4cqh3MFfJx2LFzq/ZgjR X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69f3ee44-4ce0-41c4-dcb7-08dbbedf1efe X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:51.2996 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 57/61] avcodec/mpegaudiodec_common: Avoid superfluous VLC structures 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: BlJsTScUjYAd For some VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegaudiodata.h | 2 +- libavcodec/mpegaudiodec_common.c | 16 +++++++--------- libavcodec/mpegaudiodec_template.c | 5 +++-- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/libavcodec/mpegaudiodata.h b/libavcodec/mpegaudiodata.h index a4148a1ffe..fbad67a0b3 100644 --- a/libavcodec/mpegaudiodata.h +++ b/libavcodec/mpegaudiodata.h @@ -53,7 +53,7 @@ extern uint32_t ff_table_4_3_value[TABLE_4_3_SIZE]; #endif /* VLCs for decoding layer 3 huffman tables */ -extern VLC ff_huff_vlc[16]; +extern const VLCElem *ff_huff_vlc[16]; extern VLC ff_huff_quad_vlc[2]; /* layer3 scale factor size */ diff --git a/libavcodec/mpegaudiodec_common.c b/libavcodec/mpegaudiodec_common.c index 3a60b03e9e..6446d08967 100644 --- a/libavcodec/mpegaudiodec_common.c +++ b/libavcodec/mpegaudiodec_common.c @@ -64,7 +64,7 @@ const uint8_t ff_lsf_nsf_table[6][3][4] = { }; /* mpegaudio layer 3 huffman tables */ -VLC ff_huff_vlc[16]; +const VLCElem *ff_huff_vlc[16]; static VLCElem huff_vlc_tables[128 + 128 + 128 + 130 + 128 + 154 + 166 + 142 + 204 + 190 + 170 + 542 + 460 + 662 + 414]; VLC ff_huff_quad_vlc[2]; @@ -401,6 +401,7 @@ const uint8_t ff_mpa_pretab[2][22] = { static av_cold void mpegaudiodec_common_init_static(void) { + VLCInitState state = VLC_INIT_STATE(huff_vlc_tables); const uint8_t *huff_sym = mpa_huffsymbols, *huff_lens = mpa_hufflens; int offset; @@ -414,7 +415,6 @@ static av_cold void mpegaudiodec_common_init_static(void) } /* huffman decode tables */ - offset = 0; for (int i = 0; i < 15;) { uint16_t tmp_symbols[256]; int nb_codes_minus_one = mpa_huff_sizes_minus_one[i]; @@ -426,16 +426,14 @@ static av_cold void mpegaudiodec_common_init_static(void) tmp_symbols[j] = high << 1 | ((high && low) << 4) | low; } - ff_huff_vlc[++i].table = huff_vlc_tables + offset; - ff_huff_vlc[i].table_allocated = FF_ARRAY_ELEMS(huff_vlc_tables) - offset; - ff_vlc_init_from_lengths(&ff_huff_vlc[i], 7, j, - huff_lens, 1, tmp_symbols, 2, 2, - 0, VLC_INIT_STATIC_OVERLONG, NULL); - offset += ff_huff_vlc[i].table_size; + ff_huff_vlc[++i] = ff_vlc_init_tables_from_lengths(&state, 7, j, + huff_lens, 1, + tmp_symbols, 2, 2, + 0, 0); huff_lens += j; huff_sym += j; } - av_assert0(offset == FF_ARRAY_ELEMS(huff_vlc_tables)); + av_assert1(state.size == 0); offset = 0; for (int i = 0; i < 2; i++) { diff --git a/libavcodec/mpegaudiodec_template.c b/libavcodec/mpegaudiodec_template.c index 3e4ee79be6..c227604107 100644 --- a/libavcodec/mpegaudiodec_template.c +++ b/libavcodec/mpegaudiodec_template.c @@ -760,6 +760,7 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, /* low frequencies (called big values) */ s_index = 0; for (i = 0; i < 3; i++) { + const VLCElem *vlctab; int j, k, l, linbits; j = g->region_size[i]; if (j == 0) @@ -768,13 +769,13 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, k = g->table_select[i]; l = ff_mpa_huff_data[k][0]; linbits = ff_mpa_huff_data[k][1]; - vlc = &ff_huff_vlc[l]; if (!l) { memset(&g->sb_hybrid[s_index], 0, sizeof(*g->sb_hybrid) * 2 * j); s_index += 2 * j; continue; } + vlctab = ff_huff_vlc[l]; /* read huffcode and compute each couple */ for (; j > 0; j--) { @@ -787,7 +788,7 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, if (pos >= end_pos) break; } - y = get_vlc2(&s->gb, vlc->table, 7, 3); + y = get_vlc2(&s->gb, vlctab, 7, 3); if (!y) { g->sb_hybrid[s_index ] = From patchwork Tue Sep 26 22:17:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43968 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211852pzh; Tue, 26 Sep 2023 15:24:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFTbUuPl8DPi7oUD370ux8sis5pBmzxPLHrdljPmK2J4DzuHxSW9K5sNG8yeceq09ntUy2g X-Received: by 2002:adf:e285:0:b0:317:67bf:3387 with SMTP id v5-20020adfe285000000b0031767bf3387mr22412wri.60.1695767090931; Tue, 26 Sep 2023 15:24: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 mh25-20020a170906eb9900b009ae53647815si11508961ejb.874.2023.09.26.15.24.50; Tue, 26 Sep 2023 15:24: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=Cp6edNBz; 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 A82BA68CBD0; Wed, 27 Sep 2023 01:22:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2072.outbound.protection.outlook.com [40.92.58.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 759AF68CB54 for ; Wed, 27 Sep 2023 01:22:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nFwwRmaorEdqKGMwcfS+he68aSPoJLrzf9C0HU8QwyFDAzxt1fa1K7oEbDYx4lss+AsnuXtQrTs8DniJb26XSDbLtxMwJSdlP/HAeKHh6YXFFdV2bPR9kX03wF+blJ/cl6CZawJpjkPSBAY8oQkw1xrCh42d00CGJ+iis9es4hX4btzVtTcJtsQNmOeCRzd8IjYPPDPpX/6rO/KnFWFzti1w7lCncprBhiVbebWXQ+L5I2yLjbGi4U2lactqdpHSLHH4fTIo8g5EwHfOpafXVYKasBNB004PjsUpe3E2AXcyX6QOOrTzIZW3BSFCaNYBEoZySk3ltQQXio952Spzlw== 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=IksMmLAitmcJukvr2fEwNTp9qXiqT0LKJ4nw6/mkMa4=; b=hrNBB3Xi33IU7JE9mkz2jmmqP7eJ/d3ZoILJ/UXGfSdZitKgLJ5Zkvbse1WbVeoFvLmctKWkt38Zyxm1qsH6ReaKR+YDRDb0IGihJrinA6YwP118iPF4EQt/wTLYJpgIcuW2G5aRXCmP7+1QxPaySEWALxYbwh87mSgwt6pVEEQvxUIFW5ZqUDHMcNochpwRbqCom0rM1CbNDv8cSv3nK6zNAGYdvDPW4EAAS0Dt1cykPm9RkZ39UH7CTNGuCz698CHjQTt/X7DZn9+frf/ffuCqAPWmsrXvwxqZQaPNbHuHTiXjRk16ePLRyof8QcEwyP4VIf59wKqkH1mv/l0F+w== 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=IksMmLAitmcJukvr2fEwNTp9qXiqT0LKJ4nw6/mkMa4=; b=Cp6edNBzG8SV94kjssmeCGh5VgSSyv8uig1NcS2hXWwfX/FyX6smR0zl7W3QwPMxOSs03HFiqgkotHJNQOAmzQA6lk6QWX9hUyQZkhE46XcO9sC9g/43L/SfejZCF4KwkielIQoRab5VhwSGCYFY4P9m4pA1JlIKmx8krsWrwR0aCbN5iJwVS+04HilIFiAew5y5QFWaM9x5tfdM4fQDGX+fXbEUHLLa9qfvFWArGF5jEOF/pU42fxScLS1e7iJLpJJKXI13WG4JG6WdaPFH5XFRY1YGm17przBWPwtpt5CyxdvOx3uPdGkSXMhiUEkBvWp8W0CnN/yXUB0exdaCuw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:22:55 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:22:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:29 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [TBQcu4ma1leYt4KFtOnP5h1RX2Ziu7FV] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-57-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: eb05af88-aeef-4320-20f8-08dbbedf21ab X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZQuTZWQ1bQTuvfayLSh8SCJjyFIROszE2UQQ4ov7vRmczSN5X9H0Zwe9n72wRnJ8aUZDAEzPwONWggQqD1Bv5z4af3n+t/gRNG3RRLDDfnNv9cV08TCU8SVoYkX9uId+PzYkZpMUlKMIwTYbjW3HfiiLp+LGYNw3H+wqgHUosypnYrSPymyVb3JeOOW3mLsr5IXElk0BdcG+IXxbbtXGv8IXCjZ0GpKhcSBzPixl1zB8uht0A7W+PbSs1cTuIFvVIU0txkgZPo3JdI2LvumzyjcLf3+Jmlj6EQ/Ji/VgLfgOdP0KC+eRGQE06JnhJPi+rDDCPACY9QMYK2Rlch03pl+cn3Vw0zruBr/tg9SU9cyqYpfV+SNUB5OUg+tkoHMVdfPiQObHb/LoT8vlJXtDZyz5eqy9BDuWWHW03oP4zu6KvJls0TEgp4GJSNpg5ACyzYTi1GyMcToLreji7Qm7RamPrDlBcNj+b5CIdgDDTXWrwqQtrCL3J+81b5ZQPZcaCoQbdEalgfcgASk1dG2ex+ybU3BTl5KD+kTlRpI7PKnLC5KtgcRMp8LHSsqCI4WcP2NP5a04mng1VAvgHC8uABSB4pjr/VutwPcWUDi24zC0cQl0R8+56K4yF9qCfEh9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YNV2kibdKKZTiy+85DKG3Vqv3xlCX+bjnS6ljikYCwwZQwO/jYLGuQNTKVL1jYR+jLKQXBe3s+kRk+UcmYcLE6W9/2mCeqgb6Gv5s0VG3Hig4+c7SVpWKVxxurFu2V+eo+DSGqA2KgnmSZGOafIoUeYNs/4BpRwo/jI854aUL34HEKAJNkDSY0nAUouoNjr3J/X051rvoVrWcefGCFyizqgQwktcXC7BtMXpgnPhBjxHhBaeupEhh3VBhSPzq8TsRU3eezQebeAken6YMFqagfMOXm3mRzb7v/JlMoShdZSLKmuWczgMjfdRXbvg8ATCeelXn2SYf5eFOxgVa5tnFZGy7dU9gzwQCmJVqgQPd9Pc/whoYatEw1kUO5hq1DqvHlK7RIunh5mZyQnicLxtrRFQyuBl6Nsznp5BpgoSueIc6YksKtcmydLPiKM7AdRWNRAHQ6myNnClAN+ofeZJjXvEDrtoqTIrEiBacIOzKvcHyF+3oEvV/52SWBXhYgqNNGSZAtF/iGWGmSStr/R53rDCdg3+z1c0/hTg5BvsWpClTzdKV7WZs+mvrDQ7ypvS2Km9TC80tUkBtZOlJ9gGSL+yjqA9MPLfISXHhRtT9+0Oi+M65Ult/tNkx55TQdBwvpPQJZ8u+kdX8aSrvwhsVP2oCfLT6dOqImXKEdmnCNzK2tx9+5NqQEb+ZabVwoKYjdmNABb/T67xS7edVOrq7ZS3UM+0ll6616UFDqzy8UhR0jCUb9sdbx7JJ5Yy1if2LWigAgRBdAEi4WtgqWmbJ8MKjiEIZvzRXbu7sfU7wn0ZHccX5LVKPb8T4KTI1HxmbwRXzb8zhkaOfpWXqwwgcJfb0C9uzlUXpb35/io/Ht0Ah4GrQzG/DQ1QX6PE12Qwd+KWbLJNWTiSqkLczvNfTuKO3JCx3/H5RKXCKUpR5i/BVrnU5Lg9a91IL9yrCuiR3obsBOCoBH4zrS8AaknMUDyPg5e2iBfoAv7aZHF7DaUklwNU3RTFZHWaXO1YpAr4mEaxk2Nsal6rRP75qO/rHRb+zC4SqKB2IPBXyXHRWkW6xDD95UtU2KtNqCtFZkufM2RBuKCTQKL30RJ3V1nile/oJl648jdS6eUoLqKcjEJG8bRwtkx8QIPrk5XBfN5dAKhnEjWBYJcyqgRq0KucCkhUAuM8cApZFrNugF6hGiIEkQ9rZMCODaAgQwQdlc9k+mBDdKE0UFPXsR0JXaQcADmUV76Ulj5BTh9Ii0WZsXsRjPo5UYoxVw9LygRidEaV X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb05af88-aeef-4320-20f8-08dbbedf21ab X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:22:55.7516 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 58/61] avcodec/mpeg12: Avoid unnecessary VLC structures 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: Qkf7gkG8tP0q Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying tables directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12.c | 58 +++++++++++++++++++++--------------------- libavcodec/mpeg12dec.c | 12 ++++----- libavcodec/mpeg12dec.h | 4 +-- libavcodec/mpeg12vlc.h | 14 +++++----- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 70033ec725..8d88820c46 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -115,43 +115,43 @@ void ff_mpeg1_clean_buffers(MpegEncContext *s) /******************************************/ /* decoding */ -VLC ff_mv_vlc; +VLCElem ff_mv_vlc[266]; -VLC ff_dc_lum_vlc; -VLC ff_dc_chroma_vlc; +VLCElem ff_dc_lum_vlc[512]; +VLCElem ff_dc_chroma_vlc[514]; -VLC ff_mbincr_vlc; -VLC ff_mb_ptype_vlc; -VLC ff_mb_btype_vlc; -VLC ff_mb_pat_vlc; +VLCElem ff_mbincr_vlc[538]; +VLCElem ff_mb_ptype_vlc[64]; +VLCElem ff_mb_btype_vlc[64]; +VLCElem ff_mb_pat_vlc[512]; RL_VLC_ELEM ff_mpeg1_rl_vlc[680]; RL_VLC_ELEM ff_mpeg2_rl_vlc[674]; static av_cold void mpeg12_init_vlcs(void) { - VLC_INIT_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_lum_bits, 1, 1, - ff_mpeg12_vlc_dc_lum_code, 2, 2, 512); - VLC_INIT_STATIC(&ff_dc_chroma_vlc, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_chroma_bits, 1, 1, - ff_mpeg12_vlc_dc_chroma_code, 2, 2, 514); - VLC_INIT_STATIC(&ff_mv_vlc, MV_VLC_BITS, 17, - &ff_mpeg12_mbMotionVectorTable[0][1], 2, 1, - &ff_mpeg12_mbMotionVectorTable[0][0], 2, 1, 266); - VLC_INIT_STATIC(&ff_mbincr_vlc, MBINCR_VLC_BITS, 36, - &ff_mpeg12_mbAddrIncrTable[0][1], 2, 1, - &ff_mpeg12_mbAddrIncrTable[0][0], 2, 1, 538); - VLC_INIT_STATIC(&ff_mb_pat_vlc, MB_PAT_VLC_BITS, 64, - &ff_mpeg12_mbPatTable[0][1], 2, 1, - &ff_mpeg12_mbPatTable[0][0], 2, 1, 512); - - VLC_INIT_STATIC(&ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, - &table_mb_ptype[0][1], 2, 1, - &table_mb_ptype[0][0], 2, 1, 64); - VLC_INIT_STATIC(&ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, - &table_mb_btype[0][1], 2, 1, - &table_mb_btype[0][0], 2, 1, 64); + VLC_INIT_STATIC_TABLE(ff_dc_lum_vlc, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_lum_bits, 1, 1, + ff_mpeg12_vlc_dc_lum_code, 2, 2, 0); + VLC_INIT_STATIC_TABLE(ff_dc_chroma_vlc, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_chroma_bits, 1, 1, + ff_mpeg12_vlc_dc_chroma_code, 2, 2, 0); + VLC_INIT_STATIC_TABLE(ff_mv_vlc, MV_VLC_BITS, 17, + &ff_mpeg12_mbMotionVectorTable[0][1], 2, 1, + &ff_mpeg12_mbMotionVectorTable[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(ff_mbincr_vlc, MBINCR_VLC_BITS, 36, + &ff_mpeg12_mbAddrIncrTable[0][1], 2, 1, + &ff_mpeg12_mbAddrIncrTable[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(ff_mb_pat_vlc, MB_PAT_VLC_BITS, 64, + &ff_mpeg12_mbPatTable[0][1], 2, 1, + &ff_mpeg12_mbPatTable[0][0], 2, 1, 0); + + VLC_INIT_STATIC_TABLE(ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, + &table_mb_ptype[0][1], 2, 1, + &table_mb_ptype[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, + &table_mb_btype[0][1], 2, 1, + &table_mb_btype[0][0], 2, 1, 0); ff_init_2d_vlc_rl(ff_mpeg1_vlc_table, ff_mpeg1_rl_vlc, ff_mpeg12_run, ff_mpeg12_level, MPEG12_RL_NB_ELEMS, diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 92ef6944fa..5f7ff4bb7a 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -117,7 +117,7 @@ static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred) { int code, sign, val, shift; - code = get_vlc2(&s->gb, ff_mv_vlc.table, MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_mv_vlc, MV_VLC_BITS, 2); if (code == 0) return pred; if (code < 0) @@ -710,7 +710,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) } break; case AV_PICTURE_TYPE_P: - mb_type = get_vlc2(&s->gb, ff_mb_ptype_vlc.table, MB_PTYPE_VLC_BITS, 1); + mb_type = get_vlc2(&s->gb, ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 1); if (mb_type < 0) { av_log(s->avctx, AV_LOG_ERROR, "Invalid mb type in P-frame at %d %d\n", s->mb_x, s->mb_y); @@ -719,7 +719,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) mb_type = ptype2mb_type[mb_type]; break; case AV_PICTURE_TYPE_B: - mb_type = get_vlc2(&s->gb, ff_mb_btype_vlc.table, MB_BTYPE_VLC_BITS, 1); + mb_type = get_vlc2(&s->gb, ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 1); if (mb_type < 0) { av_log(s->avctx, AV_LOG_ERROR, "Invalid mb type in B-frame at %d %d\n", s->mb_x, s->mb_y); @@ -981,7 +981,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) if (HAS_CBP(mb_type)) { s->bdsp.clear_blocks(s->block[0]); - cbp = get_vlc2(&s->gb, ff_mb_pat_vlc.table, MB_PAT_VLC_BITS, 1); + cbp = get_vlc2(&s->gb, ff_mb_pat_vlc, MB_PAT_VLC_BITS, 1); if (mb_block_count > 6) { cbp *= 1 << mb_block_count - 6; cbp |= get_bits(&s->gb, mb_block_count - 6); @@ -1723,7 +1723,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, skip_bits1(&s->gb); } else { while (get_bits_left(&s->gb) > 0) { - int code = get_vlc2(&s->gb, ff_mbincr_vlc.table, + int code = get_vlc2(&s->gb, ff_mbincr_vlc, MBINCR_VLC_BITS, 2); if (code < 0) { av_log(s->avctx, AV_LOG_ERROR, "first mb_incr damaged\n"); @@ -1892,7 +1892,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, /* read increment again */ s->mb_skip_run = 0; for (;;) { - int code = get_vlc2(&s->gb, ff_mbincr_vlc.table, + int code = get_vlc2(&s->gb, ff_mbincr_vlc, MBINCR_VLC_BITS, 2); if (code < 0) { av_log(s->avctx, AV_LOG_ERROR, "mb incr damaged\n"); diff --git a/libavcodec/mpeg12dec.h b/libavcodec/mpeg12dec.h index 4c015d3096..4641179149 100644 --- a/libavcodec/mpeg12dec.h +++ b/libavcodec/mpeg12dec.h @@ -30,9 +30,9 @@ static inline int decode_dc(GetBitContext *gb, int component) int code, diff; if (component == 0) { - code = get_vlc2(gb, ff_dc_lum_vlc.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, ff_dc_lum_vlc, DC_VLC_BITS, 2); } else { - code = get_vlc2(gb, ff_dc_chroma_vlc.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, ff_dc_chroma_vlc, DC_VLC_BITS, 2); } if (code == 0) { diff = 0; diff --git a/libavcodec/mpeg12vlc.h b/libavcodec/mpeg12vlc.h index 3ed35968f6..53f53947c3 100644 --- a/libavcodec/mpeg12vlc.h +++ b/libavcodec/mpeg12vlc.h @@ -39,13 +39,13 @@ #define MB_PTYPE_VLC_BITS 6 #define MB_BTYPE_VLC_BITS 6 -extern VLC ff_dc_lum_vlc; -extern VLC ff_dc_chroma_vlc; -extern VLC ff_mbincr_vlc; -extern VLC ff_mb_ptype_vlc; -extern VLC ff_mb_btype_vlc; -extern VLC ff_mb_pat_vlc; -extern VLC ff_mv_vlc; +extern VLCElem ff_dc_lum_vlc[]; +extern VLCElem ff_dc_chroma_vlc[]; +extern VLCElem ff_mbincr_vlc[]; +extern VLCElem ff_mb_ptype_vlc[]; +extern VLCElem ff_mb_btype_vlc[]; +extern VLCElem ff_mb_pat_vlc[]; +extern VLCElem ff_mv_vlc[]; void ff_mpeg12_init_vlcs(void); From patchwork Tue Sep 26 22:17:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43969 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211893pzh; Tue, 26 Sep 2023 15:24:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEPvcPbhSkPf4cBKie7trYF2S47sWuuKPtwdlosTVsY/bA0yCRIO+sfU9QOf1oPCHjrYZgM X-Received: by 2002:a5d:43ca:0:b0:321:6fe4:d4eb with SMTP id v10-20020a5d43ca000000b003216fe4d4ebmr54561wrr.2.1695767099703; Tue, 26 Sep 2023 15:24:59 -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 b25-20020a170906d11900b0099bd58fb8c5si12308369ejz.751.2023.09.26.15.24.59; Tue, 26 Sep 2023 15:24:59 -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=gYVWbvp0; 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 ABBF268CBBE; Wed, 27 Sep 2023 01:23:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2062.outbound.protection.outlook.com [40.92.58.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9E70E68CBB0 for ; Wed, 27 Sep 2023 01:23:03 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j3HO088BgJxp7aZiJBqxyFepxV6BEQQkjpa6wKR7tFUvjGTjTM6J0Mohg4Dcw9MMzZxidkAOhjlxlIF5AhRILc9oC/JFCoqrjnpb3oI+LulMptoMfTU8/bIxmr5LPaFS9AeOL1zmcRT1bDiSTnV9TdChhCM/POFk62XFwSxuPaun0CRm2C/xUIN7uXS4RFlaMV3rciQVVGe/uRTKnLQxCK4g0wjfhb+SQ1RDgLRdGaAP7iTHseVMFJPEdQBJA5m58aNDV017H1FDxFWwwHW1UiIcq3IMvB5nzksNwY7K5qxownoqU/S2MUEu5SbvdykQkF4fIUbI23KzBS9VPYe/cQ== 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=8QbGM86z6UAWKV9I/xD1OWf24bvVhLnwJIaUSZl+FhM=; b=KHL5M8IzBhANiaKn6IzpNkaZdDlZXKN7xLboix5++xF5+dB5zqCcgDujmBWSVNL8h3aZcWehUJToziKrC20FKyifLyP+XlNZg6pLLVFeo7YDZmYbtwQRxJCvBB4SAH/brPzEDMK2qxqgfzIFH45Ko7ha7gmjkGe60pW0bg/z9Le6S0P1avbBkbSdgsUeXC/TfdN0ZMFdVlq2oTVjEEjFeaO6tyWm+pAwRsF74QuNkyWJzr5depUF3UUoWZ+VfXiyEgjmQ1MHppL1qMJP0GUfalKTD2CGIToU5TxdyRlHSNsg1vkNHZF2GPYzZg6WyBUvAHOvt7iV4tFQCZ/d1/7KkQ== 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=8QbGM86z6UAWKV9I/xD1OWf24bvVhLnwJIaUSZl+FhM=; b=gYVWbvp0onU+Nu8SOSLDCJBR1jzGFQGzO2IlwlYVNCEUjvZe9Le3YG229aFZo/WgDQqJW4PN92qS33059xXbHNjNuEUyuAUGoiaB1rxDY3WCyFQyOFzMdZCEiVztqoZwpO1zGPqZ7cBxgkY/9W/+xbsY8Sursk64WuWEd3txrqZUZcshMswFvIqozwA8XE5swldkGKllocSF3SS96JyYyhNWhyM++o6zqoBWIbqwpmHHpzBGDIfoO6sxoxN55YQ1/23jCAvjX4YJYFfWsPb3iLgeuthTa16SRhlfnEF52Y4D++tJ2/ifC9kBM8i8FowJ02qyl3O+p5oDz7/4/MENFg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:23:02 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:23:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:30 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [cGCVHeshEaDn3SFI1cQ5S8FUEUlNq86s] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-58-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ce2f3f5-eb01-4966-7045-08dbbedf2562 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rmVafrDBgcgylgrI6DiodU8HSYZ3rqPDFnhqnS/RoHxGNe/y5JN4qMeO3nW747pXTfekKXNGytP69msWiu/mHIj2SgDzgeG7d8AYfaqp0taT8BR5L4r3OH2t4X+RI5L3e303Y3GlyMTvx9tRbPLAR16/cWlBsKw2oCnlnMcgxeAKTRAVCr2tZRVrNmY9D9xQLz76nx/P7mQhfOD7+K5nfesnjg0m29UMKJZReWEikeJyXefXKo21MbBY2vLcCC7qbvfTtR2Csx60lS04yejhVNIRm4DgTmd5QU/nOFHtgv0kgLY211SOCQHRCOYHmlqTCengG5shNnYBuyEr5ab/mwZY0E5pfuHH0chMNtWX4wdlJPCXJcC0KxpBS0kegaYkKAxN2iCNEUCeaFOmps5vaVhOIwe1I/ePlCFiaH+PWY9lHL/UMSkSUumHbcDTKygIYOc8bQS7jtDuYmPstDS+yeR3956YKBn60Y/FpM0S/WhpPZKm329XoAK4bsvXLvfJs8YtDFLwc1B+xHhQd7hgjmFW9rq8g7vx4wNVTTbUlp4ghvmfsfWYf7nSRR4mXKIYAQ7DS3V+uBOEnZ06+dnJ7Lb8SSc+LthHkCwCuMpywLEHr96Gwq2MKLxj7NxRrsye X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nEpVF6P52ORAyPFcpVTfAleOj8Vq0GfSVcUAU8cQ0wmkvcCFFM33PM/I1IDzknSfFFWOnRh1N4x0RKMz6m8zNfMOuINryPj06zkFmKslyXia2DQ0kc0MQPe4DylLwIykHzbY8/+HEa0+OKQDLSIlYZUVMKqOBHXO1AZ5YwbCQobY3PWN9jbJzpfHVjmedm1CJ7InNDQC/+wNBgyhx/ordYL+80TrkjJeVpyzDNuUJVWqK1S9IFf7ombOXXjNuC/zoQS7MtA0mYTFhQwyHQVMHL6+ljD1eYD1Sdftu9Rms50dlobZ09EWQRPNulG61loqIfADdRb2ADnxWbaxdIKDfndj29bov8hYWpcxmcSKETW//kf8Bexbgz5Lq2N6RLb7I84IqB6IUGPoCzXxwkdchchqtqWgDx+qwWKFuDif6+wkRoJxnyK0IAxGQVYqP18YbJrS2p2UTTj8f4oMpkSiCf2sX2jRPFhZagE4Th0VS33T9qrjim8RLnN9rTJ0WAil+2Kdr0d+KaUPltC5IAkRurvJoDPFm06gQtiMcCEKFARNpOIJYNk5WDMuXToUFkSwhONs7rPfUm1SLVmqTBsYrkfvPmPHfUxBu2fIe0k/UKPZgy8zsOm8fovL2gDFZzdF9487aOXKPp7+lPOe3609g0BOCyOLsqkGJmHbYHqKF6oUtnWKsWgi+B79fKlj9PxsIFcs3CJNCn5X3NT6pMbAPvJGW9FrQ7scJOldU4udnrlQCZOb9K4FY3H16SyVuooPk59MnDCuroXlNYamuX5X+wohlLv5AxYxxndimGTGStB5z3saKcYERhoD9thjbrDccsi4xJ6nidHihDyWYcMVxJeBE/QkJ7M9J+qhFiTb4X2BAPOm/pZbNy77jiLQeQ40k4H8G8vJnBm/PGabqV6+T1eAnwzDl48MKCypMwDqNBD5tMzzS2TZIQb6WpKuxtxK35iMlvANOFbnpokbJAAJNYePIhNqWBooqtgqKxD95hYI7HOyPp2xug0FGL3SzdmL+EXcEJCL8DR5rdOwZjb24SA8s5WI2HfmDzCO6TYkQXgtEEmwp7WNUTmP9462ZfwSBqBvnvAgNv8Ez1vgZLYPTJ4ELmU8v0nr+7DfQbwZnGPLgM55G5kpgIKxavxs84YN1/XeNR5KmlAHpkdRWrlgxtUVRxVaqmblx81SIWcTAGps4u8hgt+usovSriRIilWPxKwLAs8YSpumWKxqUjbIsP4E0ffHiiC7xSErQa2aFIVr5JuMSQ74HxDj9TUggzl/ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ce2f3f5-eb01-4966-7045-08dbbedf2562 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:23:01.9804 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 59/61] avcodec/wmaprodec: Avoid superfluous VLC structures 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: 8RuRh+iBYkI4 For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in most cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/wma.c | 4 +-- libavcodec/wma.h | 2 +- libavcodec/wmadec.c | 2 +- libavcodec/wmaprodec.c | 73 ++++++++++++++++++++++-------------------- 4 files changed, 43 insertions(+), 38 deletions(-) diff --git a/libavcodec/wma.c b/libavcodec/wma.c index 3b4d049a83..5eacf230fa 100644 --- a/libavcodec/wma.c +++ b/libavcodec/wma.c @@ -424,7 +424,7 @@ unsigned int ff_wma_get_large_val(GetBitContext *gb) * @return 0 on success, -1 otherwise */ int ff_wma_run_level_decode(AVCodecContext *avctx, GetBitContext *gb, - VLC *vlc, const float *level_table, + const VLCElem *vlc, const float *level_table, const uint16_t *run_table, int version, WMACoef *ptr, int offset, int num_coefs, int block_len, int frame_len_bits, @@ -435,7 +435,7 @@ int ff_wma_run_level_decode(AVCodecContext *avctx, GetBitContext *gb, uint32_t *iptr = (uint32_t *) ptr; const unsigned int coef_mask = block_len - 1; for (; offset < num_coefs; offset++) { - code = get_vlc2(gb, vlc->table, VLCBITS, VLCMAX); + code = get_vlc2(gb, vlc, VLCBITS, VLCMAX); if (code > 1) { /** normal code */ offset += run_table[code]; diff --git a/libavcodec/wma.h b/libavcodec/wma.h index 5dc604154d..3d0d872ea3 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -155,7 +155,7 @@ int ff_wma_total_gain_to_bits(int total_gain); int ff_wma_end(AVCodecContext *avctx); unsigned int ff_wma_get_large_val(GetBitContext *gb); int ff_wma_run_level_decode(AVCodecContext *avctx, GetBitContext *gb, - VLC *vlc, const float *level_table, + const VLCElem *vlc, const float *level_table, const uint16_t *run_table, int version, WMACoef *ptr, int offset, int num_coefs, int block_len, int frame_len_bits, diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index ab48e28ebc..3427e482dc 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -616,7 +616,7 @@ static int wma_decode_block(WMACodecContext *s) * there is potentially less energy there */ tindex = (ch == 1 && s->ms_stereo); memset(ptr, 0, s->block_len * sizeof(WMACoef)); - ret = ff_wma_run_level_decode(s->avctx, &s->gb, &s->coef_vlc[tindex], + ret = ff_wma_run_level_decode(s->avctx, &s->gb, s->coef_vlc[tindex].table, s->level_table[tindex], s->run_table[tindex], 0, ptr, 0, nb_coefs[ch], s->block_len, s->frame_len_bits, coef_nb_bits); diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index 61b86ad6d1..65b269adda 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -132,12 +132,12 @@ #define SCALEMAXDEPTH ((HUFF_SCALE_MAXBITS+SCALEVLCBITS-1)/SCALEVLCBITS) #define SCALERLMAXDEPTH ((HUFF_SCALE_RL_MAXBITS+VLCBITS-1)/VLCBITS) -static VLC sf_vlc; ///< scale factor DPCM vlc -static VLC sf_rl_vlc; ///< scale factor run length vlc -static VLC vec4_vlc; ///< 4 coefficients per symbol -static VLC vec2_vlc; ///< 2 coefficients per symbol -static VLC vec1_vlc; ///< 1 coefficient per symbol -static VLC coef_vlc[2]; ///< coefficient run length vlc codes +static VLCElem sf_vlc[616]; ///< scale factor DPCM vlc +static VLCElem sf_rl_vlc[1406]; ///< scale factor run length vlc +static VLCElem vec4_vlc[604]; ///< 4 coefficients per symbol +static VLCElem vec2_vlc[562]; ///< 2 coefficients per symbol +static VLCElem vec1_vlc[562]; ///< 1 coefficient per symbol +static const VLCElem *coef_vlc[2]; ///< coefficient run length vlc codes static float sin64[33]; ///< sine table for decorrelation /** @@ -320,27 +320,32 @@ static av_cold int get_rate(AVCodecContext *avctx) static av_cold void decode_init_static(void) { - VLC_INIT_STATIC_FROM_LENGTHS(&sf_vlc, SCALEVLCBITS, HUFF_SCALE_SIZE, - &scale_table[0][1], 2, - &scale_table[0][0], 2, 1, -60, 0, 616); - VLC_INIT_STATIC_FROM_LENGTHS(&sf_rl_vlc, VLCBITS, HUFF_SCALE_RL_SIZE, - &scale_rl_table[0][1], 2, - &scale_rl_table[0][0], 2, 1, 0, 0, 1406); - VLC_INIT_STATIC_FROM_LENGTHS(&coef_vlc[0], VLCBITS, HUFF_COEF0_SIZE, - coef0_lens, 1, - coef0_syms, 2, 2, 0, 0, 2108); - VLC_INIT_STATIC_FROM_LENGTHS(&coef_vlc[1], VLCBITS, HUFF_COEF1_SIZE, + static VLCElem vlc_buf[2108 + 3912]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); + + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(sf_vlc, SCALEVLCBITS, HUFF_SCALE_SIZE, + &scale_table[0][1], 2, + &scale_table[0][0], 2, 1, -60, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(sf_rl_vlc, VLCBITS, HUFF_SCALE_RL_SIZE, + &scale_rl_table[0][1], 2, + &scale_rl_table[0][0], 2, 1, 0, 0); + coef_vlc[0] = + ff_vlc_init_tables_from_lengths(&state, VLCBITS, HUFF_COEF0_SIZE, + coef0_lens, 1, + coef0_syms, 2, 2, 0, 0); + coef_vlc[1] = + ff_vlc_init_tables_from_lengths(&state, VLCBITS, HUFF_COEF1_SIZE, &coef1_table[0][1], 2, - &coef1_table[0][0], 2, 1, 0, 0, 3912); - VLC_INIT_STATIC_FROM_LENGTHS(&vec4_vlc, VLCBITS, HUFF_VEC4_SIZE, - vec4_lens, 1, - vec4_syms, 2, 2, -1, 0, 604); - VLC_INIT_STATIC_FROM_LENGTHS(&vec2_vlc, VLCBITS, HUFF_VEC2_SIZE, - &vec2_table[0][1], 2, - &vec2_table[0][0], 2, 1, -1, 0, 562); - VLC_INIT_STATIC_FROM_LENGTHS(&vec1_vlc, VLCBITS, HUFF_VEC1_SIZE, - &vec1_table[0][1], 2, - &vec1_table[0][0], 2, 1, 0, 0, 562); + &coef1_table[0][0], 2, 1, 0, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vec4_vlc, VLCBITS, HUFF_VEC4_SIZE, + vec4_lens, 1, + vec4_syms, 2, 2, -1, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vec2_vlc, VLCBITS, HUFF_VEC2_SIZE, + &vec2_table[0][1], 2, + &vec2_table[0][0], 2, 1, -1, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vec1_vlc, VLCBITS, HUFF_VEC1_SIZE, + &vec1_table[0][1], 2, + &vec1_table[0][0], 2, 1, 0, 0); /** calculate sine values for the decorrelation matrix */ for (int i = 0; i < 33; i++) @@ -929,7 +934,7 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c) 0x41400000, 0x41500000, 0x41600000, 0x41700000, }; int vlctable; - VLC* vlc; + const VLCElem *vlc; WMAProChannelCtx* ci = &s->channel[c]; int rl_mode = 0; int cur_coeff = 0; @@ -940,7 +945,7 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c) ff_dlog(s->avctx, "decode coefficients for channel %i\n", c); vlctable = get_bits1(&s->gb); - vlc = &coef_vlc[vlctable]; + vlc = coef_vlc[vlctable]; if (vlctable) { run = coef1_run; @@ -958,17 +963,17 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c) int i; unsigned int idx; - idx = get_vlc2(&s->gb, vec4_vlc.table, VLCBITS, VEC4MAXDEPTH); + idx = get_vlc2(&s->gb, vec4_vlc, VLCBITS, VEC4MAXDEPTH); if ((int)idx < 0) { for (i = 0; i < 4; i += 2) { - idx = get_vlc2(&s->gb, vec2_vlc.table, VLCBITS, VEC2MAXDEPTH); + idx = get_vlc2(&s->gb, vec2_vlc, VLCBITS, VEC2MAXDEPTH); if ((int)idx < 0) { uint32_t v0, v1; - v0 = get_vlc2(&s->gb, vec1_vlc.table, VLCBITS, VEC1MAXDEPTH); + v0 = get_vlc2(&s->gb, vec1_vlc, VLCBITS, VEC1MAXDEPTH); if (v0 == HUFF_VEC1_SIZE - 1) v0 += ff_wma_get_large_val(&s->gb); - v1 = get_vlc2(&s->gb, vec1_vlc.table, VLCBITS, VEC1MAXDEPTH); + v1 = get_vlc2(&s->gb, vec1_vlc, VLCBITS, VEC1MAXDEPTH); if (v1 == HUFF_VEC1_SIZE - 1) v1 += ff_wma_get_large_val(&s->gb); vals[i ] = av_float2int(v0); @@ -1059,7 +1064,7 @@ static int decode_scale_factors(WMAProDecodeCtx* s) s->channel[c].scale_factor_step = get_bits(&s->gb, 2) + 1; val = 45 / s->channel[c].scale_factor_step; for (sf = s->channel[c].scale_factors; sf < sf_end; sf++) { - val += get_vlc2(&s->gb, sf_vlc.table, SCALEVLCBITS, SCALEMAXDEPTH); + val += get_vlc2(&s->gb, sf_vlc, SCALEVLCBITS, SCALEMAXDEPTH); *sf = val; } } else { @@ -1071,7 +1076,7 @@ static int decode_scale_factors(WMAProDecodeCtx* s) int val; int sign; - idx = get_vlc2(&s->gb, sf_rl_vlc.table, VLCBITS, SCALERLMAXDEPTH); + idx = get_vlc2(&s->gb, sf_rl_vlc, VLCBITS, SCALERLMAXDEPTH); if (!idx) { uint32_t code = get_bits(&s->gb, 14); From patchwork Tue Sep 26 22:17:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43970 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2211946pzh; Tue, 26 Sep 2023 15:25:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFTXUpE0I0TiAbdVTkTQyeEOH1PrJGgG47rhReDncKo0oT+G2Fd7DPiV9CEbQKFK1WpSfnZ X-Received: by 2002:a2e:95c8:0:b0:2bc:efa4:2c36 with SMTP id y8-20020a2e95c8000000b002bcefa42c36mr304846ljh.11.1695767108057; Tue, 26 Sep 2023 15:25:08 -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 y25-20020a1709060a9900b00991df86ac0esi7712858ejf.338.2023.09.26.15.25.07; Tue, 26 Sep 2023 15:25:08 -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=c+5VkV1V; 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 AD17D68CBCD; Wed, 27 Sep 2023 01:23:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2040.outbound.protection.outlook.com [40.92.66.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 871A868CAF7 for ; Wed, 27 Sep 2023 01:23:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZMh4L8BkrHZqd1iV0UeLWgYyhucODxVnUYYsn3W+IRfbLd9WJP7D4eoGy47zG79RxN9prEQAAQxIeZpuXolh5LdP3a4HG6Gr23xUtT8KKuuti+Mj8AMSb/NEY8wDa6PLHWrG4YIL14r97epmO0I/56ReiBNmVYC3QEYT8Y5wBsCxBvup1K5cFmPUE1f+SGSaJoFJNP48Y24N5G/r/J/ADmZpXNqd7I+9mTOWalZlGDkbA4uHWSsnbwy+c1rQ9AgwEC4zM2LeX/r2o1LUprp4GiFGlMbiZ1mslXYolPogctiJSDbrhH8qvi9NpCQ6zIlMQ+VtwBbE60DDKF+tQkB8tA== 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=8uY1xh/Kb7iUrb9jEmEHdGwOLVZy0tU1xyJcr7nBI7s=; b=Qial4C7VAXITgUEmqSJ5d8tQETKb9rargnBVq8m5I5ChysT/Ppf+62gMaM9uwwOqC1RGG1EOIWfPpVJnJnq/IxncV7zOiK7eDYbxWBf1/QcjZemyWaJ+VvMXEktXtlzR4++3OVzux87g9OQDvXNlRX0RbNLm1SPkJW/KMrcKu0m+0t0R6wZzUSzbnwBwqthRaqizUQ5BHzQQfUd3ato+Bx6swiM7g9hG2gVVzIJgDgLAH7Fg4QTB23PEh4cVNqnLheATy3kMdc+mJA2YdG1hDMKK06zY/dyML4qtKjECfPXM4/4fDzNjC2krQv4fHhVKhzEa1fqleki2GEgkdG03ww== 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=8uY1xh/Kb7iUrb9jEmEHdGwOLVZy0tU1xyJcr7nBI7s=; b=c+5VkV1Voj4dePqnc7E3b8pL4a9MWxEW9Hmt9DMHIQN043/SuL8KhjYoRAykYMQr+UBDsVxrl7XMAvpO+IIUrBvq37AOlpFP4KuRaBTXYYErAWifHuS+ZtG5jx8mSfgCv9Nrkpc7MAurzoGsbFEjQXPIZ/nwht9sJ2ic+dwpt2ZiCpPfNLvK85yJOagpPs6R/4p2EO10cO52Q4iYT6epi0Aebyuts889hnobWC+JOA1AS3vslvF/w9NAYPNlMV3DZlSx8/MCiZaZGizKswOMdGOz4VCdtbjHbYE5MOjvwfxdJS3dnnc5U/2Ndn72Pt/YrTv49p3ldtzsb1s3IdFIIw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:23:09 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:23:09 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:31 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [+1QZnnRKxJ7cvxy0G1YmrDso1sFxkeDh] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-59-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: 2904378d-8ee2-40ee-01e8-08dbbedf29a4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o2Ks72BihDnSMsA8hApWQ79CNa74cX5plvqmfp+i8eMqC1cwTqSTe1tBpCxYtEf5yf1C7NsN2A2IVXomgorhcDrIY9EfUnCUnDapwM1QqI/cGNKXVv7nZOybz/tLBSqIxlexmIUiZmLmO9d4THlP49WIXI3iyFJK9XHAqRprZ1B9asY55kd9SWlTm4ZNQaCLfXMcAvQP3sRYE7L53F3SEVT1g4H85VkP3qPKci1r2S897mAy/pQ7J4uC/Lwa2YYCkI6i71Th1j8ci3qsi/n8wCS1YPpF1wHfOr0flqcHu6hnFJMoEKWtlDzKwb12tM1lHFCPyAMeIJl+2Lwn4nS5xmmKm8Qy7/mGg/aOuuOsLEwyAGB9MBh7/Thb/6BSnF7mCnJ5PXi6ub5vJHd9NXoaebYB8Zfwr00GQGMDtb3KJp3fVgultuPbz3N0wlv38niuVa/nvcSg+8eaecyPmZC8GAgtpOf00oxA815vXfUOgjtgNoTRhn3fqoKrx01RV8JzRkdj5SmTo8hSkrv7/Z8GAnkXF2rcgpz3uxd8LWyLvR7utJeDfOtCEot/An8LCeU2c8O40DNPJca3Ss5NZvxFjFV1/Tlp8i9eJ2gka7imKSFDvjKPPhXhYVUTDEWlnHk1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 14x2VqbAu5Id76U6xTlfVTScQyeC7eIi3E3Kcd1bGQfCoEb+VdSyB1M9Wl7cT/grIBPVSZXHwsZwjCNgo+SR+sQHjoj8f4Um2HVtgsf6FsD6/qg7e5rUZ4CEIGEqAocC/JdvReESjnlN3VfnwACZv1YnSAndVfRk97QPxfo9zjWApttgLjA+w6uQGltYDpmrI8TEAhC/V1KE+9MEuM3gZ7qhZL24A+m6WLVT7AB8mFYifEOPIv6gcEH98u0DL16RG62DHQxI7dXtpDrvbE09ebNPl2De4mZ6Iu+FoNsPBS/pzKllBeG248K0CjNYv5Wmkb3sIYRDV3TcSmDIdtUms7EQ7idQka6JP9H9uUmxOexCUL0G4Tf/Lfl7dfbAGQ9NKTANbRVXm8rvOSOJvzZeWs3IkegVPbo5dew7z5KmIom+4W/4bOkERLIzCR23tNzp4Ouv9pWpac771qnJu7L829/elsDU7QO0uqni2Qqr1uFbdMg6FwhuPvgISvEulNcK9X0EbPNmoEa5BqjBDHvCIoJuyjEisAyhYdeyuDiVvVBG1ZPhVaABClt38HCups39fC4A0GjHAVfn46EHdxqZXtgZlTo6ouAicJMeGE5+Y01uGBqSHWfK5XUvWUKpVIwSyyfKP16mlm/2isqflJGwmup9+y9y/SEabL79yI/ey2RgWN5/9XpkJ3wo/34LZlYJ1QN1Kjnz2VE1b104E0VBAMx9SnXkmuNHFSEOepK/kFjuiUBHAGSdupwrrTuIv+z8NEerp3LrP2bl63/tC54O05xQ74/Mjc5AA073UDvZJfyhjdK9Hwt7lwQ4b31Vu9n6c0tNVP1qFR0KX9K5fzvnZJZh5X5/6T60mMaCnDXvuUh2qJHAAPQCdHAtxjlLysFpOidb9QnApDipt/tVBOigHMkhoKQkbjVdlSieY9iz0pG9JAO5fk49B6zW7b3svgiaS9Ji2zDniOfqXLd07RWobUNw2cRQc4H6ZYXJ66JQnbLwtkcSgfU9jUIUCCcljFL9FycjPA15KMU50UbEBcMLfrlCmE2qpIJdiEJkaQK8k4dVWJBWHds31tpwVLaXIlanffpU5oheQl891DpmBVNa3+3tSbUmlS0Wk2vZ4o/fND36XzNhjHUfOzIVbmH21ET1e4vyh7Twd7IdLsieDZ5gSqhD0Px1BQrzfpBQfx57Wqv+DJdzlMgNuELjfYDVa5TbAp9LxYITgOcWNR2EU/62m0Bsa26hn+VDwcjsM5R9aBRTKInomsCJsOQ6S2XW/U9U X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2904378d-8ee2-40ee-01e8-08dbbedf29a4 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:23:09.1022 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 60/61] avcodec/wmavoice: Avoid unnecessary VLC structure 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: lBqE0vEPf23B Everything besides VLC.table is basically write-only and even VLC.table can be removed by accessing the underlying table directly. Signed-off-by: Andreas Rheinhardt --- libavcodec/wmavoice.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index dd7cc64d63..4e93aadab2 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -60,7 +60,7 @@ /** * Frame type VLC coding. */ -static VLC frame_type_vlc; +static VLCElem frame_type_vlc[132]; /** * Adaptive codebook types. @@ -320,9 +320,9 @@ static av_cold void wmavoice_init_static_data(void) 14, 14, 14, 14 }; - VLC_INIT_STATIC_FROM_LENGTHS(&frame_type_vlc, VLC_NBITS, - FF_ARRAY_ELEMS(bits), bits, - 1, NULL, 0, 0, 0, 0, 132); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(frame_type_vlc, VLC_NBITS, + FF_ARRAY_ELEMS(bits), bits, + 1, NULL, 0, 0, 0, 0); } static av_cold void wmavoice_flush(AVCodecContext *ctx) @@ -1503,7 +1503,7 @@ static int synth_frame(AVCodecContext *ctx, GetBitContext *gb, int frame_idx, int pitch[MAX_BLOCKS], av_uninit(last_block_pitch); /* Parse frame type ("frame header"), see frame_descs */ - int bd_idx = s->vbm_tree[get_vlc2(gb, frame_type_vlc.table, 6, 3)], block_nsamples; + int bd_idx = s->vbm_tree[get_vlc2(gb, frame_type_vlc, 6, 3)], block_nsamples; if (bd_idx < 0) { av_log(ctx, AV_LOG_ERROR, From patchwork Tue Sep 26 22:17:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43971 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2212010pzh; Tue, 26 Sep 2023 15:25:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGae27VSfZKA1oBRF1du5SOIz8/NaHhgpV7esKoPVpIl+uGwi7T6ZI+B5013jJSGUC+nfL5 X-Received: by 2002:a05:6512:214c:b0:502:a46e:257a with SMTP id s12-20020a056512214c00b00502a46e257amr60976lfr.56.1695767116182; Tue, 26 Sep 2023 15:25:16 -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 x2-20020aa7dac2000000b005347894c8a1si1171674eds.131.2023.09.26.15.25.15; Tue, 26 Sep 2023 15:25:16 -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=jX15DCdU; 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 C1C3268CBDB; Wed, 27 Sep 2023 01:23:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2086.outbound.protection.outlook.com [40.92.58.86]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B4E268CBD6 for ; Wed, 27 Sep 2023 01:23:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cx4kaveEth4yPKnrJgLGZgAlqZqe3RNY3lwPwkFOAoBqgSirZZpSwGqh06apTPpgs8FBCJhR8yCLB+dX1n4ope9fRY8EdSXol28XiaRmU9yRDJY1yvT6YibkZgyMIIZq/4WtM0sTHovyySjfmGRWXh1Y1HCM1zEP0dA2y78O99zbbO/lvIHeUCHGl1IrB/UmNvC1nRTKG+xC07c42Hhy4B0XUvuxm0TwI0iMek1itlVHxe1NEkMlqh6QGdwziUVxHFw8jRvTBWAFlAwCkBdZMmW1/Vj1unKvBxX5ksUha2y8927TB5Dehy5SpJ7Bnio9s+UGEjcNZ+KKTxEINoQbjA== 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=Rb40G5Ip5gBAVRq/kyl1C7M4PbnTFQ5UK6VyTPzn0/Q=; b=GoTHEe3NEwWtrYMM2wM3nqvtnAXOs7gYICK/OTS89s1QbBvDtZuIi0VMx3sp9H3MywimV1iKelEpyih+GFpT7zkvChzglOb4BipgegaQFuJB2eq/2rZrGFlsISpVyPIuAlIxhSVPGIgqPhboQ6vmXS/CUd1xt5+uNQMFGZJqEldcuhVYTdbMFnyqXcU8N1WsHFxZYg0ZFLoX+2E73uKAz1ng05Vt9bipYJxodWbp7ASN/62Z7julFtLaaDxe6zc+KvtWsCxPwMDv5PmSvnIhppkVhp4hl6SBolG88/JtKugXfEy6E60zMHCBL22kq3EknnNeCMb5SjUOuhhJ90xtvg== 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=Rb40G5Ip5gBAVRq/kyl1C7M4PbnTFQ5UK6VyTPzn0/Q=; b=jX15DCdU3O5f6kMzKu/FukHQU8qaAG0HfK+GUB7TLjKEqFOwr3aBhd25QxLoXSC/NTCdTNy0iaJuoMDqiDooE3Q3PgaSlPWwhVL+kS/CWzFhQ3XiaGdRzD4A9fTJOAfGEKwp+1qmW0CneHyZzGgPFbYniJXneZZkwHuHmvn+q52KOq7b6HlTWhX+GW9n37km12R7jf4xzLJUFi7yI/xixIVKFEZ+B5oGwgh7f6vqU8aq3HgstNc2mQcQVvj+HnD/kRLV4S1j4hb3dPOtP0djnNegJj5JVnqazvT9BV0UPjdpmzQINvaXB0tx0VrCN41B0P1YGF+9D7KXHArxo1moEg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0160.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:23:11 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:23:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:32 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [XBqpkAZ3VHL437wK48VmFUfClAeo1H2R] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-60-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0160:EE_ X-MS-Office365-Filtering-Correlation-Id: fd1bc0b6-1122-43f2-3fb1-08dbbedf2b26 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dcwqe0MWvDvwEljecxZHv65PHnDk/HBotQ9FqRrZmlQWNDGOJMQnRD7gt0b9GRhEBsusCE5m/qRyvWLNzhHHL86sb295MMMxE0ofrFHBe4auRFIJoC/W4Nr1n4/iYXofmaprwlq7uywX++Mb4Qg/5UPU/TZYqinTWRIEDndMj0ikFPdaxUsXkzGOtbOjQVB6GV8Ze1Umc4c5y2vI0LJA0NEAs95Z6IW+scf7Rg/Qu4+fieLl4NFhhh/ba6hjO4GKO/ggKwd0GXo7vE6lwyMTsCjGN44xAhbSep63+2k33fNhAfWQZukP2Po/GPaHV32sz4OEaRD5mWS0YXn/uJIdJBBSYiYiJ0yydSX7VKstnkGDklHbEd+3tqAAJ/7t9OzTh0BkJ+TWuJP2UeVQu32tvt7Y593VHedca90b2UL7kQgIT/LNEhNmdVVUct9sFnCBOh4BhJ3xCo+TzbioK5u9Gh8X5KyTbfB3sehyxulVjzgJ0lohmEkoI/f9f4cYUrjJTsbJvBx8Xq8gr8xdUfYQuTAT3HPlW/jaTysjy6mDdC8BogvccTBsasproymjR2MK2P8mPFTPNHTaifAEh3/SxjCP26nNeF/b3vRy0gZBYRQy1SIqQX6kdVBZM0j9sDZt X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: b4xKCEJN6AZxzDEnSMkHDvHXrkb8tAWddP43r6SbXitwcj+2K3N51/lod/xvcMgJgt3PawitWXKSdYUAc7dtnIui6wK7Q2V2ERyUPr9vrVP+ipBxJ9eXTzXQgCbLNagZjWCwlGKRgRVUPpIc6kyJHOngz0Qhgylx98ACH7kYIlbUfSwg49WHKwjjBQ80yGVyA1EgGpIxJpUNiqYKGJej7ina/l+81Sg51qa2XBuzxfB0XKDq0DHxPYugM5dnn5y1BCV7/42JIeX60/1eRgrO2qgiiwb+UJc0WZGSfT0PulbXzeXT/NehCEpIc0EcCkAWmyzOpurVk21x2fqYs5AoeFGMVOfqUzytYgorLDrz5sIgjr569Mxo+UuwInijguZzCAgwHNFTiK7aLhKxR/2eIw1kxKI9oOHlk5UAUfujiBrJgpa7bLh1diHdfSPIvPp7Lvmbyh0NlkOk8Q9nkAgUNykMmapDixgw8oFoctj6UrF9xsgBrWJw85RQiQE37HABwJTYHO7lhxVByj779PxQqElDtY+cHQh25thdo3FQeObRLcuiziszMiM88SuTnmHrivmSN9WHpCHqpIwz+K3nSbDlpoCB4P4+uIkWSW4UFkuc35WWZa3M/ok8eN2uAUn80dRRReP6e+GyCLnlyFxZJIf9n/eey1uVDjJl3veT3Rbaffx1GhYOvgXuKMZS3d7PUFPzHpqmPSIuqIoLq7YTstliRz1WKOS9hkwwigPM4hGeciglk6/csGvidHL0cyVvxEgydFhiHN1mdT4LWmOT24tYHr8bKKCdGj1QZonnY+0yF9d+SwchhDKO0P47c46x/wPg2hY8rB9GcrRJkRzx6RxseAG83EG+RIjZqKHm0zxfp6qcf+fiqBZzEFUjjQEoOViEeykWktlsIMuDH5r/MxDYodH48x80vSv6fdL9OxHhQqtyDVN+Fv3WRdCTREaCzzyAIe67RqgNrcrUhjVjwhq1oDwJ/rVuwxy55UHaUGHTuEPLhkiSDD/NKnY49qKGH2qaPOCfcsdQ8SIC/u23Sl7rd9/FBTdPKeNIVR+iQltj+ZgpQoLZ8jrjDihc1ItEpdjZYW3m4zgJL9kpEsYNZTCQA7fPzmEW6sT6h1awVLSqISqH0E5P2WNOMOYhGnvrwjjTVL5sr0k/DgGg1PIW5ys09/ZB7MW8eWgJTfauZWBgwr3h8iZH4ZURKxFKIdbdS/GNEdwJHfg27rVVO90NJOWe68t+TM1aiG2Z27frkdRS3pc5JGRDkQI8fHN2h1yK X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd1bc0b6-1122-43f2-3fb1-08dbbedf2b26 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:23:11.6274 (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: AM8P250MB0160 Subject: [FFmpeg-devel] [PATCH 61/61] avcodec/vlc: Remove unused macros 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: GIKpjJsfnXo8 Signed-off-by: Andreas Rheinhardt --- libavcodec/vlc.h | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h index 679666801a..0cc106c499 100644 --- a/libavcodec/vlc.h +++ b/libavcodec/vlc.h @@ -185,47 +185,6 @@ void ff_vlc_free(VLC *vlc); #define VLC_INIT_OUTPUT_LE 8 #define VLC_INIT_LE (VLC_INIT_INPUT_LE | VLC_INIT_OUTPUT_LE) -#define VLC_INIT_CUSTOM_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, \ - h, i, j, flags, static_size) \ - do { \ - static VLCElem table[static_size]; \ - (vlc)->table = table; \ - (vlc)->table_allocated = static_size; \ - ff_vlc_init_sparse(vlc, bits, a, b, c, d, e, f, g, h, i, j, \ - flags | VLC_INIT_USE_STATIC); \ - } while (0) - -#define VLC_INIT_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, h, i, j, static_size) \ - VLC_INIT_CUSTOM_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, \ - h, i, j, 0, static_size) - -#define VLC_INIT_LE_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, h, i, j, static_size) \ - VLC_INIT_CUSTOM_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, \ - h, i, j, VLC_INIT_LE, static_size) - -#define VLC_INIT_CUSTOM_STATIC(vlc, bits, a, b, c, d, e, f, g, flags, static_size) \ - VLC_INIT_CUSTOM_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, \ - NULL, 0, 0, flags, static_size) - -#define VLC_INIT_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size) \ - VLC_INIT_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, NULL, 0, 0, static_size) - -#define VLC_INIT_LE_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size) \ - VLC_INIT_LE_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, NULL, 0, 0, static_size) - -#define VLC_INIT_STATIC_FROM_LENGTHS(vlc, bits, nb_codes, lens, len_wrap, \ - symbols, symbols_wrap, symbols_size, \ - offset, flags, static_size) \ - do { \ - static VLCElem table[static_size]; \ - (vlc)->table = table; \ - (vlc)->table_allocated = static_size; \ - ff_vlc_init_from_lengths(vlc, bits, nb_codes, lens, len_wrap, \ - symbols, symbols_wrap, symbols_size, \ - offset, flags | VLC_INIT_USE_STATIC, \ - NULL); \ - } while (0) - /** * For static VLCs, the number of bits can often be hardcoded * at each get_vlc2() callsite. Then using a full VLC would be uneconomical,