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 094BD478B5 for ; Tue, 26 Sep 2023 22:23:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C635B68CB7E; Wed, 27 Sep 2023 01:21:47 +0300 (EEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2075.outbound.protection.outlook.com [40.92.64.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D3E968CB18 for ; Wed, 27 Sep 2023 01:21:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KHPV6BFwbXsTwsK6GL+XAaCImy8jx6KSSHKybDh0Fw4didI35hvIGKpYl53QRKbfFvVYhutCz4H3x4YGUBe/VzHsK7O7QjsXH038ZsvHwBZ1k0Xw5iyGNz5hLGUY0FKI8Gx/z6Qj3x4Rtm7q6109j7uZT1kB7Om0XTB9efb8WJvziaDJ9xaN8OdHwXT9LYgWAENNx+yyXpWp4xQd1RObDs9kzygFcMcSNqziG3Dl70MW0s8KZ8Pv6aPRD8rN9jxj+n+LXlQX9yoXch/ONgTu+J89QtRQ4F03GiPSvCmd8Q7uqI7jUW/uBzW7AMLnDQi4dirXI7femPsrI+neSNyLBw== 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=P+yQxYkx3CeHIR+mDvkFaaRLx5lQ7j3qM1yYINPRBWc=; b=oF1vL7+5XG4u9UTAZ8xgiOlSa5WDIrUYIiI1pkH7CeZTbK8V5RlibCrJwc5Yt4wMF08lhuIVyimiSutO1B2kA6gQ2+XjBHXEjixp2JTOvhP4uD8z2VzKjpQqtGQ0dhesx0MxyvuiX7J3r2dvwuGLW6XEgaaH6nnh6EvqeEHoxwRW8KvqJxOQ22ahqvlDyL/npKraNVk7xJzbdlV2czFHMw5aqS/8lNg1QfrxygXxL9XDc/rSr1Sh1+mqYGrnmMB9JUS3w7LjKxG/mZPF3rFVP1lt/fbmGS8subLWkALqP+bqyxnbsurZZrcjAEMrlRPJmhhtvN/E+wuRcfAQcaS45A== 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=P+yQxYkx3CeHIR+mDvkFaaRLx5lQ7j3qM1yYINPRBWc=; b=W1IFFnW/XtINY+zZWcewUJtvFEfm1qnUvx0VjZp3oGF4JNyjLUhop6rwh0jdvCsbHTtQG0vs59CUDLjcjnUUTnt+Vry71ChGAyf2c0sWiMe9wfR8kOWVr7j2afzAZbRbSZs9kIpQFN27yQDoF+JDxDOFTctLw/+6iKSUjCq3AvU/AAELoDEfb8AAivuXvzQu9c+CcKnvMFZY1brMQ8TylhvqydmwH+Vz0tdPFmQ2+RdkQVHZO3vzjUWO+wtqLZRY7+G6oCl2WvbE0FrQLtxynC2Y9oNrUx+wPc+izqPJS4tMsdpYLpz5EwdV7Youk5Sx8tyUBWZUDy4zTynv27qrMw== 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:44 +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:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:19 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [YiuzjU326y96G3ftqvgXsf0GuEhSMWWL] 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-47-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: 0442d6e2-e88f-4392-e1bd-08dbbedef6e6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mkeyRu7GskHRDmy4v+0X3mBoW1o+JScm+DaqC50LYofvJC7w7gPHrtXz3wEXOnbXPbcgbFC5x7d95NqY0n84G1qIxCMtUqloAPPGGBhkudF2CUySunXHCgqrqbg6nM7mkf6bzGcFrXhMX2Scga2D4oBll+it05mVXQOOtdJw1GHyrvWvQ1dsDQov0CFrZFsf8dpKgELclht5VItVYxVdKD4XodQMNPpN1jNwLl8Rgc//IFFskZExhxCEdDtgKi2eF9cR012O8PLX6l/r8UIMADxKqxhNzFLhiu6O/YnALfjvbOForrcQ0GhNo+iPg+T/Ak3C7amEZ14q7ko846goanfabWZwLOFGBWasBxliA8TGwabu6X2EzjDbcI2cxoo+bpep711Zstf9lY5YCTjsw+olbE/WZe7dKGRnEKbYSimTLgTyZvQtB9ZQWTyO7d/LZIRpR2L0lqvhAbBgc8ytcpkm6W68p5sRjOD1QqpxnluiW+6/D2U74ieEghDguEcz+XJGTkDImh/F01jpYMpG4T5N0Gw/4zYkJAdkroV0P7MqEN0ZivgT1BaDL/1sJfA1wSUCX6o5el+SUmP3++4kcGfEP0DdTm4aMJy9GA2nvMPtECrldgniJ1bc2sL+o0dL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yCR892Xt7A4Q/4ihX/mwT4UihtX/TyG5h72bWArtUYdc0euR0h36bEp5T5lj?= =?us-ascii?Q?Yv3ZoF/GI5LUDDoV1Tpquq2pOVvoyhcFhKwZTRvT7RfgQAAUHv/lYwzrN6dc?= =?us-ascii?Q?HN85RXoLqOs9SYAxEfIt5oMccvrlfBIOytFCEmmqiIqbThtHREG7Ob4g+zvQ?= =?us-ascii?Q?MiOhyDxNWwsKxaVX+lZMySj0ZYMim/jt/b5gjX2bxKbCfQE3MffEfb+6wlrT?= =?us-ascii?Q?Q0Stccc0iTtK4qsTr8RSWT15qd+VfrNseDtKwpcCj2WldyUqjBsWakIwlsej?= =?us-ascii?Q?Qwv/wfolv4xa/5uRIJzzrulfN293TDGBoVGShxFgC/26RfvwBYKNZerrlkgm?= =?us-ascii?Q?rEXuefi1MrU9ckyBU4V6VS6qaaRqB5UiFTZltqH57EmV6AwgbdTecCYDbPIs?= =?us-ascii?Q?PqdIYcSU8C4bVWPxg/G6OXW/E8rpnAj9ccyopHcYdy4OEoGyZc/VCJmEvv8S?= =?us-ascii?Q?1OGrMFl2OuJQUh52rGkVSXalbI1StDbFUwNNOvlD8wsk7m8Qza9Hh5HNcjSU?= =?us-ascii?Q?T2NkhLUkpWOIv7H2nvtdBrspXpA8jRGdAWFDgAuU5Sup0aZlYVqeYHnU/+I8?= =?us-ascii?Q?br8zwoJs5YQcE7zwM5Hwo3kl0NtXi0nV/61tbVGQ1DvZadKq6nZkbxzMhxy+?= =?us-ascii?Q?iq1ue/2wqeyeJsb5l6sL27+2TUjpChQ25YQza+X1DvmvSYHqYf7cJew6R6iH?= =?us-ascii?Q?uonogeGPyzYR70jBsnj1Mi5TjMZshcesCKHAAqiaRwG/zSYTG16GfnBiQxPH?= =?us-ascii?Q?9ilBnDSF+cTas2a3cpwEi5YUGpq/SMq77AmEmTvECQOHYVGX3kdD4yaPSkrs?= =?us-ascii?Q?9OtrgnBMJfN4d8vkqC7nLfxUcRPyDdrr28+k/lh4Lhz5uPGxpoS5x6d+tDDv?= =?us-ascii?Q?mB3x7r2TUM4qF7AudADc6FKGgQZR3f/2Lbesh0MPvqoPXzSXuqmZf2+QwHIJ?= =?us-ascii?Q?PUd9VxaBnU1mNorvQ3jHTdt8vDHGyxPXcsktMCdVPB/N6C4arpwqGCPm+c/T?= =?us-ascii?Q?Q2HePPafCaOwRGTscjMWsVv6GC2nJXq4wfyEwz4yVts1EVzkhcp0dcp4tMxi?= =?us-ascii?Q?IsufheX3Cf9vjrDvBObghHJ0kzRG5bHXZIrsOkok7p1JSIuNsnh9bmVKiaJQ?= =?us-ascii?Q?Fjdz9aZv/maMvQY7gBaWKzb4uWmLWWwzMhNXyHU07Q4UqH7aHTpr1YDPsSA/?= =?us-ascii?Q?1kpDPPsLjmlK5J9+WyO4/JUSUnX90zSzajEOCjUtDHt8q6c9Up0iF3wdWi2a?= =?us-ascii?Q?ouz3BGtnKzEYuDUk2C4r?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0442d6e2-e88f-4392-e1bd-08dbbedef6e6 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:43.9924 (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 48/61] avcodec/aacdec_common: Avoid superfluous VLC structures for SBR 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: 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. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_common.c | 35 +++++++++++++++++++---------------- libavcodec/aacdectab.h | 2 +- libavcodec/aacsbr_template.c | 24 ++++++++++++------------ 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/libavcodec/aacdec_common.c b/libavcodec/aacdec_common.c index cbd2a9ccd2..295ea87dce 100644 --- a/libavcodec/aacdec_common.c +++ b/libavcodec/aacdec_common.c @@ -352,15 +352,16 @@ static const uint8_t t_huffman_noise_bal_3_0dB_codes[25] = { 0xff, }; -VLC ff_aac_sbr_vlc[10]; +const VLCElem *ff_aac_sbr_vlc[10]; static av_cold void aacdec_common_init(void) { -#define SBR_INIT_VLC_STATIC(num, size) \ - VLC_INIT_STATIC(&ff_aac_sbr_vlc[num], 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ +#define SBR_INIT_VLC_STATIC(num) \ + ff_aac_sbr_vlc[num] = \ + ff_vlc_init_tables_sparse(&state, 9, sbr_tmp[num].table_size / sbr_tmp[num].elem_size, \ sbr_tmp[num].sbr_bits , 1, 1, \ sbr_tmp[num].sbr_codes, sbr_tmp[num].elem_size, sbr_tmp[num].elem_size, \ - size) + NULL, 0, 0, 0) #define SBR_VLC_ROW(name) \ { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } static const struct { @@ -379,8 +380,10 @@ static av_cold void aacdec_common_init(void) SBR_VLC_ROW(t_huffman_noise_bal_3_0dB), }; - static VLCElem vlc_buf[304 + 270 + 550 + 300 + 328 + - 294 + 306 + 268 + 510 + 366 + 462]; + static VLCElem vlc_buf[(304 + 270 + 550 + 300 + 328 + + 294 + 306 + 268 + 510 + 366 + 462) + + (1098 + 1092 + 768 + 1026 + 1058 + + 1052 + 544 + 544 + 592 + 512)]; VLCInitState state = VLC_INIT_STATE(vlc_buf); for (unsigned i = 0; i < 11; i++) { @@ -403,16 +406,16 @@ static av_cold void aacdec_common_init(void) sizeof(ff_aac_scalefactor_code[0]), 0); // SBR VLC table initialization - SBR_INIT_VLC_STATIC(0, 1098); - SBR_INIT_VLC_STATIC(1, 1092); - SBR_INIT_VLC_STATIC(2, 768); - SBR_INIT_VLC_STATIC(3, 1026); - SBR_INIT_VLC_STATIC(4, 1058); - SBR_INIT_VLC_STATIC(5, 1052); - SBR_INIT_VLC_STATIC(6, 544); - SBR_INIT_VLC_STATIC(7, 544); - SBR_INIT_VLC_STATIC(8, 592); - SBR_INIT_VLC_STATIC(9, 512); + SBR_INIT_VLC_STATIC(0); + SBR_INIT_VLC_STATIC(1); + SBR_INIT_VLC_STATIC(2); + SBR_INIT_VLC_STATIC(3); + SBR_INIT_VLC_STATIC(4); + SBR_INIT_VLC_STATIC(5); + SBR_INIT_VLC_STATIC(6); + SBR_INIT_VLC_STATIC(7); + SBR_INIT_VLC_STATIC(8); + SBR_INIT_VLC_STATIC(9); } av_cold void ff_aacdec_common_init_once(void) diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index 02e0d8a48e..7079b061fc 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -38,7 +38,7 @@ FF_VISIBILITY_PUSH_HIDDEN void ff_aacdec_common_init_once(void); -extern VLC ff_aac_sbr_vlc[10]; +extern const VLCElem *ff_aac_sbr_vlc[10]; extern VLCElem ff_vlc_scalefactors[]; extern const VLCElem *ff_vlc_spectral[11]; diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index 26be2739d3..a82be8a8d5 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -811,29 +811,29 @@ static int read_sbr_envelope(AACContext *ac, SpectralBandReplication *sbr, GetBi if (sbr->bs_coupling && ch) { if (ch_data->bs_amp_res) { bits = 5; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { bits = 6; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_BAL_1_5DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_BAL_1_5DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_1_5DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_1_5DB]; } } else { if (ch_data->bs_amp_res) { bits = 6; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } else { bits = 7; - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_ENV_1_5DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_ENV_1_5DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_1_5DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_1_5DB]; } } @@ -896,14 +896,14 @@ static int read_sbr_noise(AACContext *ac, SpectralBandReplication *sbr, GetBitCo int delta = (ch == 1 && sbr->bs_coupling == 1) + 1; if (sbr->bs_coupling && ch) { - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_BAL_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_BAL_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_BAL_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_BAL_3_0DB]; } else { - t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB].table; + t_huff = ff_aac_sbr_vlc[T_HUFFMAN_NOISE_3_0DB]; t_lav = vlc_sbr_lav[T_HUFFMAN_NOISE_3_0DB]; - f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB].table; + f_huff = ff_aac_sbr_vlc[F_HUFFMAN_ENV_3_0DB]; f_lav = vlc_sbr_lav[F_HUFFMAN_ENV_3_0DB]; } -- 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".