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);