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 35245478CF for ; Tue, 26 Sep 2023 22:23:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8560468CB80; Wed, 27 Sep 2023 01:21:07 +0300 (EEST) 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: =?us-ascii?Q?oBQIxMaG9G6Iv2aUZsLJqqN6qwvNGPov5Stmt4IEfzDjYwJ109lVaD2R4H9l?= =?us-ascii?Q?chh+jdPkPcEnpsPJ31/OShAcg0ChzrG1RFzOqBT7iPdEoYOLGWO6V6K8mOo8?= =?us-ascii?Q?7+o+wYv4bJyZ+pzLUJGphXo0D9Ivv+WWGR8/1r7tSX9y2x/5PNa63SVi/rP1?= =?us-ascii?Q?6qnOVuL9N9cw3e/zMR/wdB1+tHMc1yDzWUsPJ8fFrXT9Aj9cV/fS5XiObv1k?= =?us-ascii?Q?Giqpv1QHtUpl5bz5nAfVdn9qT7c69G8ArCmJ3hOrXPwcwE2elNADINJrIXdn?= =?us-ascii?Q?SRmx3n/jY/khWQffKxov9H+hA5gGtgh9oquuOfAwTAnthBnbvAMNPUEb/WYj?= =?us-ascii?Q?jgwcw7EtywudXxfp/p7EUswKgCuQjzJZPDdKRPNKM1pOcV+sHs0q286oH4Fj?= =?us-ascii?Q?7U3O2BVSBGKVir1hOvciHH/Sroi6bgXBNtVQTJXL6QhomCdIxXEKUamO0VX6?= =?us-ascii?Q?LbOnOGid3wRByLbAht2d7iCGWCt4ANR0CXPO+w08pjxWjyBI1dBVVfn7gE53?= =?us-ascii?Q?bD+FNCt+geF0ILBFpNTMgBn2neX5z4mGzxeankk56x9lBxHimOSX+CgeI35H?= =?us-ascii?Q?1JxoexdME/Q2wqg/3n3ktu+raAIDwfyUT9pKVCZ6csaPATygKnDrPU+bK5fS?= =?us-ascii?Q?0ln+2uQDoklghfvRm1BvzRay9cAhtmMnuBqWGJsoveQs/BeyzacmTUQXPpLA?= =?us-ascii?Q?OvGQvQwAFgPnaNNjngx1ET8ZbQSNOxzFHmIBKctr9bBGu98Sx3I7Y2j9oDkL?= =?us-ascii?Q?FhuLMyTK+V1LGvgv7qxSX5ITe0wC6UkSJbHlQdOLpWI+mK4al4z5zU4NdZL2?= =?us-ascii?Q?9kFyc4rTAy0EjYFiOu+n3mwm1PscJSIfeczpQPWZQLTKDwED3YU5RK4zDft2?= =?us-ascii?Q?WbLewl4cVr3roBtLgpi2Kn8j9UN9IGHVA90UC0qUzBjtlDRHNxroXKo0Lzx7?= =?us-ascii?Q?Loblcd2Ex66YL1o55vCvlFgBUv74vKkal/im25owNZc7MfnyqPPazf5KY3u6?= =?us-ascii?Q?adisHr73lvxCRFuCgTcI5W1VEUd3IYD2Yb+gIbD9M8sWPybeNage7f/0OSUY?= =?us-ascii?Q?IGTdCP9iKMd3iek4y+TdoB2TFwAn1tA1BRnWCcIHCgl5C4RJ6rCWRobFvbeh?= =?us-ascii?Q?X5yUTb2kqwDzw5CKLjHm+i0IeJMRvpMuNRI7bcXI0+h5RblhN3ia/iQW4wtx?= =?us-ascii?Q?zb9Vmmx9OpJlvH8JpZurFyWJh52xaSwLnC2f7jq8etFnOMh2YDYPx0sP+cHR?= =?us-ascii?Q?ZFhROIcGVQJ/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 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: 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]; -- 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".