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 29562478BE for ; Tue, 26 Sep 2023 22:22:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 317D868CB67; Wed, 27 Sep 2023 01:20:39 +0300 (EEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2021.outbound.protection.outlook.com [40.92.64.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4DA7C68CB5D for ; Wed, 27 Sep 2023 01:20:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y9wbF6BBb5qN2MLGno/BUih2wRrf4kJl+6zmohBUlcyvoLocr8GaI71iQtYCfIS9rhBcyoIo6WmOIZ0eEIspg/Bc64vgA4RWfUyzafwajahcXNLRkmTBxX7y/KUp9TDqjnIvHNU5wDHZwddP8I8P0at2p77skPB3hB6LCSyQKPcbMqrfz/RyPmoIZl9/qeeR5r5cDhqZSPhDdGrVbXRdAen2VZ/RMiowB8jpFnqGLwbT54d0XLdnvNgJRWX+zJl7ACIIswO+dwnBJFfCZs8fRgNdFRH2QkTd8wID5rNzG+Q8ZEfS5aBTRDDHicP4ln8qSwIL7MsCMpNc1vFWKRdTVg== 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=voC9KzZIkriAzaTh5xe1aCY2R84bAhtOzE9t/m1nQ0U=; b=T69Gs8OFxF3qvrXAZCEDqdMqRzD65aa3fLz9g/pFcdgA4L1fbFb3/bF55Py64ZKoMVctZfff6y57NybV4EhnBi4+f92VpxUCntyX95SgyZqpo6Kn0VEaAQ0xGY8oHTRekmY9gtg0QLJD8J6EpAewuUn3zOaCLIsxzXYQDhP7E1sKjSSjSQ6gyxR7o6MzCJhrs2OfgrvG4nR7LTHTAinuzdzh+bD//S9IbGbhR9oh2d+VlaoeztHW8b4TIprdYr0HoU2i4eJC2HEF3l4ez5zHDjl0JagnC3J+ORfc/JwigrE6Gp7ERm6gDietTrCZvCAkuXssgMTGIs1bvQ9fMQX5gA== 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=voC9KzZIkriAzaTh5xe1aCY2R84bAhtOzE9t/m1nQ0U=; b=UnSYswG6U06O/CukFngYE9ptQcGy4fXrywtnZFGYB4yXUmy/DWDVQ9NaOxYj9ZJPmYo1h+5VcZ9mHYGyFo4z0nVmz0E+g7dr8VsyzT2/SiJk0ksq5OzWl5uJNZ9LYy8zu3oFZJu7B8O4nUpVFkQKrLqBLbCXk4GRpBdZDjyJ0IhrOoxgqPKS+8iGy7rDdH4/ndaJb5E3T8XdsxgAjK7uboiDql7y5QoCo4+cxavTQZv6lurjPGLiEYlnZ+e3cX4FHmlR1iWU4dfPQ/3B/+IwmrN8CQbpvAZ8zepRb5Z/IQk5VbJ7Zq+Q2B/zs1/WXujSsiC+qDQ2TCgI+spsKSi5cA== 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:20:36 +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:20:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:14 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [RyNZl/lySlGzYlCreDhu2rrHxfIl+Dak] 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-42-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: d4a04748-2035-4bf1-f090-08dbbedecea3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lb85/INTVRpEvAJgF07I4hDZOXnMc6gwv3wPyuAv+ql2YhGjuLlZtv6/BlAyGv8hDPzD1OeDN2xTnlVEt+ocsesXNiOsQaDxUEXD3qJKGwT5gCohUT/w/YYlB60ha6qJ6rq07mwB21mXGLD5RbQ/EVwbvRLJSkzXHGles0zfjjVuQpfK09ZnE8SEbDQCC/TbmIE6bFjaG/ecpWZMJss7699LhpEB944p2bsJQbt5PPOH8j7l5jWzHlhXwK1LHLiLMN1y1tJXeN+s/ZiaGVsVowYvA9RcAl21jlFZRejCfxzzynAmhZyn984aozrrO7wPBgTneLu/dOQqYvMwGFuPOOo+cyXoRZ5h7cSifuzghUU69ik6nPKAcXFkR7gnMHmN0HBQh22OlpqjHnLjHQQVanu8nF56R99QVYeaeeHkp0UMBoG/XJ7pLdczqgY0lVOhXZRWi3XDXClXC9VU0LUlUHE3rK64gQDPAkdtQK438pAC+LlcI2HnLp1UM8qWBQEJLC8BVxcaKM573vacnUkmc/O2rujiT8paYoSOyXYGC6BSavuQYsnIi+EKKp9CSDJC0wzaM8LsIOO9zQwN0CyNyZ2eHRxojO0wISa9Vcw72SY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4PAsJE4hODiAiBzhhlMVnYzwfYNCIQwSMufguLM6/2jryN8eyeBDw/Ked9OE?= =?us-ascii?Q?3zz2eMqnD8Ls7c7i2yQKnB41qpbFDAGQsg5iISNYCeoFDf3qGXfcaJQ9EJyH?= =?us-ascii?Q?vKcvbsOFJfDh6bh/tXZhvXEXr3FZgX/T4Vw1KNQhfVxGB7bBi1oEOJ+/p2Jv?= =?us-ascii?Q?GdLwz7dpXNAr22KMzz8SrS+3SCIBHRHq+KFFpzCq/dtLXqGwne+Lde/X25o5?= =?us-ascii?Q?UtPpCBUj0pHxhroLCwqJISocyVbzmBaFYrnt3GETRmgs3kLBcSxLoRFhchng?= =?us-ascii?Q?oCfLpUXv1A+ni2xNBczqIMBma+PITGpVWf7evD4MLWjpO9zYqq2l+JGwfwhP?= =?us-ascii?Q?5Ljt1QyT+XpW+wJNkQAc7xYYKvtwUu9IiAU/HulziLyh9PB6fcwmup8ZS6WC?= =?us-ascii?Q?Lg6IwHwrQ6AfG2zA8waQ+PItNPosGRyuIAHygukNX2tYBTltvzgDRCaqFbmq?= =?us-ascii?Q?3UO7lHKt1OJtwpFR9O/12jzTlAhNG5SYN4S81y8V4Mgj+DZ513Ngu0U+W7YP?= =?us-ascii?Q?smsKIVtAhho1/HUAwPXcE5eik4etOmFYLezbI3H3p6RY+NlhKrZuog1gypsz?= =?us-ascii?Q?XxoeDXlCuustehloNri3mjXMc2a01TDYwiaSbqQBzsg3HySRio12I8W+H2bE?= =?us-ascii?Q?piL7pDQ3YnYbUNKVgrKIh55pUxWr1wVjWzzOPYQLlo2+P4+iVQbqfDPED2qM?= =?us-ascii?Q?8lUtc3t3yglbiBF7EZDFsDW930NKAsHea3zSnDw35dSZHl5tOot8qR6JDGJi?= =?us-ascii?Q?nH63v1rdjztxqdFxmjq6SfZ1sk06qsh0sLqp5BnrJrwVKBHttyDvoKCzjOSm?= =?us-ascii?Q?dSa/B0d5BRMuGn22alW2LaQsF3MeAJ2pfs2BAFPk6OMNLD8L5CRhuvcdEs/r?= =?us-ascii?Q?FVXJ7nul8c+6CjMhpJ/Q7yNyrdCVnHind8aRqaByCyE76pedGepSEQdqDSbj?= =?us-ascii?Q?VoPvPVwLRJOsG5Vwpu75f9WTj5EQMSQ4W8hoAt1ky5ZMwTIL2anwQfCMB/1C?= =?us-ascii?Q?y1ql9KXLPMfF4oulghwBah1n4WZadrqQ+ZpPrE0SkdgP3wglPsp5NWXsZxd7?= =?us-ascii?Q?8RJfB46LxdnvuEgBxcLIXARrj6ZqdhHxzVpqRPydMi73sE18Zkgg5xb4xdcr?= =?us-ascii?Q?V0pLYv+hkTdo/zuZ0Aqj3BjdsFVWGZpzqfr3uaQkk6ZoTwRKOpQ2DecW/FvH?= =?us-ascii?Q?V9v2ydovNorC3RxjTAOPfeTN+fIueycte4BWWsI06qDct+oELS2zlFSVbbTd?= =?us-ascii?Q?G7dHqZbWvE9b0vICrYNH?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4a04748-2035-4bf1-f090-08dbbedecea3 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:20:36.4257 (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 43/61] avcodec/aacdec_template: Deduplicate VLCs 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: They (as well as their init code) are currently duplicated for the floating- and fixed-point decoders. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 43 ++++++++++++++++++++++++++++++++++++ libavcodec/aacdec_template.c | 42 ++++++----------------------------- libavcodec/aacdectab.h | 10 +++++++++ 3 files changed, 60 insertions(+), 35 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index c75c6fadc6..45f1986258 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -27,6 +27,11 @@ #include "aac.h" #include "aacdectab.h" +#include "aactab.h" +#include "vlc.h" + +#include "libavutil/attributes.h" +#include "libavutil/thread.h" const int8_t ff_tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 }; @@ -117,3 +122,41 @@ const AVChannelLayout ff_aac_ch_layout[] = { AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK, { 0 }, }; + +VLC ff_vlc_scalefactors; +VLC 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; + } + + 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); +} + +av_cold void ff_aacdec_common_init_once(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, aacdec_common_init); +} diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 3fb9a01da5..27be1f896d 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -94,9 +94,6 @@ #include "decode.h" #include "internal.h" -static VLC vlc_scalefactors; -static VLC vlc_spectral[11]; - static int output_configure(AACContext *ac, uint8_t layout_map[MAX_ELEM_ID*4][3], int tags, enum OCStatus oc_type, int get_new_frame); @@ -1128,36 +1125,11 @@ static void aacdec_init(AACContext *ac); static av_cold void aac_static_table_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++) { - vlc_spectral[i].table = &vlc_buf[offset]; - vlc_spectral[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - ff_vlc_init_sparse(&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 += vlc_spectral[i].table_size; - } - AAC_RENAME(ff_aac_sbr_init)(); + ff_aacdec_common_init_once(); ff_aac_tableinit(); - VLC_INIT_STATIC(&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); - // window initialization AAC_RENAME(avpriv_kbd_window_init)(AAC_RENAME(aac_kbd_long_960), 4.0, 960); AAC_RENAME(avpriv_kbd_window_init)(AAC_RENAME(aac_kbd_short_120), 6.0, 120); @@ -1526,7 +1498,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, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[2] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[2], -155, 100); if (offset[2] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1545,7 +1517,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, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[1] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; clipped_offset = av_clip(offset[1], -100, 155); if (offset[1] != clipped_offset) { avpriv_request_sample(ac->avctx, @@ -1561,7 +1533,7 @@ static int decode_scalefactors(AACContext *ac, INTFLOAT sf[120], GetBitContext * } } else { for (; i < run_end; i++, idx++) { - offset[0] += get_vlc2(gb, vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; + offset[0] += get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - SCALE_DIFF_ZERO; if (offset[0] > 255U) { av_log(ac->avctx, AV_LOG_ERROR, "Scalefactor (%d) out of range.\n", offset[0]); @@ -1734,7 +1706,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 = vlc_spectral[cbt_m1].table; + const VLCElem *vlc_tab = ff_vlc_spectral[cbt_m1].table; OPEN_READER(re, gb); switch (cbt_m1 >> 1) { @@ -2308,7 +2280,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, vlc_scalefactors.table, 7, 3) - 60: 0; + gain = cge ? get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60: 0; gain_cache = GET_GAIN(scale, gain); #if USE_FIXED if ((abs(gain_cache)-1024) >> 3 > 30) @@ -2322,7 +2294,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, vlc_scalefactors.table, 7, 3) - 60; + int t = get_vlc2(gb, ff_vlc_scalefactors.table, 7, 3) - 60; if (t) { int s = 1; t = gain += t; diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index db6fd0a04f..a009e9f46e 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -30,8 +30,17 @@ #include +#include "vlc.h" + +#include "libavutil/attributes_internal.h" #include "libavutil/channel_layout.h" +FF_VISIBILITY_PUSH_HIDDEN +void ff_aacdec_common_init_once(void); + +extern VLC ff_vlc_scalefactors; +extern VLC ff_vlc_spectral[11]; + extern const int8_t ff_tags_per_config[16]; extern const uint8_t ff_aac_channel_layout_map[16][16][3]; @@ -43,5 +52,6 @@ extern const uint64_t ff_aac_channel_layout[]; #endif extern const AVChannelLayout ff_aac_ch_layout[]; +FF_VISIBILITY_POP_HIDDEN #endif /* AVCODEC_AACDECTAB_H */ -- 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".