From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 13F5747897 for ; Tue, 26 Sep 2023 22:18:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C893B68CA7F; Wed, 27 Sep 2023 01:17:23 +0300 (EEST) 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: =?us-ascii?Q?WX+vzrNAdgTb1oOSwgVYfZ6dLeL0BdcG04vCuJxnJg9GtuDlsl5nezCg8O5+?= =?us-ascii?Q?oDxe+WG6u3d6Me3vthVdhw/k605JSaQwV7n0WvFz+Ge1tIiuQfrOxYAlMc8i?= =?us-ascii?Q?wdD7fL7ddo/Pb40jnFjycRq+Z5Z+bPhVlXlWtDDNs2aaU9Vx0MpWw1usQLhZ?= =?us-ascii?Q?KWSjXi2bszu+ZAKOuhG/5+jhXNY8uQaKP7GBSsHvEhQ7RrfeDi5bhPDvND/U?= =?us-ascii?Q?y4HD+jUc69q8LNuUaSmE+/zMt2/1CjI8AsBHXKAmEAbfBqr+H/9AGXpC36Oj?= =?us-ascii?Q?Lyxwztk984v1fK077zzmGp+XW/s7T2iUEuD0TXkq5atUwBhSoj6oFnlIAtFG?= =?us-ascii?Q?E1QshEuKvGRK85jKVWhkeyP2PkTtNm541QxxwufchqVHbShTGKEXVO5UmBc4?= =?us-ascii?Q?LRfXDOVURuCpr1sBf+3ZAMGRywlydXN808VhR/NAswk9kWDgezRCDlKR+6Mt?= =?us-ascii?Q?qRxwa//fbDJ4HhoXqhaca82EYRGLptyV7hi8mx2QNx03rzrPigifDHTwN+9H?= =?us-ascii?Q?AaixtMS+w8KLtpi6HgSXqafVg3Wp5LPC41lZIady424hQ35I+/BefnCgrGc4?= =?us-ascii?Q?u9CITPN5EgLP0KJRewWRWCbN0SEjdQTjA9b91FEjQqsTWjxWwuuDEAGtFLwi?= =?us-ascii?Q?sqqrXZgtCryapXuMiTRqNwceB4nsuc6OamcyWOeIZ7i9WXh84ehvOUVE+rDf?= =?us-ascii?Q?85IP3E5VR12DmyQHTlOcHgqEnz0YApq6jIBcVyakbicbvotqqYdMmTkj9b0g?= =?us-ascii?Q?RzaWMskSlYKlCDVc2V18qN7h+tT55jBfijPCtqF47jxMB47Bv2oD79Pdwyed?= =?us-ascii?Q?zuaMnT6ZcI6A7qkvtWMkq7z3A/NHfqTgig5Q4MixYGLQGzys58ChYyV4u3W3?= =?us-ascii?Q?/OQ/wZ+wUHRsZqt/nFa093oDL+LSgcaQvfBQMtan10MDW7ZDCArgzzr0vO0K?= =?us-ascii?Q?7JwJRmFijcEpEu+bkvUZfrtApbdFSBLGZxJuKVe/TEYP6Bbz1WKZ5ixFfLjU?= =?us-ascii?Q?K8RUIcocMsOXrhlW4Hom2NwGGjzHi8FiXSvTdmVzvHsCZCfer4KG74/dWvoJ?= =?us-ascii?Q?iIc8dKsQxlddrT5OqpAm7IgaCgIIGTF7SlP2Gjk5pVeX6dFF6YxMRfToqmm9?= =?us-ascii?Q?3FqurIpVI5ifqNhzEQukSEkUUGUD5lGDi+gKX6mWa6yFWGg+r6E/BNm2Q5No?= =?us-ascii?Q?Czd0yzmUz09EOxC6yCZk8yMvXWmxWR5Lomfm/nwJXokDlUQVBpdLwz0eSGds?= =?us-ascii?Q?ui1jszwUuqoiJ2MdINp9?= 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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++){ -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".