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;