From patchwork Fri Mar 1 03:08:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46679 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp1016948pzb; Thu, 29 Feb 2024 19:07:14 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCX9wGqA6ep8XN4pkUCa1WNkXdEe22JvReLXp+RPH4JZUkfxQWPPXRFT4blnNxRpEskFOULW5Cg34PLmqK2Yxuv81kMMTcilqTHrbg== X-Google-Smtp-Source: AGHT+IHBuPaSq1ySGQMM9k5mBlgVMJ7FO4eQPpzqGd0BcqfHuBvyZh4cbujXmbXXjMW59DoN0Vsl X-Received: by 2002:a17:906:c2d1:b0:a43:74fa:4f08 with SMTP id ch17-20020a170906c2d100b00a4374fa4f08mr615830ejb.9.1709262433880; Thu, 29 Feb 2024 19:07:13 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 25-20020a170906319900b00a4421013c3dsi1070064ejy.480.2024.02.29.19.07.13; Thu, 29 Feb 2024 19:07:13 -0800 (PST) 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=j1FlTSlC; 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 A747668D272; Fri, 1 Mar 2024 05:07:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2051.outbound.protection.outlook.com [40.92.50.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C329668D271 for ; Fri, 1 Mar 2024 05:06:57 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kdXt1O8MSdlgncTTOxLyGYTZf5uB9eCKlUxRU1UvK4IBtvOVfBlNg89AHY01gzPqCC1kvfiECsnlEh6S7aLHbdDYxUcLjry9UPOvpf02jeYemALgFLZggoKBXeXrMJGJgIXPSKqOzh8u1qyD+lNPgLYzrLxgx+EUeqSlU4D0X9dycZB/sZ/ge/LKs5qfyZ0Q5zbDn6mPcsFWIQjOqiVKONwfAsjJ5l8E7IGGck26r5jrbL0gKwEeYh6uQ8Cgj1AaPaotqCDNS0xT9x7Yu9vn2rISCC3Zgcr/Zd7mtjmTzz/rMy7y0FBw2o0MTJPPm7EoBUIgAN5EPbxQEDxigddWiw== 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=qmoO2ORi2R5a8h7Z+pJ/WHuEbzCGwhjcG+e7eeXDwW4=; b=QnjZe7R4SwZccCyEKZMBFpoCQDVOpJ2hUYrpTZNkCMrtmaddIbNZ1WrifxIWrEetTj3uDDott7NI/4hvEqyqQKGZj0EHjNSp+pPyCyQjSgbF7j39EFXEr9rShhDV/JgfXbW4fwr1icxXc5irRARmTgisCitrc20/UBoV/f0SVEBeo9Q5YyvDnbqDzzoFsGjoOKvY4oY00sAS7R54g782EikN9FFohxDw9JZybvQG2pLewkV6uASCpUWzo3utCljFC4yw9NsD8X68YcvK/br9gjz48/yBrYA8qxwEHhbgYUT09lv+iLXlLJ0bejCzmEkvB8QhUA+IFoxC9mRu00Nvmw== 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=qmoO2ORi2R5a8h7Z+pJ/WHuEbzCGwhjcG+e7eeXDwW4=; b=j1FlTSlCIbQ2K0Zm6P4PYRP6v6yhj9L74ckhaAgVlL/6FsMsADWKXbZH1XbdChOY517sMZDd41vSpHTcmrppghseRSrU9qUhrvFLo381nTWQ9LAq2wJfD4JJ0FrtalACcoJq18VLv7ZpGvddq9/HQAM/wklzJhOxE2jbcWdx/doQPy+6vXMJMFvuPQyjRTK2D9wufPTNRtVTtFUwWZlg7oCKdORC/S5vYpw+bYOvr5rG6vVxy0npTDv0mdSJQQK9i9xUopO6lz9dfXYcIwe/S6iGGUxYsOL8bHRCUNWlLCH2RCkOuxae/gspGOu5/fWVdZUu3rw6U0muekaAgf8oqg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0150.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:175::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.39; Fri, 1 Mar 2024 03:06:50 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Fri, 1 Mar 2024 03:06:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Mar 2024 04:08:35 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [VJ3I/GAAefOZGeC9O6qAoBxIFoZir8CsdLGw6I2yTXk=] X-ClientProxiedBy: FR0P281CA0108.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::8) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240301030835.3006751-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0150:EE_ X-MS-Office365-Filtering-Correlation-Id: 121a509f-f26d-488e-00e9-08dc399ca3e5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qdXjv+zkTn0x9h/fIqgE5rqO8tb+5TEHEEoDlb2BTAO0JQRXUAP95uSMjATJ+TH9FGvy2N/YTi8TDCJCwHSoKLI4maPQrURf/J8+QEWoLbhUbSPR5Pi/CvNxaQgsXScinTT/n5Drh68IhkK/JKKUzAuuATUA07YuZVu2c3rLhVvf9XmyOko+F/PMMdN1ANji4iVOQdAbcWpH0E+esBIKlKWmO9/lEYRRRFTy/10WaTHTA0YYw5NswMv5j0NA1LYKXT6NG0NxRLA4wycHjg2aZKAt1YASNWqwrix0py2uZ6BHHWAzagJUMpy74IE53KWbvDm80mkoo7ljT4hUORgrEDQHgk6KuCi3jlkjGHPu7g9CwywZMXqRIaZhLQ2AflYBxpE//hsTxOL/YrfWMCGRFODNRkeF7KiV3+UQ3NMdb+Q97kVWkdZXwj77pq+yNVbEt0ICqSwxlv+fXNxMYFIz8ZQRcB1boeNFqbZYbedQhXTyCqhTvtZpjcrMYXuV8cpUVXPcXOOynbtNfMZPbbxq0zXQ4khAPxDVmlkGntpUZKqBJPTzo4pL5x7tbJkbUm5L+QCXI0OXVBrBypNr1bQoGSp3vNxS9ob2pXPRp8odwq2WbCCxYOA+dkF0YHKSUF4w X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qoi21GPKRqKAbzNZ6CWN3x7brPRWLtqKnk5ezmorGZ0Jtqo0HJrkQgr/ziWIyeIeFEeqEpvFl+bIfFtPS9mt696AkIouoteFUPJ4ym+Dltz0lZpWZYL2X73/Rz5t/AVGdlyXh9WX29rVsZ+s2f5N/ITwEeEFdenCiEUSC6WDGrYutMKRp7VUo6ID+g3557fEW6eQMDELsf7G1Q1AtsPy4MTmxH0dRO4sjPLu/jy/sSboJgR0tDV5OUW5ZM6UZ3Mvm0d8MdynNNwkOavG0qmUUrr9GxlYVWKYLzxNXAonY+NqnKFISc64siWcCis4Oc9HOLvqC7+znhXHglx5EF0ZCjM13v0d1Y7IOjIyeVa8T41o7Qw5L1xBstLv51FIO5ZWSODZCnvLtlzsLLV0cK+tHoBimvL69FcyPB7kpVm5SCx+l3OUaXVU6wcATGy4/pGCB2+Do+7R84sOkT2ft6oFLobSgP0tLghj2dArknEPjZU4JOyvEIxpFYGGw0gH6h+LRpWs2YDsvgwAi+Va3rv/IVYkto2WWjVK8cwpKymP34YDWVrq1X0W/8cKdEk7UaAfVXsGsl9YnsghRKh48NtF1hrMZI5hNRBbj4Xz1Bt0J1AdgY9ZxnpMHtmI6h5/bSA+FtROC9X6kCNzKXC8CvzGhqTTZNF7b6sJumMNsG5vAC5ciU/xY4GZVnWs62ybhGG65gi9ngKlKr1ksVdLRfms++mXqReIh5y1UmQYytyhw1Gvi4gR7136rkcVV2F1UBjwCVkmqyHqrgbntQTxkZTrQz1ewHZ9JX//t8Vvw4eiCHLcfRWif8CQ55R7zB4phlDXT1gHVQUDtnOQs9jiiTfc/Ou9bOUlIY2lPqjfeoQeqmA3xxR2nBOb1/tq/kZYbi79KbdoxIRs2QvTkmJ7y/ynhJ7X3ZtYtdT3l6+4FGQfXfzIQBS8N7koNkP+kxgJfOJ79KPbJ7mIRm0GHMfioRBLMkBnbq1G0H5EB3Dnm4DvP7FUq2jrqGzqHjXlTgBcAO/7cWZ2H75h3Enqf2DHVhSZRi77kpukRnLuRjS0PRjGLyVXS6UhiIrTyS0zUHy6UtfInVt0boyomCzNBfluPV1ccc+4up54amp712YvMxB9J97A5dMkizZUYEnVamjm2diY8K3U5RduQzpfshCwpZWcicMSsgvRUdHyaeqztOsPXVy/R1+rQN00qnbeXUg667DmvTclDvR56mbhuPxVety0eQ2Jp6dNq+qGQ/BjRh88dAkSMm7FseBHh33m0L70iiiJeBkk7qkzO+VXVDu2ajVQHw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 121a509f-f26d-488e-00e9-08dc399ca3e5 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2024 03:06:50.8600 (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: PR3P250MB0150 Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/aactab: Deduplicate ltp_coef and tns_tmp2_map tables 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: y3UgG7sfqmOs This will allow to make aac_defines.h decoder-only. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacdec_fixed.c | 43 ++++++++++++++++++++++++++++++++++++ libavcodec/aacdec_template.c | 4 ++-- libavcodec/aacenc_ltp.c | 4 ++-- libavcodec/aacenc_tns.c | 2 +- libavcodec/aactab.c | 39 ++++++++++++++++++++++++++++++++ libavcodec/aactab.h | 36 ++---------------------------- 6 files changed, 89 insertions(+), 39 deletions(-) diff --git a/libavcodec/aacdec_fixed.c b/libavcodec/aacdec_fixed.c index 2abe6acb6b..5d5ae34838 100644 --- a/libavcodec/aacdec_fixed.c +++ b/libavcodec/aacdec_fixed.c @@ -89,6 +89,49 @@ DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_short_128))[128]; DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_long_960))[960]; DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_short_120))[120]; +/* @name ltp_coef + * Table of the LTP coefficients + */ +static const int ltp_coef_fixed[8] = { + Q30(0.570829), Q30(0.696616), Q30(0.813004), Q30(0.911304), + Q30(0.984900), Q30(1.067894), Q30(1.194601), Q30(1.369533), +}; + +/* @name tns_tmp2_map + * Tables of the tmp2[] arrays of LPC coefficients used for TNS. + * The suffix _M_N[] indicate the values of coef_compress and coef_res + * respectively. + * @{ + */ +static const int tns_tmp2_map_1_3[4] = { + Q31(0.00000000), Q31(-0.43388373), Q31(0.64278758), Q31(0.34202015), +}; + +static const int tns_tmp2_map_0_3[8] = { + Q31(0.00000000), Q31(-0.43388373), Q31(-0.78183150), Q31(-0.97492790), + Q31(0.98480773), Q31( 0.86602539), Q31( 0.64278758), Q31( 0.34202015), +}; + +static const int tns_tmp2_map_1_4[8] = { + Q31(0.00000000), Q31(-0.20791170), Q31(-0.40673664), Q31(-0.58778524), + Q31(0.67369562), Q31( 0.52643216), Q31( 0.36124167), Q31( 0.18374951), +}; + +static const int tns_tmp2_map_0_4[16] = { + Q31( 0.00000000), Q31(-0.20791170), Q31(-0.40673664), Q31(-0.58778524), + Q31(-0.74314481), Q31(-0.86602539), Q31(-0.95105654), Q31(-0.99452192), + Q31( 0.99573416), Q31( 0.96182561), Q31( 0.89516330), Q31( 0.79801720), + Q31( 0.67369562), Q31( 0.52643216), Q31( 0.36124167), Q31( 0.18374951), +}; + +static const int * const tns_tmp2_map_fixed[4] = { + tns_tmp2_map_0_3, + tns_tmp2_map_0_4, + tns_tmp2_map_1_3, + tns_tmp2_map_1_4 +}; +// @} + static av_always_inline void reset_predict_state(PredictorState *ps) { ps->r0.mant = 0; diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 6561abb14e..3d96ed6f29 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -1298,7 +1298,7 @@ static void decode_ltp(LongTermPrediction *ltp, int sfb; ltp->lag = get_bits(gb, 11); - ltp->coef = ltp_coef[get_bits(gb, 3)]; + ltp->coef = AAC_RENAME2(ltp_coef)[get_bits(gb, 3)]; for (sfb = 0; sfb < FFMIN(max_sfb, MAX_LTP_LONG_SFB); sfb++) ltp->used[sfb] = get_bits1(gb); } @@ -1611,7 +1611,7 @@ static int decode_tns(AACDecContext *ac, TemporalNoiseShaping *tns, tmp2_idx = 2 * coef_compress + coef_res; for (i = 0; i < tns->order[w][filt]; i++) - tns->coef[w][filt][i] = tns_tmp2_map[tmp2_idx][get_bits(gb, coef_len)]; + tns->coef[w][filt][i] = AAC_RENAME2(tns_tmp2_map)[tmp2_idx][get_bits(gb, coef_len)]; } } } diff --git a/libavcodec/aacenc_ltp.c b/libavcodec/aacenc_ltp.c index f3075f0e71..9901891d68 100644 --- a/libavcodec/aacenc_ltp.c +++ b/libavcodec/aacenc_ltp.c @@ -92,8 +92,8 @@ static void get_lag(float *buf, const float *new, LongTermPrediction *ltp) } } ltp->lag = FFMAX(av_clip_uintp2(lag, 11), 0); - ltp->coef_idx = quant_array_idx(max_ratio, ltp_coef, 8); - ltp->coef = ltp_coef[ltp->coef_idx]; + ltp->coef_idx = quant_array_idx(max_ratio, ff_ltp_coef, 8); + ltp->coef = ff_ltp_coef[ltp->coef_idx]; } static void generate_samples(float *buf, LongTermPrediction *ltp) diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c index b2418a0236..60888fece7 100644 --- a/libavcodec/aacenc_tns.c +++ b/libavcodec/aacenc_tns.c @@ -148,7 +148,7 @@ static inline void quantize_coefs(double *coef, int *idx, float *lpc, int order, int c_bits) { int i; - const float *quant_arr = tns_tmp2_map[c_bits]; + const float *quant_arr = ff_tns_tmp2_map[c_bits]; for (i = 0; i < order; i++) { idx[i] = quant_array_idx(coef[i], quant_arr, c_bits ? 16 : 8); lpc[i] = quant_arr[idx[i]]; diff --git a/libavcodec/aactab.c b/libavcodec/aactab.c index 63a478f33f..020267f389 100644 --- a/libavcodec/aactab.c +++ b/libavcodec/aactab.c @@ -105,6 +105,45 @@ av_cold void ff_aac_float_common_init(void) static AVOnce init_static_once = AV_ONCE_INIT; ff_thread_once(&init_static_once, aac_float_common_init); } + +const float ff_ltp_coef[8] = { + 0.570829, 0.696616, 0.813004, 0.911304, + 0.984900, 1.067894, 1.194601, 1.369533, +}; + +/* @name tns_tmp2_map + * Tables of the tmp2[] arrays of LPC coefficients used for TNS. + * The suffix _M_N[] indicate the values of coef_compress and coef_res + * respectively. + * @{ + */ +static const float tns_tmp2_map_1_3[4] = { + 0.00000000, -0.43388373, 0.64278758, 0.34202015, +}; + +static const float tns_tmp2_map_0_3[8] = { + 0.00000000, -0.43388373, -0.78183150, -0.97492790, + 0.98480773, 0.86602539, 0.64278758, 0.34202015, +}; + +static const float tns_tmp2_map_1_4[8] = { + 0.00000000, -0.20791170, -0.40673664, -0.58778524, + 0.67369562, 0.52643216, 0.36124167, 0.18374951, +}; + +static const float tns_tmp2_map_0_4[16] = { + 0.00000000, -0.20791170, -0.40673664, -0.58778524, + -0.74314481, -0.86602539, -0.95105654, -0.99452192, + 0.99573416, 0.96182561, 0.89516330, 0.79801720, + 0.67369562, 0.52643216, 0.36124167, 0.18374951, +}; + +const float * const ff_tns_tmp2_map[4] = { + tns_tmp2_map_0_3, + tns_tmp2_map_0_4, + tns_tmp2_map_1_3, + tns_tmp2_map_1_4 +}; #endif const uint8_t ff_aac_num_swb_1024[] = { diff --git a/libavcodec/aactab.h b/libavcodec/aactab.h index 81db29a4e4..e1a2d8b9a1 100644 --- a/libavcodec/aactab.h +++ b/libavcodec/aactab.h @@ -31,7 +31,6 @@ #define AVCODEC_AACTAB_H #include "libavutil/mem_internal.h" -#include "aac_defines.h" #include @@ -45,44 +44,13 @@ extern float ff_aac_pow34sf_tab[428]; /* @name ltp_coef * Table of the LTP coefficients */ -static const INTFLOAT ltp_coef[8] = { - Q30(0.570829), Q30(0.696616), Q30(0.813004), Q30(0.911304), - Q30(0.984900), Q30(1.067894), Q30(1.194601), Q30(1.369533), -}; +extern const float ff_ltp_coef[8]; /* @name tns_tmp2_map * Tables of the tmp2[] arrays of LPC coefficients used for TNS. - * The suffix _M_N[] indicate the values of coef_compress and coef_res - * respectively. * @{ */ -static const INTFLOAT tns_tmp2_map_1_3[4] = { - Q31(0.00000000), Q31(-0.43388373), Q31(0.64278758), Q31(0.34202015), -}; - -static const INTFLOAT tns_tmp2_map_0_3[8] = { - Q31(0.00000000), Q31(-0.43388373), Q31(-0.78183150), Q31(-0.97492790), - Q31(0.98480773), Q31( 0.86602539), Q31( 0.64278758), Q31( 0.34202015), -}; - -static const INTFLOAT tns_tmp2_map_1_4[8] = { - Q31(0.00000000), Q31(-0.20791170), Q31(-0.40673664), Q31(-0.58778524), - Q31(0.67369562), Q31( 0.52643216), Q31( 0.36124167), Q31( 0.18374951), -}; - -static const INTFLOAT tns_tmp2_map_0_4[16] = { - Q31( 0.00000000), Q31(-0.20791170), Q31(-0.40673664), Q31(-0.58778524), - Q31(-0.74314481), Q31(-0.86602539), Q31(-0.95105654), Q31(-0.99452192), - Q31( 0.99573416), Q31( 0.96182561), Q31( 0.89516330), Q31( 0.79801720), - Q31( 0.67369562), Q31( 0.52643216), Q31( 0.36124167), Q31( 0.18374951), -}; - -static const INTFLOAT * const tns_tmp2_map[4] = { - tns_tmp2_map_0_3, - tns_tmp2_map_0_4, - tns_tmp2_map_1_3, - tns_tmp2_map_1_4 -}; +extern const float *const ff_tns_tmp2_map[4]; // @} /* @name window coefficients