3 * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4 * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
6 * This file is part of FFmpeg.
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
26 * @author Oded Shimon ( ods15 ods15 dyndns org )
27 * @author Maxim Gavrilov ( maxim.gavrilov gmail com )
30 #ifndef AVCODEC_AACDECTAB_H
31 #define AVCODEC_AACDECTAB_H
38 * Sample offset into the window indicating the beginning of a scalefactor
41 * scalefactor window band - term for scalefactor bands within a window,
42 * given in Table 4.110 to Table 4.128.
44 * scalefactor band - a set of spectral coefficients which are scaled by one
45 * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
46 * may contain several scalefactor window bands of corresponding frequency. For
47 * all other window_sequences scalefactor bands and scalefactor window bands are
52 static const uint16_t swb_offset_1024_96
[] = {
53 0, 4, 8, 12, 16, 20, 24, 28,
54 32, 36, 40, 44, 48, 52, 56, 64,
55 72, 80, 88, 96, 108, 120, 132, 144,
56 156, 172, 188, 212, 240, 276, 320, 384,
57 448, 512, 576, 640, 704, 768, 832, 896,
61 static const uint16_t swb_offset_128_96
[] = {
62 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
65 static const uint16_t swb_offset_1024_64
[] = {
66 0, 4, 8, 12, 16, 20, 24, 28,
67 32, 36, 40, 44, 48, 52, 56, 64,
68 72, 80, 88, 100, 112, 124, 140, 156,
69 172, 192, 216, 240, 268, 304, 344, 384,
70 424, 464, 504, 544, 584, 624, 664, 704,
71 744, 784, 824, 864, 904, 944, 984, 1024
74 static const uint16_t swb_offset_1024_48
[] = {
75 0, 4, 8, 12, 16, 20, 24, 28,
76 32, 36, 40, 48, 56, 64, 72, 80,
77 88, 96, 108, 120, 132, 144, 160, 176,
78 196, 216, 240, 264, 292, 320, 352, 384,
79 416, 448, 480, 512, 544, 576, 608, 640,
80 672, 704, 736, 768, 800, 832, 864, 896,
84 static const uint16_t swb_offset_128_48
[] = {
85 0, 4, 8, 12, 16, 20, 28, 36,
86 44, 56, 68, 80, 96, 112, 128
89 static const uint16_t swb_offset_1024_32
[] = {
90 0, 4, 8, 12, 16, 20, 24, 28,
91 32, 36, 40, 48, 56, 64, 72, 80,
92 88, 96, 108, 120, 132, 144, 160, 176,
93 196, 216, 240, 264, 292, 320, 352, 384,
94 416, 448, 480, 512, 544, 576, 608, 640,
95 672, 704, 736, 768, 800, 832, 864, 896,
99 static const uint16_t swb_offset_1024_24
[] = {
100 0, 4, 8, 12, 16, 20, 24, 28,
101 32, 36, 40, 44, 52, 60, 68, 76,
102 84, 92, 100, 108, 116, 124, 136, 148,
103 160, 172, 188, 204, 220, 240, 260, 284,
104 308, 336, 364, 396, 432, 468, 508, 552,
105 600, 652, 704, 768, 832, 896, 960, 1024
108 static const uint16_t swb_offset_128_24
[] = {
109 0, 4, 8, 12, 16, 20, 24, 28,
110 36, 44, 52, 64, 76, 92, 108, 128
113 static const uint16_t swb_offset_1024_16
[] = {
114 0, 8, 16, 24, 32, 40, 48, 56,
115 64, 72, 80, 88, 100, 112, 124, 136,
116 148, 160, 172, 184, 196, 212, 228, 244,
117 260, 280, 300, 320, 344, 368, 396, 424,
118 456, 492, 532, 572, 616, 664, 716, 772,
122 static const uint16_t swb_offset_128_16
[] = {
123 0, 4, 8, 12, 16, 20, 24, 28,
124 32, 40, 48, 60, 72, 88, 108, 128
127 static const uint16_t swb_offset_1024_8
[] = {
128 0, 12, 24, 36, 48, 60, 72, 84,
129 96, 108, 120, 132, 144, 156, 172, 188,
130 204, 220, 236, 252, 268, 288, 308, 328,
131 348, 372, 396, 420, 448, 476, 508, 544,
132 580, 620, 664, 712, 764, 820, 880, 944,
136 static const uint16_t swb_offset_128_8
[] = {
137 0, 4, 8, 12, 16, 20, 24, 28,
138 36, 44, 52, 60, 72, 88, 108, 128
141 static const uint16_t *swb_offset_1024
[] = {
142 swb_offset_1024_96
, swb_offset_1024_96
, swb_offset_1024_64
,
143 swb_offset_1024_48
, swb_offset_1024_48
, swb_offset_1024_32
,
144 swb_offset_1024_24
, swb_offset_1024_24
, swb_offset_1024_16
,
145 swb_offset_1024_16
, swb_offset_1024_16
, swb_offset_1024_8
148 static const uint16_t *swb_offset_128
[] = {
149 /* The last entry on the following row is swb_offset_128_64 but is a
150 duplicate of swb_offset_128_96. */
151 swb_offset_128_96
, swb_offset_128_96
, swb_offset_128_96
,
152 swb_offset_128_48
, swb_offset_128_48
, swb_offset_128_48
,
153 swb_offset_128_24
, swb_offset_128_24
, swb_offset_128_16
,
154 swb_offset_128_16
, swb_offset_128_16
, swb_offset_128_8
159 /* @name tns_max_bands
160 * The maximum number of scalefactor bands on which TNS can operate for the long
161 * and short transforms respectively. The index to these tables is related to
162 * the sample rate of the audio.
165 static const uint8_t tns_max_bands_1024
[] = {
166 31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39
169 static const uint8_t tns_max_bands_128
[] = {
170 9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14
174 /* @name tns_tmp2_map
175 * Tables of the tmp2[] arrays of LPC coefficients used for TNS.
176 * The suffix _M_N[] indicate the values of coef_compress and coef_res
180 static const float tns_tmp2_map_1_3
[4] = {
181 0.00000000, -0.43388373, 0.64278758, 0.34202015,
184 static const float tns_tmp2_map_0_3
[8] = {
185 0.00000000, -0.43388373, -0.78183150, -0.97492790,
186 0.98480773, 0.86602539, 0.64278758, 0.34202015,
189 static const float tns_tmp2_map_1_4
[8] = {
190 0.00000000, -0.20791170, -0.40673664, -0.58778524,
191 0.67369562, 0.52643216, 0.36124167, 0.18374951,
194 static const float tns_tmp2_map_0_4
[16] = {
195 0.00000000, -0.20791170, -0.40673664, -0.58778524,
196 -0.74314481, -0.86602539, -0.95105654, -0.99452192,
197 0.99573416, 0.96182561, 0.89516330, 0.79801720,
198 0.67369562, 0.52643216, 0.36124167, 0.18374951,
201 static const float *tns_tmp2_map
[4] = {
209 #endif /* AVCODEC_AACDECTAB_H */