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 41EBA43517 for ; Thu, 16 Jun 2022 09:50:29 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 81FE368B7DE; Thu, 16 Jun 2022 12:50:28 +0300 (EEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070048.outbound.protection.outlook.com [40.92.70.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 763B968B7D8 for ; Thu, 16 Jun 2022 12:50:22 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bgiHbyiXfBb1bdtOdiTM1fIUovZ9Np51wqmDnO6QHgCnnR0q2UcAADBtdVwAdRBW5e45Ksx8V6j1BKChgbxW+noId4VgrWLT1uBV6KvYhd62MyxW9MQIvXFaKKwBTXe1lBkjD6M7xEJvUXxCNF5q8uiuBW0nnA9LDC1OLK4oJwrlzERH1/xMlMypYbncFFc5tpH4bhBaocsr7JH3I6oKgbjNJ60SJh4ZimR8ufePUuyM/d9e6bycRA2SG/Gq+B5dayfOl7Rozv/ba0bt5Vt1SMxyraQ7emGkvCpPk09bE0UxX9KEM+RJ1urD1JGkdIecj+dsA+N6CFMxpkFp9DdqyQ== 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=P37aw4/AokyDs/+cSTOdtNCHgMWtzmNTprZE7VO4K+Q=; b=Wfj0CZzmFOJ7p2tzDBXEcJf4TfsNNh9yRhj2oNlYFbxQOQ1bAyWzc1EwLPXcHNk1hSvuBo4U92n99QfcslvvGAu1wj2P/d4NehwLtDoDrd61pUbCza/x0y48GFXOheXkYhOXgcvuEBFqov0XLB3NDhF7RtMva7dmEaexmzmZ3PUS+Yq2GZBHGhLgihsPzvswG7Sw2Re/TzUChKS3jYczCw/TFHCshpO4CTUIRGop18MgPGeWxZEPvZh4ZFImjvvoGjgdEg+n1+KY0BiqpqBC9ehs4+ZjmJmuUwb0SvxSq2Gf+QUCZwWR2G/v3GMJXqqGTq1tje/hOt5dmtDab5rkpA== 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=P37aw4/AokyDs/+cSTOdtNCHgMWtzmNTprZE7VO4K+Q=; b=felEESpkmxpXpnl2QlelyLhL7P52aYbU/W8zR2dWIM+GuMsgmsj7681Ej5gUzpRQEmh24nbf04z/BGk5dlcqSIAmqhZopJZ1+8V7OnvV2NS8ZGtrBsU2cVOUazv6eKNnWwYKzCJggBWI+a+wc1XOdB7KwbJCFIh9/HgrOVEmz+6QdMTVRAsBIwzrnKtyzoDyU+gV+38d9x9y/4lSaVKC5jI3z25NFoMnvhZTVqLsVfFy3rxdsAIDHcvMjkMvoH1EXB9LTYWjdwVzja8AK/NAMAKOdeXDtJYvyGhWSntBr57+1OUOlyjfE1gdNULTk1xXP98OjQ886GFbToUkF58DFA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB6290.eurprd01.prod.exchangelabs.com (2603:10a6:20b:160::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Thu, 16 Jun 2022 09:50:21 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5332.021; Thu, 16 Jun 2022 09:50:21 +0000 Message-ID: Date: Thu, 16 Jun 2022 11:50:19 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [I6zREdV8r5imBIL0TAjNe5Qf9FtV6qb9] X-ClientProxiedBy: ZR0P278CA0145.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5a5c1fa0-a3f0-459f-b51d-08da4f7da05f X-MS-TrafficTypeDiagnostic: AM0PR01MB6290:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nHPLeTqGaXh19N7N6Sjv0I2EHnJe4ZLviIVKAsjuD3Wjs1I+4dk14bLkdDhtPmSuCPnmY7ex209RinxNeDa3BBtBbK2JzBy1yrfUFsIkw7SsDu26E5Foz4xt3hXUVawCQPBuTqV59vZTpxKyNOCff/olpyQ7dZ3y/rxzMPMNk5mhwYPXCadC0lFgTi2GCMFkb6Wy59Zm1wFsl6URu3nDs9+hTWPqkvN8eFm2KOARM2TD4gEnSTZqJlhqQxWxEvpdji0STUPBALc3jmnU4BSqu6mUsRIU4L+VuMt61MwhSU/fTY+uRNYZCDRigybzG+V+u1dwuArrokTmlqbzoNteIxKaWvEDgdJbueLCHKjd2qyhgFHbEtVs3l5ONtLHrxEZBYvIr+e/bXMWbtwVTC58g0mvvC47xP9aiKslmLzNEu2mLrkhQXoc0NkGPtzMeHnodweOl4H+K0wM71lZWCWQ7mxQP1F8t6wsVTMs0adA8Iu5a1zHu9q3otpOOe4PthdVVNATp3LJl2U7kML73H4Ji51wO04HHLaQBLn97uDjF7dHcg0OtXaDFzwRF32TQw9k5q+etHwd5HO8isE4b0rveQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QXVmY1kyWExEVUtWcEdLNEdkTDhRWWxOTWRlN04vN3BINkJYQnFaUUVLTlJt?= =?utf-8?B?VGhMaXZoYW1WRWtsSXdwVUJvWmJaUEZmTFUwd1R5aTB3RDdxSXhaS0dtc283?= =?utf-8?B?OXcwSCt0SXNTOVorenBqeFhkeHlhUjlqbG9XcmUxKzNPdFo3SWlEbDBlSlEx?= =?utf-8?B?dlUrbWlaYlJpUnV5NnFKbmgyRUJzeDBQZzl0Y21YeUJTVVhlb1dnR1lCUys2?= =?utf-8?B?dDBtY0RIeHVmaVhiNlNVeEo1NHl3WWIwQVUyb200Ymc4WktCa2ZOTzF1TTg3?= =?utf-8?B?RTU4M0ZlTjhqVXRYcW1LQUJ2ZlVrV1ZiRlE5enF0Y3BWQWUxR0huL1ZYWkZY?= =?utf-8?B?QlhIVnZZOUQ0Q3ljVENlOUc1NGZlaVVSc1BuN3ZBdnVuL1ZDOHJybVBsUFZ1?= =?utf-8?B?VUVVTTU2Z2JaUGtURWE3NzNod2NQYXYwR2ptZnVpZHVwdlhsTXBHNE1pb2g1?= =?utf-8?B?eU9QVUJVQUF4NndVK1E4bHJmaHlpcFhmaGd5N1dDbEhUdjNFcE1MRTNMajdi?= =?utf-8?B?Y0FmcFBITnBxM0xXdW9Yc0RxWWJmZnYzSUdtRCtab055dGRkbVNDSTAyakpn?= =?utf-8?B?K1g3V0ROVEFyRWpoR0MrY1FSYlNpYWZzSU5OMUxJR2JxUGN1NytQWE5wZzBX?= =?utf-8?B?NWZPWm02NFhzYUxOY1IvSXNVZnhMUC9UR2ZtZWdzWlBlcWVkSFpjYVZFdE4x?= =?utf-8?B?R0xXVzNsRTdzbGRlOTYrKzcxUTl2TUxsNXljSXBTSEZVQzlYK0J1ck9tL1Rn?= =?utf-8?B?cXVIaGFqdTBocXk5MHpBM2FUM3M0Ky9oN0t0RzM0WXRmVDMySnBOZlh4S3VB?= =?utf-8?B?a0drRjZSVzNiTlc5SCtmT3NyekowRVlENVh0c1E0VGpPTm5sRGRGR1JVNUNI?= =?utf-8?B?S2VMV21KdXYvWFV5aUl3Y3Vqd3FZeUtlb3FPUko1N05YNE5JMXQ5dEcwZHpX?= =?utf-8?B?SlBmRng0d1JiRXBLNG1SZ1NXNmhLOE0xUDNSaTl6RVkzZVVWOFAydW1FVjU4?= =?utf-8?B?RTNvbnptVEdoTlJCdTdta3FjaGJGY0Z0ZysxRWtjeTd6UDFpVUVtSUZtMFRJ?= =?utf-8?B?RzRwa3NjV0dWdTBmM3lxQTZ3SzdmMlY2WTc1SHdQc3crZmVEaHJ0VEZqUlkz?= =?utf-8?B?TVdLRXFDMTlBWUFMMnZ2bkVZdmhWbG9JNEpxbEoxOHh4Y2hEWDRuM0lQV2xL?= =?utf-8?B?OFNsTnMwM0MyUnBuSWUrbnoyNVFISkF0bGxOQm9nUmhsNUFwVXZWcGYwUm5P?= =?utf-8?B?YjNEanFHc0ZTbXVGdERVSktIMjVRL3MzNmNyQmxqREF6S2pLSjMvVUh2eU1y?= =?utf-8?B?YW1kRmlwYlVHcUxROWpycEY2R0dZTGFMaGxTL056NFk1T3N6ZitSbjJKTERm?= =?utf-8?B?b3c2dHE1S2FFek5IbGZ6U09HOFEvM1d2d3QzbC8xMjFhNU16U3hJdEd5SmNk?= =?utf-8?B?U05hQ1VzYzlTYlh1cnVPdDJiWFREMVRQMGpDUW5VRnJIY0lLUnMvVmoweXNP?= =?utf-8?B?S0lZOFdiZGpyRWRqdFdleUI3SWFlamJhRUovMzk3dEgyRE1YUVhNbEh0K0Q1?= =?utf-8?B?T1hrY2pCK0hPMnlsNDc0dUlKc1lFYnQ2TjUvY1ZPK21GTG4vVnRnQzY4V2hK?= =?utf-8?B?WXhWWXViWnRPZmdOYUd0ZDZyNWhQU1NtN3g0YjcrV1grNUhpbmUvL2tiaHZV?= =?utf-8?B?RklsVTRnT2RKb1FRaTBkS3JpaTRkV0EvL2JqM2V1WUR4Y2JZNkZTZ1Y1MHJG?= =?utf-8?B?K3RFamhMSmNxSWptOUUvUzAydFdFZWJaN1pkNk9jU01CY2JEK1FxejhYWERU?= =?utf-8?B?Rjlrdzh1YU8yc1hsWWZnOFdZZVRIbVlJbW1Gck80ZjUwMzZ2TmtTd0MrTWZu?= =?utf-8?B?UUYzUVp2SlNUL3ArK3lvaHVUa1JKaTNjVWhWOElUWTF3cTd6RkFwakV4ak9L?= =?utf-8?B?VnE4aEVBTmR6TGJsTlJlY25lUFpDUlFvazVoZjcxMnZOZmp3azhHOXVKTDRt?= =?utf-8?B?dkJkS0lLU0h3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a5c1fa0-a3f0-459f-b51d-08da4f7da05f X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2022 09:50:21.0073 (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: AM0PR01MB6290 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/vlc: Use structure instead of VLC_TYPE array as VLC element 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 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: Andreas Rheinhardt: > In C, qualifiers for arrays are broken: > const VLC_TYPE (*foo)[2] is a pointer to an array of two const VLC_TYPE > elements and unfortunately this is not compatible with a pointer > to a const array of two VLC_TYPE, because the latter does not exist > as array types are never qualified (the qualifier applies to the base > type instead). This is the reason why get_vlc2() doesn't accept > a const VLC table despite not modifying the table at all, as > there is no automatic conversion from VLC_TYPE (*)[2] to > const VLC_TYPE (*)[2]. > > Fix this by using a structure VLCElem for the VLC table. > This also has the advantage of making it clear which > element is which. > > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/4xm.c | 2 +- > libavcodec/aacdec_template.c | 6 +++--- > libavcodec/aacps_common.c | 2 +- > libavcodec/aacsbr_template.c | 4 ++-- > libavcodec/asvdec.c | 6 +++--- > libavcodec/atrac3.c | 4 ++-- > libavcodec/atrac3plus.c | 2 +- > libavcodec/atrac9dec.c | 2 +- > libavcodec/bink.c | 2 +- > libavcodec/cfhddata.c | 8 ++++---- > libavcodec/clearvideo.c | 2 +- > libavcodec/dcahuff.c | 2 +- > libavcodec/dvdec.c | 6 +++--- > libavcodec/faxcompr.c | 4 ++-- > libavcodec/get_bits.h | 24 ++++++++++++------------ > libavcodec/h264_cavlc.c | 16 ++++++++-------- > libavcodec/huffyuvdec.c | 20 ++++++++++---------- > libavcodec/imc.c | 2 +- > libavcodec/intrax8.c | 2 +- > libavcodec/ivi.c | 2 +- > libavcodec/mlpdec.c | 2 +- > libavcodec/mobiclip.c | 2 +- > libavcodec/mpc7.c | 2 +- > libavcodec/mpc8.c | 2 +- > libavcodec/mpeg12.c | 6 +++--- > libavcodec/mpeg4videodec.c | 2 +- > libavcodec/mpegaudiodec_common.c | 6 +++--- > libavcodec/msmpeg4dec.c | 2 +- > libavcodec/mss4.c | 2 +- > libavcodec/qdm2_tablegen.c | 2 +- > libavcodec/qdm2_tablegen.h | 2 +- > libavcodec/qdmc.c | 2 +- > libavcodec/rl.c | 6 +++--- > libavcodec/rv10.c | 10 +++++----- > libavcodec/rv34.c | 2 +- > libavcodec/rv40.c | 4 ++-- > libavcodec/svq1dec.c | 2 +- > libavcodec/tableprint_vlc.h | 17 ++++++++--------- > libavcodec/tscc2.c | 2 +- > libavcodec/vc1.c | 2 +- > libavcodec/vlc.c | 26 +++++++++++++------------- > libavcodec/vlc.h | 13 +++++++++---- > libavcodec/vp3.c | 2 +- > 43 files changed, 120 insertions(+), 116 deletions(-) > > diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c > index 3fb3568afd..7b88631a6b 100644 > --- a/libavcodec/4xm.c > +++ b/libavcodec/4xm.c > @@ -250,7 +250,7 @@ static void idct(int16_t block[64]) > > static av_cold void init_vlcs(void) > { > - static VLC_TYPE table[2][4][32][2]; > + static VLCElem table[2][4][32]; > int i, j; > > for (i = 0; i < 2; i++) { > diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c > index 463bf92fc0..70382c3175 100644 > --- a/libavcodec/aacdec_template.c > +++ b/libavcodec/aacdec_template.c > @@ -1221,8 +1221,8 @@ static void aacdec_init(AACContext *ac); > > static av_cold void aac_static_table_init(void) > { > - static VLC_TYPE vlc_buf[304 + 270 + 550 + 300 + 328 + > - 294 + 306 + 268 + 510 + 366 + 462][2]; > + 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; > @@ -1821,7 +1821,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 */ > - VLC_TYPE (*vlc_tab)[2] = vlc_spectral[cbt_m1].table; > + const VLCElem *vlc_tab = vlc_spectral[cbt_m1].table; > OPEN_READER(re, gb); > > switch (cbt_m1 >> 1) { > diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c > index 8653b871ca..c388d5b9bc 100644 > --- a/libavcodec/aacps_common.c > +++ b/libavcodec/aacps_common.c > @@ -78,7 +78,7 @@ static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCom > int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \ > { \ > int b, num = ps->nr_ ## PAR ## _par; \ > - VLC_TYPE (*vlc_table)[2] = vlc_ps[table_idx].table; \ > + const VLCElem *vlc_table = vlc_ps[table_idx].table; \ > if (dt) { \ > int e_prev = e ? e - 1 : ps->num_env_old - 1; \ > e_prev = FFMAX(e_prev, 0); \ > diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c > index 774f12e77a..87791d8791 100644 > --- a/libavcodec/aacsbr_template.c > +++ b/libavcodec/aacsbr_template.c > @@ -811,7 +811,7 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi > { > int bits; > int i, j, k; > - VLC_TYPE (*t_huff)[2], (*f_huff)[2]; > + 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; > @@ -899,7 +899,7 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo > SBRData *ch_data, int ch) > { > int i, j; > - VLC_TYPE (*t_huff)[2], (*f_huff)[2]; > + const VLCElem *t_huff, *f_huff; > int t_lav, f_lav; > int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; > > diff --git a/libavcodec/asvdec.c b/libavcodec/asvdec.c > index 5b2c71be82..57ba4c5b5e 100644 > --- a/libavcodec/asvdec.c > +++ b/libavcodec/asvdec.c > @@ -78,7 +78,7 @@ static inline int asv1_get_level(GetBitContext *gb) > } > > // get_vlc2() is big-endian in this file > -static inline int asv2_get_vlc2(GetBitContext *gb, VLC_TYPE (*table)[2], int bits) > +static inline int asv2_get_vlc2(GetBitContext *gb, const VLCElem *table, int bits) > { > unsigned int index; > int code, n; > @@ -87,8 +87,8 @@ static inline int asv2_get_vlc2(GetBitContext *gb, VLC_TYPE (*table)[2], int bit > UPDATE_CACHE_LE(re, gb); > > index = SHOW_UBITS_LE(re, gb, bits); > - code = table[index][0]; > - n = table[index][1]; > + code = table[index].sym; > + n = table[index].len; > LAST_SKIP_BITS(re, gb, n); > > CLOSE_READER(re, gb); > diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c > index 97f59438e1..d5f6fea4d4 100644 > --- a/libavcodec/atrac3.c > +++ b/libavcodec/atrac3.c > @@ -122,7 +122,7 @@ typedef struct ATRAC3Context { > } ATRAC3Context; > > static DECLARE_ALIGNED(32, float, mdct_window)[MDCT_SIZE]; > -static VLC_TYPE atrac3_vlc_table[7 * 1 << ATRAC3_VLC_BITS][2]; > +static VLCElem atrac3_vlc_table[7 * 1 << ATRAC3_VLC_BITS]; > static VLC spectral_coeff_tab[7]; > > /** > @@ -852,7 +852,7 @@ static int atrac3al_decode_frame(AVCodecContext *avctx, AVFrame *frame, > > static av_cold void atrac3_init_static_data(void) > { > - VLC_TYPE (*table)[2] = atrac3_vlc_table; > + VLCElem *table = atrac3_vlc_table; > const uint8_t (*hufftabs)[2] = atrac3_hufftabs; > int i; > > diff --git a/libavcodec/atrac3plus.c b/libavcodec/atrac3plus.c > index 3a0a0d5f36..a0836f1178 100644 > --- a/libavcodec/atrac3plus.c > +++ b/libavcodec/atrac3plus.c > @@ -31,7 +31,7 @@ > #include "atrac3plus.h" > #include "atrac3plus_data.h" > > -static VLC_TYPE tables_data[154276][2]; > +static VLCElem tables_data[154276]; > static VLC wl_vlc_tabs[4]; > static VLC sf_vlc_tabs[8]; > static VLC ct_vlc_tabs[4]; > diff --git a/libavcodec/atrac9dec.c b/libavcodec/atrac9dec.c > index d9ad03140c..6c1f0d1759 100644 > --- a/libavcodec/atrac9dec.c > +++ b/libavcodec/atrac9dec.c > @@ -844,7 +844,7 @@ static av_cold void atrac9_init_vlc(VLC *vlc, int nb_bits, int nb_codes, > const uint8_t (**tab)[2], > unsigned *buf_offset, int offset) > { > - static VLC_TYPE vlc_buf[24812][2]; > + static VLCElem vlc_buf[24812]; > > vlc->table = &vlc_buf[*buf_offset]; > vlc->table_allocated = FF_ARRAY_ELEMS(vlc_buf) - *buf_offset; > diff --git a/libavcodec/bink.c b/libavcodec/bink.c > index ce740ad275..ae2c65f19f 100644 > --- a/libavcodec/bink.c > +++ b/libavcodec/bink.c > @@ -1314,7 +1314,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, > static av_cold void bink_init_vlcs(void) > { > for (int i = 0, offset = 0; i < 16; i++) { > - static VLC_TYPE table[976][2]; > + static VLCElem table[976]; > const int maxbits = bink_tree_lens[i][15]; > bink_trees[i].table = table + offset; > bink_trees[i].table_allocated = 1 << maxbits; > diff --git a/libavcodec/cfhddata.c b/libavcodec/cfhddata.c > index 5df68d4b3c..55c8004bdd 100644 > --- a/libavcodec/cfhddata.c > +++ b/libavcodec/cfhddata.c > @@ -308,8 +308,8 @@ av_cold int ff_cfhd_init_vlcs(CFHDContext *s) > if (ret < 0) > return ret; > for (i = 0; i < s->vlc_9.table_size; i++) { > - int code = s->vlc_9.table[i][0]; > - int len = s->vlc_9.table[i][1]; > + int code = s->vlc_9.table[i].sym; > + int len = s->vlc_9.table[i].len; > int level, run; > > if (len < 0) { // more bits needed > @@ -351,8 +351,8 @@ av_cold int ff_cfhd_init_vlcs(CFHDContext *s) > av_assert0(s->vlc_18.table_size == 4572); > > for (i = 0; i < s->vlc_18.table_size; i++) { > - int code = s->vlc_18.table[i][0]; > - int len = s->vlc_18.table[i][1]; > + int code = s->vlc_18.table[i].sym; > + int len = s->vlc_18.table[i].len; > int level, run; > > if (len < 0) { // more bits needed > diff --git a/libavcodec/clearvideo.c b/libavcodec/clearvideo.c > index 37283d4ddd..075c6e9461 100644 > --- a/libavcodec/clearvideo.c > +++ b/libavcodec/clearvideo.c > @@ -84,7 +84,7 @@ typedef struct CLVContext { > > static VLC dc_vlc, ac_vlc; > static LevelCodes lev[4 + 3 + 3]; // 0..3: Y, 4..6: U, 7..9: V > -static VLC_TYPE vlc_buf[16716][2]; > +static VLCElem vlc_buf[16716]; > > static inline int decode_block(CLVContext *ctx, int16_t *blk, int has_ac, > int ac_quant) > diff --git a/libavcodec/dcahuff.c b/libavcodec/dcahuff.c > index fa36735c0b..8d5541f9d0 100644 > --- a/libavcodec/dcahuff.c > +++ b/libavcodec/dcahuff.c > @@ -1264,7 +1264,7 @@ VLC ff_dca_vlc_rsd; > > av_cold void ff_dca_init_vlcs(void) > { > - static VLC_TYPE dca_table[30214][2]; > + static VLCElem dca_table[30214]; > int i, j, k = 0; > > #define DCA_INIT_VLC(vlc, a, b, c, d) \ > diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c > index a0bae6f57e..d6f073058c 100644 > --- a/libavcodec/dvdec.c > +++ b/libavcodec/dvdec.c > @@ -137,7 +137,7 @@ static RL_VLC_ELEM dv_rl_vlc[1664]; > > static void dv_init_static(void) > { > - VLC_TYPE vlc_buf[FF_ARRAY_ELEMS(dv_rl_vlc)][2] = { 0 }; > + VLCElem vlc_buf[FF_ARRAY_ELEMS(dv_rl_vlc)] = { 0 }; > VLC dv_vlc = { .table = vlc_buf, .table_allocated = FF_ARRAY_ELEMS(vlc_buf) }; > uint16_t new_dv_vlc_bits[NB_DV_VLC * 2]; > uint8_t new_dv_vlc_len[NB_DV_VLC * 2]; > @@ -171,8 +171,8 @@ static void dv_init_static(void) > av_assert1(dv_vlc.table_size == 1664); > > for (int i = 0; i < dv_vlc.table_size; i++) { > - int code = dv_vlc.table[i][0]; > - int len = dv_vlc.table[i][1]; > + int code = dv_vlc.table[i].sym; > + int len = dv_vlc.table[i].len; > int level, run; > > if (len < 0) { // more bits needed > diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c > index b283831dae..d9dec3fcb8 100644 > --- a/libavcodec/faxcompr.c > +++ b/libavcodec/faxcompr.c > @@ -99,8 +99,8 @@ static VLC ccitt_vlc[2], ccitt_group3_2d_vlc; > > static av_cold void ccitt_unpack_init(void) > { > - static VLC_TYPE code_table1[528][2]; > - static VLC_TYPE code_table2[648][2]; > + static VLCElem code_table1[528]; > + static VLCElem code_table2[648]; > int i; > > ccitt_vlc[0].table = code_table1; > diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h > index d4e9276da1..16f8af5107 100644 > --- a/libavcodec/get_bits.h > +++ b/libavcodec/get_bits.h > @@ -710,8 +710,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) > unsigned int index; \ > \ > index = SHOW_UBITS(name, gb, bits); \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > \ > if (max_depth > 1 && n < 0) { \ > LAST_SKIP_BITS(name, gb, bits); \ > @@ -720,8 +720,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) > nb_bits = -n; \ > \ > index = SHOW_UBITS(name, gb, nb_bits) + code; \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > if (max_depth > 2 && n < 0) { \ > LAST_SKIP_BITS(name, gb, nb_bits); \ > UPDATE_CACHE(name, gb); \ > @@ -729,8 +729,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) > nb_bits = -n; \ > \ > index = SHOW_UBITS(name, gb, nb_bits) + code; \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > } \ > } \ > SKIP_BITS(name, gb, n); \ > @@ -775,15 +775,15 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) > > /* Return the LUT element for the given bitstream configuration. */ > static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits, > - VLC_TYPE (*table)[2]) > + const VLCElem *table) > { > unsigned idx; > > *nb_bits = -*n; > idx = show_bits(s, *nb_bits) + code; > - *n = table[idx][1]; > + *n = table[idx].len; > > - return table[idx][0]; > + return table[idx].sym; > } > > /** > @@ -795,14 +795,14 @@ static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits, > * = (max_vlc_length + bits - 1) / bits > * @returns the code parsed or -1 if no vlc matches > */ > -static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2], > +static av_always_inline int get_vlc2(GetBitContext *s, const VLCElem *table, > int bits, int max_depth) > { > #if CACHED_BITSTREAM_READER > int nb_bits; > unsigned idx = show_bits(s, bits); > - int code = table[idx][0]; > - int n = table[idx][1]; > + int code = table[idx].sym; > + int n = table[idx].len; > > if (max_depth > 1 && n < 0) { > skip_remaining(s, bits); > diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c > index 9191df0303..d061a5953b 100644 > --- a/libavcodec/h264_cavlc.c > +++ b/libavcodec/h264_cavlc.c > @@ -235,35 +235,35 @@ static const uint8_t run_bits[7][16]={ > }; > > static VLC coeff_token_vlc[4]; > -static VLC_TYPE coeff_token_vlc_tables[520+332+280+256][2]; > +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 VLC_TYPE chroma_dc_coeff_token_vlc_table[256][2]; > +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 VLC_TYPE chroma422_dc_coeff_token_vlc_table[8192][2]; > +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 VLC_TYPE total_zeros_vlc_tables[15][512][2]; > +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 VLC_TYPE chroma_dc_total_zeros_vlc_tables[3][8][2]; > +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 VLC_TYPE chroma422_dc_total_zeros_vlc_tables[7][32][2]; > +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 VLC_TYPE run_vlc_tables[6][8][2]; > +static VLCElem run_vlc_tables[6][8]; > static const int run_vlc_tables_size = 8; > > static VLC run7_vlc; > -static VLC_TYPE run7_vlc_table[96][2]; > +static VLCElem run7_vlc_table[96]; > static const int run7_vlc_table_size = 96; > > #define LEVEL_TAB_BITS 8 > diff --git a/libavcodec/huffyuvdec.c b/libavcodec/huffyuvdec.c > index 07fa11e37a..acc4aafdc2 100644 > --- a/libavcodec/huffyuvdec.c > +++ b/libavcodec/huffyuvdec.c > @@ -566,24 +566,24 @@ static av_cold int decode_init(AVCodecContext *avctx) > > /** Subset of GET_VLC for use in hand-roller VLC code */ > #define VLC_INTERN(dst, table, gb, name, bits, max_depth) \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > if (max_depth > 1 && n < 0) { \ > LAST_SKIP_BITS(name, gb, bits); \ > UPDATE_CACHE(name, gb); \ > \ > nb_bits = -n; \ > index = SHOW_UBITS(name, gb, nb_bits) + code; \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > if (max_depth > 2 && n < 0) { \ > LAST_SKIP_BITS(name, gb, nb_bits); \ > UPDATE_CACHE(name, gb); \ > \ > nb_bits = -n; \ > index = SHOW_UBITS(name, gb, nb_bits) + code; \ > - code = table[index][0]; \ > - n = table[index][1]; \ > + code = table[index].sym; \ > + n = table[index].len; \ > } \ > } \ > dst = code; \ > @@ -594,7 +594,7 @@ static av_cold int decode_init(AVCodecContext *avctx) > bits, max_depth, OP) \ > do { \ > unsigned int index = SHOW_UBITS(name, gb, bits); \ > - int code, n = dtable[index][1]; \ > + int code, n = dtable[index].len; \ > \ > if (n<=0) { \ > int nb_bits; \ > @@ -604,7 +604,7 @@ static av_cold int decode_init(AVCodecContext *avctx) > index = SHOW_UBITS(name, gb, bits); \ > VLC_INTERN(dst1, table2, gb, name, bits, max_depth); \ > } else { \ > - code = dtable[index][0]; \ > + code = dtable[index].sym; \ > OP(dst0, dst1, code); \ > LAST_SKIP_BITS(name, gb, n); \ > } \ > @@ -752,10 +752,10 @@ static av_always_inline void decode_bgr_1(HYuvContext *s, int count, > > UPDATE_CACHE(re, &s->gb); > index = SHOW_UBITS(re, &s->gb, VLC_BITS); > - n = s->vlc[4].table[index][1]; > + n = s->vlc[4].table[index].len; > > if (n>0) { > - code = s->vlc[4].table[index][0]; > + code = s->vlc[4].table[index].sym; > *(uint32_t *) &s->temp[0][4 * i] = s->pix_bgr_map[code]; > LAST_SKIP_BITS(re, &s->gb, n); > } else { > diff --git a/libavcodec/imc.c b/libavcodec/imc.c > index ee12cd913f..94b9ac674c 100644 > --- a/libavcodec/imc.c > +++ b/libavcodec/imc.c > @@ -118,7 +118,7 @@ static VLC huffman_vlc[4][4]; > #define IMC_VLC_BITS 9 > #define VLC_TABLES_SIZE 9512 > > -static VLC_TYPE vlc_tables[VLC_TABLES_SIZE][2]; > +static VLCElem vlc_tables[VLC_TABLES_SIZE]; > > static inline double freq2bark(double freq) > { > diff --git a/libavcodec/intrax8.c b/libavcodec/intrax8.c > index 0bd0db29c4..73b8aeea78 100644 > --- a/libavcodec/intrax8.c > +++ b/libavcodec/intrax8.c > @@ -52,7 +52,7 @@ static VLC j_orient_vlc[2][4]; // [quant], [select] > static av_cold void x8_init_vlc(VLC *vlc, int nb_bits, int nb_codes, > int *offset, const uint8_t table[][2]) > { > - static VLC_TYPE vlc_buf[VLC_BUFFER_SIZE][2]; > + static VLCElem vlc_buf[VLC_BUFFER_SIZE]; > > vlc->table = &vlc_buf[*offset]; > vlc->table_allocated = VLC_BUFFER_SIZE - *offset; > diff --git a/libavcodec/ivi.c b/libavcodec/ivi.c > index 48fcf9bfd8..6577fa335f 100644 > --- a/libavcodec/ivi.c > +++ b/libavcodec/ivi.c > @@ -161,7 +161,7 @@ static int ivi_create_huff_from_desc(const IVIHuffDesc *cb, VLC *vlc, int flag) > static av_cold void ivi_init_static_vlc(void) > { > int i; > - static VLC_TYPE table_data[8192 * 16][2]; > + static VLCElem table_data[8192 * 16]; > > for (i = 0; i < 8; i++) { > ivi_mb_vlc_tabs[i].table = table_data + i * 2 * 8192; > diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c > index c5d8f5bde8..caf35dca0e 100644 > --- a/libavcodec/mlpdec.c > +++ b/libavcodec/mlpdec.c > @@ -220,7 +220,7 @@ static VLC huff_vlc[3]; > static av_cold void init_static(void) > { > for (int i = 0; i < 3; i++) { > - static VLC_TYPE vlc_buf[3 * VLC_STATIC_SIZE][2]; > + static VLCElem vlc_buf[3 * VLC_STATIC_SIZE]; > huff_vlc[i].table = &vlc_buf[i * VLC_STATIC_SIZE]; > huff_vlc[i].table_allocated = VLC_STATIC_SIZE; > init_vlc(&huff_vlc[i], VLC_BITS, 18, > diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c > index 2d09bc1f72..dcf788c630 100644 > --- a/libavcodec/mobiclip.c > +++ b/libavcodec/mobiclip.c > @@ -288,7 +288,7 @@ static av_cold void mobiclip_init_static(void) > syms1, sizeof(*syms1), sizeof(*syms1), > 0, 0, 1 << MOBI_RL_VLC_BITS); > for (int i = 0; i < 2; i++) { > - static VLC_TYPE vlc_buf[2 * 16 << MOBI_MV_VLC_BITS][2]; > + static VLCElem vlc_buf[2 * 16 << MOBI_MV_VLC_BITS]; > 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; > diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c > index 1b722714f0..837507ba5f 100644 > --- a/libavcodec/mpc7.c > +++ b/libavcodec/mpc7.c > @@ -44,7 +44,7 @@ static VLC scfi_vlc, dscf_vlc, hdr_vlc, quant_vlc[MPC7_QUANT_VLC_TABLES][2]; > > static av_cold void mpc7_init_static(void) > { > - static VLC_TYPE quant_tables[7224][2]; > + static VLCElem quant_tables[7224]; > const uint8_t *raw_quant_table = mpc7_quant_vlcs; > > INIT_VLC_STATIC_FROM_LENGTHS(&scfi_vlc, MPC7_SCFI_BITS, MPC7_SCFI_SIZE, > diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c > index 7903e5df8a..9d084e1664 100644 > --- a/libavcodec/mpc8.c > +++ b/libavcodec/mpc8.c > @@ -92,7 +92,7 @@ static av_cold void build_vlc(VLC *vlc, unsigned *buf_offset, > const uint8_t codes_counts[16], > const uint8_t **syms, int offset) > { > - static VLC_TYPE vlc_buf[9296][2]; > + static VLCElem vlc_buf[9296]; > uint8_t len[MPC8_MAX_VLC_SIZE]; > unsigned num = 0; > > diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c > index 622cdfd299..d78e25a777 100644 > --- a/libavcodec/mpeg12.c > +++ b/libavcodec/mpeg12.c > @@ -66,14 +66,14 @@ static const uint8_t table_mb_btype[11][2] = { > av_cold void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags) > { > int i; > - VLC_TYPE table[680][2] = {{0}}; > + VLCElem table[680] = { 0 }; > VLC vlc = { .table = table, .table_allocated = static_size }; > av_assert0(static_size <= FF_ARRAY_ELEMS(table)); > init_vlc(&vlc, TEX_VLC_BITS, rl->n + 2, &rl->table_vlc[0][1], 4, 2, &rl->table_vlc[0][0], 4, 2, INIT_VLC_USE_NEW_STATIC | flags); > > for (i = 0; i < vlc.table_size; i++) { > - int code = vlc.table[i][0]; > - int len = vlc.table[i][1]; > + int code = vlc.table[i].sym; > + int len = vlc.table[i].len; > int level, run; > > if (len == 0) { // illegal code > diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c > index e2bde73639..220d415c6f 100644 > --- a/libavcodec/mpeg4videodec.c > +++ b/libavcodec/mpeg4videodec.c > @@ -3588,7 +3588,7 @@ static av_cold void mpeg4_init_static(void) > 0, 0, 528); > > for (unsigned i = 0, offset = 0; i < 12; i++) { > - static VLC_TYPE vlc_buf[6498][2]; > + 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; > diff --git a/libavcodec/mpegaudiodec_common.c b/libavcodec/mpegaudiodec_common.c > index ed2de8adbb..71fc2e7c81 100644 > --- a/libavcodec/mpegaudiodec_common.c > +++ b/libavcodec/mpegaudiodec_common.c > @@ -65,10 +65,10 @@ const uint8_t ff_lsf_nsf_table[6][3][4] = { > > /* mpegaudio layer 3 huffman tables */ > VLC ff_huff_vlc[16]; > -static VLC_TYPE huff_vlc_tables[128 + 128 + 128 + 130 + 128 + 154 + 166 + 142 + > - 204 + 190 + 170 + 542 + 460 + 662 + 414][2]; > +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]; > -static VLC_TYPE huff_quad_vlc_tables[64 + 16][2]; > +static VLCElem huff_quad_vlc_tables[64 + 16]; > > static const uint8_t mpa_hufflens[] = { > /* Huffman table 1 - 4 entries */ > diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c > index a03e43f88c..abebeffc7c 100644 > --- a/libavcodec/msmpeg4dec.c > +++ b/libavcodec/msmpeg4dec.c > @@ -348,7 +348,7 @@ static av_cold void msmpeg4_decode_init_static(void) > &ff_v2_mb_type[0][0], 2, 1, 128); > > for (unsigned i = 0, offset = 0; i < 4; i++) { > - static VLC_TYPE vlc_buf[1636 + 2648 + 1532 + 2488][2]; > + 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; > init_vlc(&ff_mb_non_intra_vlc[i], MB_NON_INTRA_VLC_BITS, 128, > diff --git a/libavcodec/mss4.c b/libavcodec/mss4.c > index be73e52a91..9f3c4a593d 100644 > --- a/libavcodec/mss4.c > +++ b/libavcodec/mss4.c > @@ -100,7 +100,7 @@ static VLC vec_entry_vlc[2]; > static av_cold void mss4_init_vlc(VLC *vlc, unsigned *offset, > const uint8_t *lens, const uint8_t *syms) > { > - static VLC_TYPE vlc_buf[2146][2]; > + static VLCElem vlc_buf[2146]; > uint8_t bits[MAX_ENTRIES]; > int i, j; > int idx = 0; > diff --git a/libavcodec/qdm2_tablegen.c b/libavcodec/qdm2_tablegen.c > index e19b49b235..932da0c50b 100644 > --- a/libavcodec/qdm2_tablegen.c > +++ b/libavcodec/qdm2_tablegen.c > @@ -42,7 +42,7 @@ int main(void) > > qdm2_init_vlc(); > > - WRITE_2D_ARRAY("static const", VLC_TYPE, qdm2_table); > + WRITE_VLC_TABLE("static const", qdm2_table); > WRITE_VLC_TYPE("static const", vlc_tab_level, qdm2_table); > WRITE_VLC_TYPE("static const", vlc_tab_diff, qdm2_table); > WRITE_VLC_TYPE("static const", vlc_tab_run, qdm2_table); > diff --git a/libavcodec/qdm2_tablegen.h b/libavcodec/qdm2_tablegen.h > index ca47fea2dc..a68ea8599b 100644 > --- a/libavcodec/qdm2_tablegen.h > +++ b/libavcodec/qdm2_tablegen.h > @@ -109,7 +109,7 @@ static VLC vlc_tab_type30; > static VLC vlc_tab_type34; > static VLC vlc_tab_fft_tone_offset[5]; > > -static VLC_TYPE qdm2_table[3838][2]; > +static VLCElem qdm2_table[3838]; > > static av_cold void build_vlc(VLC *vlc, int nb_bits, int nb_codes, > unsigned *offset, const uint8_t tab[][2]) > diff --git a/libavcodec/qdmc.c b/libavcodec/qdmc.c > index 7c069a8012..f24e94b187 100644 > --- a/libavcodec/qdmc.c > +++ b/libavcodec/qdmc.c > @@ -169,7 +169,7 @@ static av_cold void qdmc_init_static_data(void) > int i; > > for (unsigned i = 0, offset = 0; i < FF_ARRAY_ELEMS(vtable); i++) { > - static VLC_TYPE vlc_buffer[13698][2]; > + static VLCElem vlc_buffer[13698]; > vtable[i].table = &vlc_buffer[offset]; > vtable[i].table_allocated = FF_ARRAY_ELEMS(vlc_buffer) - offset; > ff_init_vlc_from_lengths(&vtable[i], huff_bits[i], huff_sizes[i], > diff --git a/libavcodec/rl.c b/libavcodec/rl.c > index 4ce003ccf4..645a5362f7 100644 > --- a/libavcodec/rl.c > +++ b/libavcodec/rl.c > @@ -62,7 +62,7 @@ av_cold void ff_rl_init(RLTable *rl, > av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size) > { > int i, q; > - VLC_TYPE table[1500][2] = {{0}}; > + VLCElem table[1500] = { 0 }; > VLC vlc = { .table = table, .table_allocated = static_size }; > av_assert0(static_size <= FF_ARRAY_ELEMS(table)); > init_vlc(&vlc, 9, rl->n + 1, &rl->table_vlc[0][1], 4, 2, &rl->table_vlc[0][0], 4, 2, INIT_VLC_USE_NEW_STATIC); > @@ -79,8 +79,8 @@ av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size) > qadd = 0; > } > for (i = 0; i < vlc.table_size; i++) { > - int code = vlc.table[i][0]; > - int len = vlc.table[i][1]; > + int code = vlc.table[i].sym; > + int len = vlc.table[i].len; > int level, run; > > if (len == 0) { // illegal code > diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c > index 8f8a755ac3..e394a63a2b 100644 > --- a/libavcodec/rv10.c > +++ b/libavcodec/rv10.c > @@ -340,7 +340,7 @@ static av_cold void rv10_build_vlc(VLC *vlc, const uint16_t len_count[15], > > static av_cold void rv10_init_static(void) > { > - static VLC_TYPE table[1472 + 992][2]; > + static VLCElem table[1472 + 992]; > > rv_dc_lum.table = table; > rv_dc_lum.table_allocated = 1472; > @@ -349,8 +349,8 @@ static av_cold void rv10_init_static(void) > for (int i = 0; i < 1 << (DC_VLC_BITS - 7 /* Length of skip prefix */); i++) { > /* All codes beginning with 0x7F have the same length and value. > * Modifying the table directly saves us the useless subtables. */ > - rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i][0] = 255; > - rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i][1] = 18; > + rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i].sym = 255; > + rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i].len = 18; > } > rv_dc_chrom.table = &table[1472]; > rv_dc_chrom.table_allocated = 992; > @@ -358,8 +358,8 @@ static av_cold void rv10_init_static(void) > rv_sym_run_len, FF_ARRAY_ELEMS(rv_sym_run_len) - 2); > for (int i = 0; i < 1 << (DC_VLC_BITS - 9 /* Length of skip prefix */); i++) { > /* Same as above. */ > - rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i][0] = 255; > - rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i][1] = 18; > + rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i].sym = 255; > + rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i].len = 18; > } > ff_h263_decode_init_vlc(); > } > diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c > index 3494c0c579..5f3b7d31cd 100644 > --- a/libavcodec/rv34.c > +++ b/libavcodec/rv34.c > @@ -81,7 +81,7 @@ static int rv34_decode_mv(RV34DecContext *r, int block_type); > * @{ > */ > > -static VLC_TYPE table_data[117592][2]; > +static VLCElem table_data[117592]; > > /** > * Generate VLC from codeword lengths. > diff --git a/libavcodec/rv40.c b/libavcodec/rv40.c > index b15f3cddfc..b9469819f7 100644 > --- a/libavcodec/rv40.c > +++ b/libavcodec/rv40.c > @@ -47,7 +47,7 @@ static VLC 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 VLC_TYPE vlc_buf[11776][2]; > + static VLCElem vlc_buf[11776]; > > vlc->table = &vlc_buf[*offset]; > vlc->table_allocated = 1 << nb_bits; > @@ -64,7 +64,7 @@ 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 VLC_TYPE aic_mode2_table[11814][2]; > + static VLCElem aic_mode2_table[11814]; > > rv40_init_table(&aic_top_vlc, &offset, AIC_TOP_BITS, AIC_TOP_SIZE, > rv40_aic_top_vlc_tab); > diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c > index 7cd623ff18..6fb50575bf 100644 > --- a/libavcodec/svq1dec.c > +++ b/libavcodec/svq1dec.c > @@ -777,7 +777,7 @@ static av_cold void svq1_static_init(void) > 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 VLC_TYPE table[168][2]; > + static VLCElem table[168]; > svq1_intra_multistage[i].table = &table[offset]; > svq1_intra_multistage[i].table_allocated = sizes[0][i]; > offset += sizes[0][i]; > diff --git a/libavcodec/tableprint_vlc.h b/libavcodec/tableprint_vlc.h > index d53ae5799f..b97c1f9cfb 100644 > --- a/libavcodec/tableprint_vlc.h > +++ b/libavcodec/tableprint_vlc.h > @@ -39,23 +39,22 @@ > #include "libavutil/reverse.c" > #include "vlc.c" > > -#define REPLACE_DEFINE2(type) write_##type##_array > -#define REPLACE_DEFINE(type) REPLACE_DEFINE2(type) > -static void write_VLC_TYPE_array(const VLC_TYPE *p, int s) { > - REPLACE_DEFINE(VLC_TYPE)(p, s); > -} > - > -WRITE_2D_FUNC(VLC_TYPE) > +// The following will have to be modified if VLCBaseType changes. > +WRITE_1D_FUNC_ARGV(VLCElem, 3, "{ .sym =%5" PRId16 ", .len =%2"PRIi16 " }", > + data[i].sym, data[i].len) > > -static void write_vlc_type(const VLC *vlc, VLC_TYPE (*base_table)[2], const char *base_table_name) > +static void write_vlc_type(const VLC *vlc, const VLCElem *base_table, const char *base_table_name) > { > printf(" .bits = %i,\n", vlc->bits); > // Unfortunately need to cast away const currently > - printf(" .table = (VLC_TYPE (*)[2])(%s + 0x%x),\n", base_table_name, (int)(vlc->table - base_table)); > + printf(" .table = (VLCElem *)(%s + 0x%x),\n", base_table_name, (int)(vlc->table - base_table)); > printf(" .table_size = 0x%x,\n", vlc->table_size); > printf(" .table_allocated = 0x%x,\n", vlc->table_allocated); > } > > +#define WRITE_VLC_TABLE(prefix, name) \ > + WRITE_ARRAY(prefix, VLCElem, name) > + > #define WRITE_VLC_TYPE(prefix, name, base_table) \ > do { \ > printf(prefix" VLC "#name" = {\n"); \ > diff --git a/libavcodec/tscc2.c b/libavcodec/tscc2.c > index 136f1f76d9..f6950fbbb6 100644 > --- a/libavcodec/tscc2.c > +++ b/libavcodec/tscc2.c > @@ -57,7 +57,7 @@ static av_cold void tscc2_init_vlc(VLC *vlc, int *offset, int nb_codes, > const uint8_t *lens, const void *syms, > int sym_length) > { > - static VLC_TYPE vlc_buf[15442][2]; > + static VLCElem vlc_buf[15442]; > > vlc->table = &vlc_buf[*offset]; > vlc->table_allocated = FF_ARRAY_ELEMS(vlc_buf) - *offset; > diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c > index fa028a5784..1070b8ca90 100644 > --- a/libavcodec/vc1.c > +++ b/libavcodec/vc1.c > @@ -1584,7 +1584,7 @@ static const uint16_t vlc_offs[] = { > > static av_cold void vc1_init_static(void) > { > - static VLC_TYPE vlc_table[32372][2]; > + static VLCElem vlc_table[32372]; > > INIT_VLC_STATIC(&ff_vc1_bfraction_vlc, VC1_BFRACTION_VLC_BITS, 23, > ff_vc1_bfraction_bits, 1, 1, > diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c > index 1a9bd8e6d2..96f2b28c7e 100644 > --- a/libavcodec/vlc.c > +++ b/libavcodec/vlc.c > @@ -65,13 +65,13 @@ static int alloc_table(VLC *vlc, int size, int use_static) > if (use_static) > abort(); // cannot do anything, init_vlc() is used with too little memory > vlc->table_allocated += (1 << vlc->bits); > - vlc->table = av_realloc_f(vlc->table, vlc->table_allocated, sizeof(VLC_TYPE) * 2); > + vlc->table = av_realloc_f(vlc->table, vlc->table_allocated, sizeof(*vlc->table)); > if (!vlc->table) { > vlc->table_allocated = 0; > vlc->table_size = 0; > return AVERROR(ENOMEM); > } > - memset(vlc->table + vlc->table_allocated - (1 << vlc->bits), 0, sizeof(VLC_TYPE) * 2 << vlc->bits); > + memset(vlc->table + vlc->table_allocated - (1 << vlc->bits), 0, sizeof(*vlc->table) << vlc->bits); > } > return index; > } > @@ -88,7 +88,7 @@ static av_always_inline uint32_t bitswap_32(uint32_t x) > > typedef struct VLCcode { > uint8_t bits; > - VLC_TYPE symbol; > + VLCBaseType symbol; > /** codeword, with the first bit-to-be-read in the msb > * (even if intended for a little-endian bitstream reader) */ > uint32_t code; > @@ -138,7 +138,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, > VLCcode *codes, int flags) > { > int table_size, table_index; > - VLC_TYPE (*table)[2]; > + VLCElem *table; > > if (table_nb_bits > 30) > return AVERROR(EINVAL); > @@ -166,15 +166,15 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, > inc = 1 << n; > } > for (int k = 0; k < nb; k++) { > - int bits = table[j][1]; > - int oldsym = table[j][0]; > + int bits = table[j].len; > + int oldsym = table[j].sym; > ff_dlog(NULL, "%4x: code=%d n=%d\n", j, i, n); > if ((bits || oldsym) && (bits != n || oldsym != symbol)) { > av_log(NULL, AV_LOG_ERROR, "incorrect codes\n"); > return AVERROR_INVALIDDATA; > } > - table[j][1] = n; //bits > - table[j][0] = symbol; > + table[j].len = n; > + table[j].sym = symbol; > j += inc; > } > } else { > @@ -200,7 +200,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, > } > subtable_bits = FFMIN(subtable_bits, table_nb_bits); > j = (flags & INIT_VLC_OUTPUT_LE) ? bitswap_32(code_prefix) >> (32 - table_nb_bits) : code_prefix; > - table[j][1] = -subtable_bits; > + table[j].len = -subtable_bits; > ff_dlog(NULL, "%4x: n=%d (subtable)\n", > j, codes[i].bits + table_nb_bits); > index = build_table(vlc, subtable_bits, k-i, codes+i, flags); > @@ -208,8 +208,8 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, > return index; > /* note: realloc has been done, so reload tables */ > table = &vlc->table[table_index]; > - table[j][0] = index; //code > - if (table[j][0] != index) { > + table[j].sym = index; > + if (table[j].sym != index) { > avpriv_request_sample(NULL, "strange codes"); > return AVERROR_PATCHWELCOME; > } > @@ -218,8 +218,8 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, > } > > for (int i = 0; i < table_size; i++) { > - if (table[i][1] == 0) //bits > - table[i][0] = -1; //codes > + if (table[i].len == 0) > + table[i].sym = -1; > } > > return table_index; > diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h > index 6879c3ca6a..e63c484755 100644 > --- a/libavcodec/vlc.h > +++ b/libavcodec/vlc.h > @@ -21,11 +21,16 @@ > > #include > > -#define VLC_TYPE int16_t > +// When changing this, be sure to also update tableprint_vlc.h accordingly. > +typedef int16_t VLCBaseType; > + > +typedef struct VLCElem { > + VLCBaseType sym, len; > +} VLCElem; > > typedef struct VLC { > int bits; > - VLC_TYPE (*table)[2]; ///< code, bits > + VLCElem *table; > int table_size, table_allocated; > } VLC; > > @@ -98,7 +103,7 @@ void ff_free_vlc(VLC *vlc); > #define INIT_CUSTOM_VLC_SPARSE_STATIC(vlc, bits, a, b, c, d, e, f, g, \ > h, i, j, flags, static_size) \ > do { \ > - static VLC_TYPE table[static_size][2]; \ > + static VLCElem table[static_size]; \ > (vlc)->table = table; \ > (vlc)->table_allocated = static_size; \ > ff_init_vlc_sparse(vlc, bits, a, b, c, d, e, f, g, h, i, j, \ > @@ -127,7 +132,7 @@ void ff_free_vlc(VLC *vlc); > symbols, symbols_wrap, symbols_size, \ > offset, flags, static_size) \ > do { \ > - static VLC_TYPE table[static_size][2]; \ > + static VLCElem table[static_size]; \ > (vlc)->table = table; \ > (vlc)->table_allocated = static_size; \ > ff_init_vlc_from_lengths(vlc, bits, nb_codes, lens, len_wrap, \ > diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c > index 1a745331f4..8ca1b0dfe3 100644 > --- a/libavcodec/vp3.c > +++ b/libavcodec/vp3.c > @@ -1197,7 +1197,7 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb, > /* local references to structure members to avoid repeated dereferences */ > int *coded_fragment_list = s->coded_fragment_list[plane]; > Vp3Fragment *all_fragments = s->all_fragments; > - VLC_TYPE(*vlc_table)[2] = table->table; > + const VLCElem *vlc_table = table->table; > > if (num_coeffs < 0) { > av_log(s->avctx, AV_LOG_ERROR, Will apply this tomorrow unless there are objections. - Andreas _______________________________________________ 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".