FFmpeg coverage


Directory: ../../../ffmpeg/
File: src/libavcodec/aactab.c
Date: 2024-04-20 14:10:07
Exec Total Coverage
Lines: 27 27 100.0%
Functions: 3 3 100.0%
Branches: 6 6 100.0%

Line Branch Exec Source
1 /*
2 * AAC data
3 * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4 * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5 *
6 * This file is part of FFmpeg.
7 *
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.
12 *
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.
17 *
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
21 */
22
23 /**
24 * @file
25 * AAC data
26 * @author Oded Shimon ( ods15 ods15 dyndns org )
27 * @author Maxim Gavrilov ( maxim.gavrilov gmail com )
28 */
29
30 #include <stddef.h>
31 #include <stdint.h>
32
33 #include "config_components.h"
34 #include "libavutil/attributes.h"
35 #include "libavutil/mem_internal.h"
36 #include "libavutil/thread.h"
37 #include "aactab.h"
38
39 #if CONFIG_AAC_ENCODER || CONFIG_AAC_DECODER
40 #include "kbdwin.h"
41 #include "sinewin.h"
42
43 float ff_aac_pow2sf_tab[428];
44 float ff_aac_pow34sf_tab[428];
45
46 DECLARE_ALIGNED(32, float, ff_aac_kbd_long_1024)[1024];
47 DECLARE_ALIGNED(32, float, ff_aac_kbd_short_128)[128];
48
49 171 static av_cold void aac_tableinit(void)
50 {
51 /* 2^(i/16) for 0 <= i <= 15 */
52 static const float exp2_lut[] = {
53 1.00000000000000000000,
54 1.04427378242741384032,
55 1.09050773266525765921,
56 1.13878863475669165370,
57 1.18920711500272106672,
58 1.24185781207348404859,
59 1.29683955465100966593,
60 1.35425554693689272830,
61 1.41421356237309504880,
62 1.47682614593949931139,
63 1.54221082540794082361,
64 1.61049033194925430818,
65 1.68179283050742908606,
66 1.75625216037329948311,
67 1.83400808640934246349,
68 1.91520656139714729387,
69 };
70 171 float t1 = 8.8817841970012523233890533447265625e-16; // 2^(-50)
71 171 float t2 = 3.63797880709171295166015625e-12; // 2^(-38)
72 int t1_inc_cur, t2_inc_cur;
73 171 int t1_inc_prev = 0;
74 171 int t2_inc_prev = 8;
75
76
2/2
✓ Branch 0 taken 73188 times.
✓ Branch 1 taken 171 times.
73359 for (int i = 0; i < 428; i++) {
77 73188 t1_inc_cur = 4 * (i % 4);
78 73188 t2_inc_cur = (8 + 3*i) % 16;
79
2/2
✓ Branch 0 taken 18126 times.
✓ Branch 1 taken 55062 times.
73188 if (t1_inc_cur < t1_inc_prev)
80 18126 t1 *= 2;
81
2/2
✓ Branch 0 taken 13680 times.
✓ Branch 1 taken 59508 times.
73188 if (t2_inc_cur < t2_inc_prev)
82 13680 t2 *= 2;
83 // A much more efficient and accurate way of doing:
84 // ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.0);
85 // ff_aac_pow34sf_tab[i] = pow(ff_aac_pow2sf_tab[i], 3.0/4.0);
86 73188 ff_aac_pow2sf_tab[i] = t1 * exp2_lut[t1_inc_cur];
87 73188 ff_aac_pow34sf_tab[i] = t2 * exp2_lut[t2_inc_cur];
88 73188 t1_inc_prev = t1_inc_cur;
89 73188 t2_inc_prev = t2_inc_cur;
90 }
91 171 }
92
93 171 static av_cold void aac_float_common_init(void)
94 {
95 171 aac_tableinit();
96
97 171 ff_kbd_window_init(ff_aac_kbd_long_1024, 4.0, 1024);
98 171 ff_kbd_window_init(ff_aac_kbd_short_128, 6.0, 128);
99 171 ff_init_ff_sine_windows(10);
100 171 ff_init_ff_sine_windows(7);
101 171 }
102
103 172 av_cold void ff_aac_float_common_init(void)
104 {
105 static AVOnce init_static_once = AV_ONCE_INIT;
106 172 ff_thread_once(&init_static_once, aac_float_common_init);
107 172 }
108
109 const float ff_ltp_coef[8] = {
110 0.570829, 0.696616, 0.813004, 0.911304,
111 0.984900, 1.067894, 1.194601, 1.369533,
112 };
113
114 /* @name tns_tmp2_map
115 * Tables of the tmp2[] arrays of LPC coefficients used for TNS.
116 * The suffix _M_N[] indicate the values of coef_compress and coef_res
117 * respectively.
118 * @{
119 */
120 static const float tns_tmp2_map_1_3[4] = {
121 0.00000000, -0.43388373, 0.64278758, 0.34202015,
122 };
123
124 static const float tns_tmp2_map_0_3[8] = {
125 0.00000000, -0.43388373, -0.78183150, -0.97492790,
126 0.98480773, 0.86602539, 0.64278758, 0.34202015,
127 };
128
129 static const float tns_tmp2_map_1_4[8] = {
130 0.00000000, -0.20791170, -0.40673664, -0.58778524,
131 0.67369562, 0.52643216, 0.36124167, 0.18374951,
132 };
133
134 static const float tns_tmp2_map_0_4[16] = {
135 0.00000000, -0.20791170, -0.40673664, -0.58778524,
136 -0.74314481, -0.86602539, -0.95105654, -0.99452192,
137 0.99573416, 0.96182561, 0.89516330, 0.79801720,
138 0.67369562, 0.52643216, 0.36124167, 0.18374951,
139 };
140
141 const float * const ff_tns_tmp2_map[4] = {
142 tns_tmp2_map_0_3,
143 tns_tmp2_map_0_4,
144 tns_tmp2_map_1_3,
145 tns_tmp2_map_1_4
146 };
147 #endif
148
149 const uint8_t ff_aac_num_swb_1024[] = {
150 41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
151 };
152
153 const uint8_t ff_aac_num_swb_960[] = {
154 40, 40, 46, 49, 49, 49, 46, 46, 42, 42, 42, 40, 40
155 };
156
157 const uint8_t ff_aac_num_swb_512[] = {
158 0, 0, 0, 36, 36, 37, 31, 31, 0, 0, 0, 0, 0
159 };
160
161 const uint8_t ff_aac_num_swb_480[] = {
162 0, 0, 0, 35, 35, 37, 30, 30, 0, 0, 0, 0, 0
163 };
164
165 const uint8_t ff_aac_num_swb_128[] = {
166 12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
167 };
168
169 const uint8_t ff_aac_num_swb_120[] = {
170 12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
171 };
172
173 const uint8_t ff_aac_pred_sfb_max[] = {
174 33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
175 };
176
177 const uint32_t ff_aac_scalefactor_code[121] = {
178 0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
179 0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
180 0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
181 0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
182 0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
183 0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
184 0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
185 0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
186 0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
187 0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
188 0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
189 0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
190 0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
191 0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
192 0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
193 0x7fff3,
194 };
195
196 const uint8_t ff_aac_scalefactor_bits[121] = {
197 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
198 19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
199 14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
200 10, 9, 9, 8, 8, 8, 7, 6, 6, 5, 4, 3, 1, 4, 4, 5,
201 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12,
202 12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
203 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
204 19, 19, 19, 19, 19, 19, 19, 19, 19,
205 };
206
207 static const uint16_t codes1[81] = {
208 0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
209 0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
210 0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
211 0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
212 0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
213 0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
214 0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
215 0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
216 0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
217 0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
218 0x7f4,
219 };
220
221 static const uint8_t bits1[81] = {
222 11, 9, 11, 10, 7, 10, 11, 9, 11, 10, 7, 10, 7, 5, 7, 9,
223 7, 10, 11, 9, 11, 9, 7, 9, 11, 9, 11, 9, 7, 9, 7, 5,
224 7, 9, 7, 9, 7, 5, 7, 5, 1, 5, 7, 5, 7, 9, 7, 9,
225 7, 5, 7, 9, 7, 9, 11, 9, 11, 9, 7, 9, 11, 9, 11, 10,
226 7, 9, 7, 5, 7, 9, 7, 10, 11, 9, 11, 10, 7, 9, 11, 9,
227 11,
228 };
229
230 static const uint16_t codes2[81] = {
231 0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
232 0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
233 0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
234 0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
235 0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
236 0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
237 0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
238 0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
239 0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
240 0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
241 0x1f6,
242 };
243
244 static const uint8_t bits2[81] = {
245 9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
246 6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
247 6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
248 6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
249 6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
250 9,
251 };
252
253 static const uint16_t codes3[81] = {
254 0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
255 0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
256 0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
257 0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
258 0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
259 0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
260 0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
261 0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
262 0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
263 0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
264 0x7ffa,
265 };
266
267 static const uint8_t bits3[81] = {
268 1, 4, 8, 4, 5, 8, 9, 9, 10, 4, 6, 9, 6, 6, 9, 9,
269 9, 10, 9, 10, 13, 9, 9, 11, 11, 10, 12, 4, 6, 10, 6, 7,
270 10, 10, 10, 12, 5, 7, 11, 6, 7, 10, 9, 9, 11, 9, 10, 13,
271 8, 9, 12, 10, 11, 12, 8, 10, 15, 9, 11, 15, 13, 14, 16, 8,
272 10, 14, 9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
273 15,
274 };
275
276 static const uint16_t codes4[81] = {
277 0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
278 0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
279 0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
280 0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
281 0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
282 0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
283 0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
284 0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
285 0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
286 0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
287 0x7fc,
288 };
289
290 static const uint8_t bits4[81] = {
291 4, 5, 8, 5, 4, 8, 9, 8, 11, 5, 5, 8, 5, 4, 8, 8,
292 7, 10, 9, 8, 11, 8, 8, 10, 11, 10, 11, 4, 5, 8, 4, 4,
293 8, 8, 8, 10, 4, 4, 8, 4, 4, 7, 8, 7, 9, 8, 8, 10,
294 7, 7, 9, 10, 9, 10, 8, 8, 11, 8, 7, 10, 11, 10, 12, 8,
295 7, 10, 7, 7, 9, 10, 9, 11, 11, 10, 12, 10, 9, 11, 11, 10,
296 11,
297 };
298
299 static const uint16_t codes5[81] = {
300 0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
301 0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
302 0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
303 0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
304 0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
305 0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
306 0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
307 0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
308 0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
309 0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
310 0x1ffe,
311 };
312
313 static const uint8_t bits5[81] = {
314 13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10, 9, 8, 9, 10,
315 11, 12, 12, 10, 9, 8, 7, 8, 9, 10, 11, 11, 9, 8, 5, 4,
316 5, 8, 9, 11, 10, 8, 7, 4, 1, 4, 7, 8, 11, 11, 9, 8,
317 5, 4, 5, 8, 9, 11, 11, 10, 9, 8, 7, 8, 9, 10, 11, 12,
318 11, 10, 9, 8, 9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
319 13,
320 };
321
322 static const uint16_t codes6[81] = {
323 0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
324 0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
325 0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
326 0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
327 0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
328 0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
329 0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
330 0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
331 0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
332 0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
333 0x7fc,
334 };
335
336 static const uint8_t bits6[81] = {
337 11, 10, 9, 9, 9, 9, 9, 10, 11, 10, 9, 8, 7, 7, 7, 8,
338 9, 10, 9, 8, 6, 6, 6, 6, 6, 8, 9, 9, 7, 6, 4, 4,
339 4, 6, 7, 9, 9, 7, 6, 4, 4, 4, 6, 7, 9, 9, 7, 6,
340 4, 4, 4, 6, 7, 9, 9, 8, 6, 6, 6, 6, 6, 8, 9, 10,
341 9, 8, 7, 7, 7, 7, 8, 10, 11, 10, 9, 9, 9, 9, 9, 10,
342 11,
343 };
344
345 static const uint16_t codes7[64] = {
346 0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
347 0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
348 0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
349 0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
350 0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
351 0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
352 0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
353 0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
354 };
355
356 static const uint8_t bits7[64] = {
357 1, 3, 6, 7, 8, 9, 10, 11, 3, 4, 6, 7, 8, 8, 9, 9,
358 6, 6, 7, 8, 8, 9, 9, 10, 7, 7, 8, 8, 9, 9, 10, 10,
359 8, 8, 9, 9, 10, 10, 10, 11, 9, 8, 9, 9, 10, 10, 11, 11,
360 10, 9, 9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
361 };
362
363 static const uint16_t codes8[64] = {
364 0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
365 0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
366 0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
367 0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
368 0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
369 0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
370 0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
371 0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
372 };
373
374 static const uint8_t bits8[64] = {
375 5, 4, 5, 6, 7, 8, 9, 10, 4, 3, 4, 5, 6, 7, 7, 8,
376 5, 4, 4, 5, 6, 7, 7, 8, 6, 5, 5, 6, 6, 7, 8, 8,
377 7, 6, 6, 6, 7, 7, 8, 9, 8, 7, 6, 7, 7, 8, 8, 10,
378 9, 7, 7, 8, 8, 8, 9, 9, 10, 8, 8, 8, 9, 9, 9, 10,
379 };
380
381 static const uint16_t codes9[169] = {
382 0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
383 0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
384 0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
385 0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
386 0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
387 0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
388 0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
389 0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
390 0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
391 0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
392 0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
393 0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
394 0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
395 0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
396 0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
397 0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
398 0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
399 0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
400 0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
401 0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
402 0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
403 0x7fff,
404 };
405
406 static const uint8_t bits9[169] = {
407 1, 3, 6, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6,
408 7, 8, 8, 9, 10, 10, 10, 11, 12, 12, 6, 6, 7, 8, 8, 9,
409 10, 10, 10, 11, 12, 12, 12, 8, 7, 8, 9, 9, 10, 10, 11, 11,
410 11, 12, 12, 13, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12,
411 13, 10, 9, 9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11, 9,
412 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
413 12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
414 13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
415 14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
416 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
417 13, 13, 13, 13, 14, 14, 14, 14, 15,
418 };
419
420 static const uint16_t codes10[169] = {
421 0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
422 0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
423 0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
424 0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
425 0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
426 0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
427 0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
428 0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
429 0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
430 0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
431 0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
432 0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
433 0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
434 0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
435 0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
436 0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
437 0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
438 0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
439 0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
440 0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
441 0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
442 0xfff,
443 };
444
445 static const uint8_t bits10[169] = {
446 6, 5, 6, 6, 7, 8, 9, 10, 10, 10, 11, 11, 12, 5, 4, 4,
447 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 6, 4, 5, 5, 6, 6,
448 7, 8, 8, 9, 9, 10, 10, 6, 5, 5, 5, 6, 7, 7, 8, 8,
449 9, 9, 10, 10, 7, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10,
450 10, 8, 7, 6, 7, 7, 7, 8, 8, 8, 9, 10, 10, 11, 9, 7,
451 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 9, 8, 8, 8, 8,
452 8, 9, 9, 9, 10, 10, 11, 11, 9, 8, 8, 8, 8, 8, 9, 9,
453 10, 10, 10, 11, 11, 10, 9, 9, 9, 9, 9, 9, 10, 10, 10, 11,
454 11, 12, 10, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
455 10, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
456 10, 10, 10, 11, 11, 12, 12, 12, 12,
457 };
458
459 static const uint16_t codes11[289] = {
460 0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
461 0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
462 0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
463 0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
464 0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
465 0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
466 0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
467 0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
468 0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
469 0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
470 0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
471 0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
472 0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
473 0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
474 0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
475 0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
476 0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
477 0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
478 0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
479 0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
480 0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
481 0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
482 0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
483 0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
484 0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
485 0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
486 0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
487 0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
488 0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
489 0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
490 0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
491 0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
492 0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
493 0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
494 0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
495 0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
496 0x004,
497 };
498
499 static const uint8_t bits11[289] = {
500 4, 5, 6, 7, 8, 8, 9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
501 10, 5, 4, 5, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10,
502 11, 8, 6, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10,
503 10, 10, 8, 7, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10,
504 10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
505 10, 10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9,
506 9, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9,
507 9, 10, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9,
508 9, 10, 10, 10, 10, 10, 10, 8, 10, 9, 8, 8, 9, 9, 9, 9,
509 9, 10, 10, 10, 10, 10, 10, 11, 8, 10, 9, 9, 9, 9, 9, 9,
510 9, 10, 10, 10, 10, 10, 10, 11, 11, 8, 11, 9, 9, 9, 9, 9,
511 9, 10, 10, 10, 10, 10, 11, 10, 11, 11, 8, 11, 10, 9, 9, 10,
512 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11, 10, 10, 10,
513 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 9, 11, 10, 9,
514 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 11, 10,
515 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 12,
516 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 9,
517 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
518 5,
519 };
520
521 const uint16_t * const ff_aac_spectral_codes[11] = {
522 codes1, codes2, codes3, codes4, codes5, codes6, codes7, codes8,
523 codes9, codes10, codes11,
524 };
525
526 const uint8_t * const ff_aac_spectral_bits[11] = {
527 bits1, bits2, bits3, bits4, bits5, bits6, bits7, bits8,
528 bits9, bits10, bits11,
529 };
530
531 const uint16_t ff_aac_spectral_sizes[11] = {
532 81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
533 };
534
535 /* NOTE:
536 * 64.0f is a special value indicating the existence of an escape code in the
537 * bitstream.
538 */
539 static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
540 -1.0000000, -1.0000000, -1.0000000, -1.0000000,
541 -1.0000000, -1.0000000, -1.0000000, 0.0000000,
542 -1.0000000, -1.0000000, -1.0000000, 1.0000000,
543 -1.0000000, -1.0000000, 0.0000000, -1.0000000,
544 -1.0000000, -1.0000000, 0.0000000, 0.0000000,
545 -1.0000000, -1.0000000, 0.0000000, 1.0000000,
546 -1.0000000, -1.0000000, 1.0000000, -1.0000000,
547 -1.0000000, -1.0000000, 1.0000000, 0.0000000,
548 -1.0000000, -1.0000000, 1.0000000, 1.0000000,
549 -1.0000000, 0.0000000, -1.0000000, -1.0000000,
550 -1.0000000, 0.0000000, -1.0000000, 0.0000000,
551 -1.0000000, 0.0000000, -1.0000000, 1.0000000,
552 -1.0000000, 0.0000000, 0.0000000, -1.0000000,
553 -1.0000000, 0.0000000, 0.0000000, 0.0000000,
554 -1.0000000, 0.0000000, 0.0000000, 1.0000000,
555 -1.0000000, 0.0000000, 1.0000000, -1.0000000,
556 -1.0000000, 0.0000000, 1.0000000, 0.0000000,
557 -1.0000000, 0.0000000, 1.0000000, 1.0000000,
558 -1.0000000, 1.0000000, -1.0000000, -1.0000000,
559 -1.0000000, 1.0000000, -1.0000000, 0.0000000,
560 -1.0000000, 1.0000000, -1.0000000, 1.0000000,
561 -1.0000000, 1.0000000, 0.0000000, -1.0000000,
562 -1.0000000, 1.0000000, 0.0000000, 0.0000000,
563 -1.0000000, 1.0000000, 0.0000000, 1.0000000,
564 -1.0000000, 1.0000000, 1.0000000, -1.0000000,
565 -1.0000000, 1.0000000, 1.0000000, 0.0000000,
566 -1.0000000, 1.0000000, 1.0000000, 1.0000000,
567 0.0000000, -1.0000000, -1.0000000, -1.0000000,
568 0.0000000, -1.0000000, -1.0000000, 0.0000000,
569 0.0000000, -1.0000000, -1.0000000, 1.0000000,
570 0.0000000, -1.0000000, 0.0000000, -1.0000000,
571 0.0000000, -1.0000000, 0.0000000, 0.0000000,
572 0.0000000, -1.0000000, 0.0000000, 1.0000000,
573 0.0000000, -1.0000000, 1.0000000, -1.0000000,
574 0.0000000, -1.0000000, 1.0000000, 0.0000000,
575 0.0000000, -1.0000000, 1.0000000, 1.0000000,
576 0.0000000, 0.0000000, -1.0000000, -1.0000000,
577 0.0000000, 0.0000000, -1.0000000, 0.0000000,
578 0.0000000, 0.0000000, -1.0000000, 1.0000000,
579 0.0000000, 0.0000000, 0.0000000, -1.0000000,
580 0.0000000, 0.0000000, 0.0000000, 0.0000000,
581 0.0000000, 0.0000000, 0.0000000, 1.0000000,
582 0.0000000, 0.0000000, 1.0000000, -1.0000000,
583 0.0000000, 0.0000000, 1.0000000, 0.0000000,
584 0.0000000, 0.0000000, 1.0000000, 1.0000000,
585 0.0000000, 1.0000000, -1.0000000, -1.0000000,
586 0.0000000, 1.0000000, -1.0000000, 0.0000000,
587 0.0000000, 1.0000000, -1.0000000, 1.0000000,
588 0.0000000, 1.0000000, 0.0000000, -1.0000000,
589 0.0000000, 1.0000000, 0.0000000, 0.0000000,
590 0.0000000, 1.0000000, 0.0000000, 1.0000000,
591 0.0000000, 1.0000000, 1.0000000, -1.0000000,
592 0.0000000, 1.0000000, 1.0000000, 0.0000000,
593 0.0000000, 1.0000000, 1.0000000, 1.0000000,
594 1.0000000, -1.0000000, -1.0000000, -1.0000000,
595 1.0000000, -1.0000000, -1.0000000, 0.0000000,
596 1.0000000, -1.0000000, -1.0000000, 1.0000000,
597 1.0000000, -1.0000000, 0.0000000, -1.0000000,
598 1.0000000, -1.0000000, 0.0000000, 0.0000000,
599 1.0000000, -1.0000000, 0.0000000, 1.0000000,
600 1.0000000, -1.0000000, 1.0000000, -1.0000000,
601 1.0000000, -1.0000000, 1.0000000, 0.0000000,
602 1.0000000, -1.0000000, 1.0000000, 1.0000000,
603 1.0000000, 0.0000000, -1.0000000, -1.0000000,
604 1.0000000, 0.0000000, -1.0000000, 0.0000000,
605 1.0000000, 0.0000000, -1.0000000, 1.0000000,
606 1.0000000, 0.0000000, 0.0000000, -1.0000000,
607 1.0000000, 0.0000000, 0.0000000, 0.0000000,
608 1.0000000, 0.0000000, 0.0000000, 1.0000000,
609 1.0000000, 0.0000000, 1.0000000, -1.0000000,
610 1.0000000, 0.0000000, 1.0000000, 0.0000000,
611 1.0000000, 0.0000000, 1.0000000, 1.0000000,
612 1.0000000, 1.0000000, -1.0000000, -1.0000000,
613 1.0000000, 1.0000000, -1.0000000, 0.0000000,
614 1.0000000, 1.0000000, -1.0000000, 1.0000000,
615 1.0000000, 1.0000000, 0.0000000, -1.0000000,
616 1.0000000, 1.0000000, 0.0000000, 0.0000000,
617 1.0000000, 1.0000000, 0.0000000, 1.0000000,
618 1.0000000, 1.0000000, 1.0000000, -1.0000000,
619 1.0000000, 1.0000000, 1.0000000, 0.0000000,
620 1.0000000, 1.0000000, 1.0000000, 1.0000000,
621 };
622
623 static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
624 0.0000000, 0.0000000, 0.0000000, 0.0000000,
625 0.0000000, 0.0000000, 0.0000000, 1.0000000,
626 0.0000000, 0.0000000, 0.0000000, 2.5198421,
627 0.0000000, 0.0000000, 1.0000000, 0.0000000,
628 0.0000000, 0.0000000, 1.0000000, 1.0000000,
629 0.0000000, 0.0000000, 1.0000000, 2.5198421,
630 0.0000000, 0.0000000, 2.5198421, 0.0000000,
631 0.0000000, 0.0000000, 2.5198421, 1.0000000,
632 0.0000000, 0.0000000, 2.5198421, 2.5198421,
633 0.0000000, 1.0000000, 0.0000000, 0.0000000,
634 0.0000000, 1.0000000, 0.0000000, 1.0000000,
635 0.0000000, 1.0000000, 0.0000000, 2.5198421,
636 0.0000000, 1.0000000, 1.0000000, 0.0000000,
637 0.0000000, 1.0000000, 1.0000000, 1.0000000,
638 0.0000000, 1.0000000, 1.0000000, 2.5198421,
639 0.0000000, 1.0000000, 2.5198421, 0.0000000,
640 0.0000000, 1.0000000, 2.5198421, 1.0000000,
641 0.0000000, 1.0000000, 2.5198421, 2.5198421,
642 0.0000000, 2.5198421, 0.0000000, 0.0000000,
643 0.0000000, 2.5198421, 0.0000000, 1.0000000,
644 0.0000000, 2.5198421, 0.0000000, 2.5198421,
645 0.0000000, 2.5198421, 1.0000000, 0.0000000,
646 0.0000000, 2.5198421, 1.0000000, 1.0000000,
647 0.0000000, 2.5198421, 1.0000000, 2.5198421,
648 0.0000000, 2.5198421, 2.5198421, 0.0000000,
649 0.0000000, 2.5198421, 2.5198421, 1.0000000,
650 0.0000000, 2.5198421, 2.5198421, 2.5198421,
651 1.0000000, 0.0000000, 0.0000000, 0.0000000,
652 1.0000000, 0.0000000, 0.0000000, 1.0000000,
653 1.0000000, 0.0000000, 0.0000000, 2.5198421,
654 1.0000000, 0.0000000, 1.0000000, 0.0000000,
655 1.0000000, 0.0000000, 1.0000000, 1.0000000,
656 1.0000000, 0.0000000, 1.0000000, 2.5198421,
657 1.0000000, 0.0000000, 2.5198421, 0.0000000,
658 1.0000000, 0.0000000, 2.5198421, 1.0000000,
659 1.0000000, 0.0000000, 2.5198421, 2.5198421,
660 1.0000000, 1.0000000, 0.0000000, 0.0000000,
661 1.0000000, 1.0000000, 0.0000000, 1.0000000,
662 1.0000000, 1.0000000, 0.0000000, 2.5198421,
663 1.0000000, 1.0000000, 1.0000000, 0.0000000,
664 1.0000000, 1.0000000, 1.0000000, 1.0000000,
665 1.0000000, 1.0000000, 1.0000000, 2.5198421,
666 1.0000000, 1.0000000, 2.5198421, 0.0000000,
667 1.0000000, 1.0000000, 2.5198421, 1.0000000,
668 1.0000000, 1.0000000, 2.5198421, 2.5198421,
669 1.0000000, 2.5198421, 0.0000000, 0.0000000,
670 1.0000000, 2.5198421, 0.0000000, 1.0000000,
671 1.0000000, 2.5198421, 0.0000000, 2.5198421,
672 1.0000000, 2.5198421, 1.0000000, 0.0000000,
673 1.0000000, 2.5198421, 1.0000000, 1.0000000,
674 1.0000000, 2.5198421, 1.0000000, 2.5198421,
675 1.0000000, 2.5198421, 2.5198421, 0.0000000,
676 1.0000000, 2.5198421, 2.5198421, 1.0000000,
677 1.0000000, 2.5198421, 2.5198421, 2.5198421,
678 2.5198421, 0.0000000, 0.0000000, 0.0000000,
679 2.5198421, 0.0000000, 0.0000000, 1.0000000,
680 2.5198421, 0.0000000, 0.0000000, 2.5198421,
681 2.5198421, 0.0000000, 1.0000000, 0.0000000,
682 2.5198421, 0.0000000, 1.0000000, 1.0000000,
683 2.5198421, 0.0000000, 1.0000000, 2.5198421,
684 2.5198421, 0.0000000, 2.5198421, 0.0000000,
685 2.5198421, 0.0000000, 2.5198421, 1.0000000,
686 2.5198421, 0.0000000, 2.5198421, 2.5198421,
687 2.5198421, 1.0000000, 0.0000000, 0.0000000,
688 2.5198421, 1.0000000, 0.0000000, 1.0000000,
689 2.5198421, 1.0000000, 0.0000000, 2.5198421,
690 2.5198421, 1.0000000, 1.0000000, 0.0000000,
691 2.5198421, 1.0000000, 1.0000000, 1.0000000,
692 2.5198421, 1.0000000, 1.0000000, 2.5198421,
693 2.5198421, 1.0000000, 2.5198421, 0.0000000,
694 2.5198421, 1.0000000, 2.5198421, 1.0000000,
695 2.5198421, 1.0000000, 2.5198421, 2.5198421,
696 2.5198421, 2.5198421, 0.0000000, 0.0000000,
697 2.5198421, 2.5198421, 0.0000000, 1.0000000,
698 2.5198421, 2.5198421, 0.0000000, 2.5198421,
699 2.5198421, 2.5198421, 1.0000000, 0.0000000,
700 2.5198421, 2.5198421, 1.0000000, 1.0000000,
701 2.5198421, 2.5198421, 1.0000000, 2.5198421,
702 2.5198421, 2.5198421, 2.5198421, 0.0000000,
703 2.5198421, 2.5198421, 2.5198421, 1.0000000,
704 2.5198421, 2.5198421, 2.5198421, 2.5198421,
705 };
706
707 static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
708 -6.3496042, -6.3496042, -6.3496042, -4.3267487,
709 -6.3496042, -2.5198421, -6.3496042, -1.0000000,
710 -6.3496042, 0.0000000, -6.3496042, 1.0000000,
711 -6.3496042, 2.5198421, -6.3496042, 4.3267487,
712 -6.3496042, 6.3496042, -4.3267487, -6.3496042,
713 -4.3267487, -4.3267487, -4.3267487, -2.5198421,
714 -4.3267487, -1.0000000, -4.3267487, 0.0000000,
715 -4.3267487, 1.0000000, -4.3267487, 2.5198421,
716 -4.3267487, 4.3267487, -4.3267487, 6.3496042,
717 -2.5198421, -6.3496042, -2.5198421, -4.3267487,
718 -2.5198421, -2.5198421, -2.5198421, -1.0000000,
719 -2.5198421, 0.0000000, -2.5198421, 1.0000000,
720 -2.5198421, 2.5198421, -2.5198421, 4.3267487,
721 -2.5198421, 6.3496042, -1.0000000, -6.3496042,
722 -1.0000000, -4.3267487, -1.0000000, -2.5198421,
723 -1.0000000, -1.0000000, -1.0000000, 0.0000000,
724 -1.0000000, 1.0000000, -1.0000000, 2.5198421,
725 -1.0000000, 4.3267487, -1.0000000, 6.3496042,
726 0.0000000, -6.3496042, 0.0000000, -4.3267487,
727 0.0000000, -2.5198421, 0.0000000, -1.0000000,
728 0.0000000, 0.0000000, 0.0000000, 1.0000000,
729 0.0000000, 2.5198421, 0.0000000, 4.3267487,
730 0.0000000, 6.3496042, 1.0000000, -6.3496042,
731 1.0000000, -4.3267487, 1.0000000, -2.5198421,
732 1.0000000, -1.0000000, 1.0000000, 0.0000000,
733 1.0000000, 1.0000000, 1.0000000, 2.5198421,
734 1.0000000, 4.3267487, 1.0000000, 6.3496042,
735 2.5198421, -6.3496042, 2.5198421, -4.3267487,
736 2.5198421, -2.5198421, 2.5198421, -1.0000000,
737 2.5198421, 0.0000000, 2.5198421, 1.0000000,
738 2.5198421, 2.5198421, 2.5198421, 4.3267487,
739 2.5198421, 6.3496042, 4.3267487, -6.3496042,
740 4.3267487, -4.3267487, 4.3267487, -2.5198421,
741 4.3267487, -1.0000000, 4.3267487, 0.0000000,
742 4.3267487, 1.0000000, 4.3267487, 2.5198421,
743 4.3267487, 4.3267487, 4.3267487, 6.3496042,
744 6.3496042, -6.3496042, 6.3496042, -4.3267487,
745 6.3496042, -2.5198421, 6.3496042, -1.0000000,
746 6.3496042, 0.0000000, 6.3496042, 1.0000000,
747 6.3496042, 2.5198421, 6.3496042, 4.3267487,
748 6.3496042, 6.3496042,
749 };
750
751 static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
752 0.0000000, 0.0000000, 0.0000000, 1.0000000,
753 0.0000000, 2.5198421, 0.0000000, 4.3267487,
754 0.0000000, 6.3496042, 0.0000000, 8.5498797,
755 0.0000000, 10.9027236, 0.0000000, 13.3905183,
756 1.0000000, 0.0000000, 1.0000000, 1.0000000,
757 1.0000000, 2.5198421, 1.0000000, 4.3267487,
758 1.0000000, 6.3496042, 1.0000000, 8.5498797,
759 1.0000000, 10.9027236, 1.0000000, 13.3905183,
760 2.5198421, 0.0000000, 2.5198421, 1.0000000,
761 2.5198421, 2.5198421, 2.5198421, 4.3267487,
762 2.5198421, 6.3496042, 2.5198421, 8.5498797,
763 2.5198421, 10.9027236, 2.5198421, 13.3905183,
764 4.3267487, 0.0000000, 4.3267487, 1.0000000,
765 4.3267487, 2.5198421, 4.3267487, 4.3267487,
766 4.3267487, 6.3496042, 4.3267487, 8.5498797,
767 4.3267487, 10.9027236, 4.3267487, 13.3905183,
768 6.3496042, 0.0000000, 6.3496042, 1.0000000,
769 6.3496042, 2.5198421, 6.3496042, 4.3267487,
770 6.3496042, 6.3496042, 6.3496042, 8.5498797,
771 6.3496042, 10.9027236, 6.3496042, 13.3905183,
772 8.5498797, 0.0000000, 8.5498797, 1.0000000,
773 8.5498797, 2.5198421, 8.5498797, 4.3267487,
774 8.5498797, 6.3496042, 8.5498797, 8.5498797,
775 8.5498797, 10.9027236, 8.5498797, 13.3905183,
776 10.9027236, 0.0000000, 10.9027236, 1.0000000,
777 10.9027236, 2.5198421, 10.9027236, 4.3267487,
778 10.9027236, 6.3496042, 10.9027236, 8.5498797,
779 10.9027236, 10.9027236, 10.9027236, 13.3905183,
780 13.3905183, 0.0000000, 13.3905183, 1.0000000,
781 13.3905183, 2.5198421, 13.3905183, 4.3267487,
782 13.3905183, 6.3496042, 13.3905183, 8.5498797,
783 13.3905183, 10.9027236, 13.3905183, 13.3905183,
784 };
785
786 static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
787 0.0000000, 0.0000000, 0.0000000, 1.0000000,
788 0.0000000, 2.5198421, 0.0000000, 4.3267487,
789 0.0000000, 6.3496042, 0.0000000, 8.5498797,
790 0.0000000, 10.9027236, 0.0000000, 13.3905183,
791 0.0000000, 16.0000000, 0.0000000, 18.7207544,
792 0.0000000, 21.5443469, 0.0000000, 24.4637810,
793 0.0000000, 27.4731418, 1.0000000, 0.0000000,
794 1.0000000, 1.0000000, 1.0000000, 2.5198421,
795 1.0000000, 4.3267487, 1.0000000, 6.3496042,
796 1.0000000, 8.5498797, 1.0000000, 10.9027236,
797 1.0000000, 13.3905183, 1.0000000, 16.0000000,
798 1.0000000, 18.7207544, 1.0000000, 21.5443469,
799 1.0000000, 24.4637810, 1.0000000, 27.4731418,
800 2.5198421, 0.0000000, 2.5198421, 1.0000000,
801 2.5198421, 2.5198421, 2.5198421, 4.3267487,
802 2.5198421, 6.3496042, 2.5198421, 8.5498797,
803 2.5198421, 10.9027236, 2.5198421, 13.3905183,
804 2.5198421, 16.0000000, 2.5198421, 18.7207544,
805 2.5198421, 21.5443469, 2.5198421, 24.4637810,
806 2.5198421, 27.4731418, 4.3267487, 0.0000000,
807 4.3267487, 1.0000000, 4.3267487, 2.5198421,
808 4.3267487, 4.3267487, 4.3267487, 6.3496042,
809 4.3267487, 8.5498797, 4.3267487, 10.9027236,
810 4.3267487, 13.3905183, 4.3267487, 16.0000000,
811 4.3267487, 18.7207544, 4.3267487, 21.5443469,
812 4.3267487, 24.4637810, 4.3267487, 27.4731418,
813 6.3496042, 0.0000000, 6.3496042, 1.0000000,
814 6.3496042, 2.5198421, 6.3496042, 4.3267487,
815 6.3496042, 6.3496042, 6.3496042, 8.5498797,
816 6.3496042, 10.9027236, 6.3496042, 13.3905183,
817 6.3496042, 16.0000000, 6.3496042, 18.7207544,
818 6.3496042, 21.5443469, 6.3496042, 24.4637810,
819 6.3496042, 27.4731418, 8.5498797, 0.0000000,
820 8.5498797, 1.0000000, 8.5498797, 2.5198421,
821 8.5498797, 4.3267487, 8.5498797, 6.3496042,
822 8.5498797, 8.5498797, 8.5498797, 10.9027236,
823 8.5498797, 13.3905183, 8.5498797, 16.0000000,
824 8.5498797, 18.7207544, 8.5498797, 21.5443469,
825 8.5498797, 24.4637810, 8.5498797, 27.4731418,
826 10.9027236, 0.0000000, 10.9027236, 1.0000000,
827 10.9027236, 2.5198421, 10.9027236, 4.3267487,
828 10.9027236, 6.3496042, 10.9027236, 8.5498797,
829 10.9027236, 10.9027236, 10.9027236, 13.3905183,
830 10.9027236, 16.0000000, 10.9027236, 18.7207544,
831 10.9027236, 21.5443469, 10.9027236, 24.4637810,
832 10.9027236, 27.4731418, 13.3905183, 0.0000000,
833 13.3905183, 1.0000000, 13.3905183, 2.5198421,
834 13.3905183, 4.3267487, 13.3905183, 6.3496042,
835 13.3905183, 8.5498797, 13.3905183, 10.9027236,
836 13.3905183, 13.3905183, 13.3905183, 16.0000000,
837 13.3905183, 18.7207544, 13.3905183, 21.5443469,
838 13.3905183, 24.4637810, 13.3905183, 27.4731418,
839 16.0000000, 0.0000000, 16.0000000, 1.0000000,
840 16.0000000, 2.5198421, 16.0000000, 4.3267487,
841 16.0000000, 6.3496042, 16.0000000, 8.5498797,
842 16.0000000, 10.9027236, 16.0000000, 13.3905183,
843 16.0000000, 16.0000000, 16.0000000, 18.7207544,
844 16.0000000, 21.5443469, 16.0000000, 24.4637810,
845 16.0000000, 27.4731418, 18.7207544, 0.0000000,
846 18.7207544, 1.0000000, 18.7207544, 2.5198421,
847 18.7207544, 4.3267487, 18.7207544, 6.3496042,
848 18.7207544, 8.5498797, 18.7207544, 10.9027236,
849 18.7207544, 13.3905183, 18.7207544, 16.0000000,
850 18.7207544, 18.7207544, 18.7207544, 21.5443469,
851 18.7207544, 24.4637810, 18.7207544, 27.4731418,
852 21.5443469, 0.0000000, 21.5443469, 1.0000000,
853 21.5443469, 2.5198421, 21.5443469, 4.3267487,
854 21.5443469, 6.3496042, 21.5443469, 8.5498797,
855 21.5443469, 10.9027236, 21.5443469, 13.3905183,
856 21.5443469, 16.0000000, 21.5443469, 18.7207544,
857 21.5443469, 21.5443469, 21.5443469, 24.4637810,
858 21.5443469, 27.4731418, 24.4637810, 0.0000000,
859 24.4637810, 1.0000000, 24.4637810, 2.5198421,
860 24.4637810, 4.3267487, 24.4637810, 6.3496042,
861 24.4637810, 8.5498797, 24.4637810, 10.9027236,
862 24.4637810, 13.3905183, 24.4637810, 16.0000000,
863 24.4637810, 18.7207544, 24.4637810, 21.5443469,
864 24.4637810, 24.4637810, 24.4637810, 27.4731418,
865 27.4731418, 0.0000000, 27.4731418, 1.0000000,
866 27.4731418, 2.5198421, 27.4731418, 4.3267487,
867 27.4731418, 6.3496042, 27.4731418, 8.5498797,
868 27.4731418, 10.9027236, 27.4731418, 13.3905183,
869 27.4731418, 16.0000000, 27.4731418, 18.7207544,
870 27.4731418, 21.5443469, 27.4731418, 24.4637810,
871 27.4731418, 27.4731418,
872 };
873
874 static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
875 0.0000000, 0.0000000, 0.0000000, 1.0000000,
876 0.0000000, 2.5198421, 0.0000000, 4.3267487,
877 0.0000000, 6.3496042, 0.0000000, 8.5498797,
878 0.0000000, 10.9027236, 0.0000000, 13.3905183,
879 0.0000000, 16.0000000, 0.0000000, 18.7207544,
880 0.0000000, 21.5443469, 0.0000000, 24.4637810,
881 0.0000000, 27.4731418, 0.0000000, 30.5673509,
882 0.0000000, 33.7419917, 0.0000000, 36.9931811,
883 0.0000000, 64.0f, 1.0000000, 0.0000000,
884 1.0000000, 1.0000000, 1.0000000, 2.5198421,
885 1.0000000, 4.3267487, 1.0000000, 6.3496042,
886 1.0000000, 8.5498797, 1.0000000, 10.9027236,
887 1.0000000, 13.3905183, 1.0000000, 16.0000000,
888 1.0000000, 18.7207544, 1.0000000, 21.5443469,
889 1.0000000, 24.4637810, 1.0000000, 27.4731418,
890 1.0000000, 30.5673509, 1.0000000, 33.7419917,
891 1.0000000, 36.9931811, 1.0000000, 64.0f,
892 2.5198421, 0.0000000, 2.5198421, 1.0000000,
893 2.5198421, 2.5198421, 2.5198421, 4.3267487,
894 2.5198421, 6.3496042, 2.5198421, 8.5498797,
895 2.5198421, 10.9027236, 2.5198421, 13.3905183,
896 2.5198421, 16.0000000, 2.5198421, 18.7207544,
897 2.5198421, 21.5443469, 2.5198421, 24.4637810,
898 2.5198421, 27.4731418, 2.5198421, 30.5673509,
899 2.5198421, 33.7419917, 2.5198421, 36.9931811,
900 2.5198421, 64.0f, 4.3267487, 0.0000000,
901 4.3267487, 1.0000000, 4.3267487, 2.5198421,
902 4.3267487, 4.3267487, 4.3267487, 6.3496042,
903 4.3267487, 8.5498797, 4.3267487, 10.9027236,
904 4.3267487, 13.3905183, 4.3267487, 16.0000000,
905 4.3267487, 18.7207544, 4.3267487, 21.5443469,
906 4.3267487, 24.4637810, 4.3267487, 27.4731418,
907 4.3267487, 30.5673509, 4.3267487, 33.7419917,
908 4.3267487, 36.9931811, 4.3267487, 64.0f,
909 6.3496042, 0.0000000, 6.3496042, 1.0000000,
910 6.3496042, 2.5198421, 6.3496042, 4.3267487,
911 6.3496042, 6.3496042, 6.3496042, 8.5498797,
912 6.3496042, 10.9027236, 6.3496042, 13.3905183,
913 6.3496042, 16.0000000, 6.3496042, 18.7207544,
914 6.3496042, 21.5443469, 6.3496042, 24.4637810,
915 6.3496042, 27.4731418, 6.3496042, 30.5673509,
916 6.3496042, 33.7419917, 6.3496042, 36.9931811,
917 6.3496042, 64.0f, 8.5498797, 0.0000000,
918 8.5498797, 1.0000000, 8.5498797, 2.5198421,
919 8.5498797, 4.3267487, 8.5498797, 6.3496042,
920 8.5498797, 8.5498797, 8.5498797, 10.9027236,
921 8.5498797, 13.3905183, 8.5498797, 16.0000000,
922 8.5498797, 18.7207544, 8.5498797, 21.5443469,
923 8.5498797, 24.4637810, 8.5498797, 27.4731418,
924 8.5498797, 30.5673509, 8.5498797, 33.7419917,
925 8.5498797, 36.9931811, 8.5498797, 64.0f,
926 10.9027236, 0.0000000, 10.9027236, 1.0000000,
927 10.9027236, 2.5198421, 10.9027236, 4.3267487,
928 10.9027236, 6.3496042, 10.9027236, 8.5498797,
929 10.9027236, 10.9027236, 10.9027236, 13.3905183,
930 10.9027236, 16.0000000, 10.9027236, 18.7207544,
931 10.9027236, 21.5443469, 10.9027236, 24.4637810,
932 10.9027236, 27.4731418, 10.9027236, 30.5673509,
933 10.9027236, 33.7419917, 10.9027236, 36.9931811,
934 10.9027236, 64.0f, 13.3905183, 0.0000000,
935 13.3905183, 1.0000000, 13.3905183, 2.5198421,
936 13.3905183, 4.3267487, 13.3905183, 6.3496042,
937 13.3905183, 8.5498797, 13.3905183, 10.9027236,
938 13.3905183, 13.3905183, 13.3905183, 16.0000000,
939 13.3905183, 18.7207544, 13.3905183, 21.5443469,
940 13.3905183, 24.4637810, 13.3905183, 27.4731418,
941 13.3905183, 30.5673509, 13.3905183, 33.7419917,
942 13.3905183, 36.9931811, 13.3905183, 64.0f,
943 16.0000000, 0.0000000, 16.0000000, 1.0000000,
944 16.0000000, 2.5198421, 16.0000000, 4.3267487,
945 16.0000000, 6.3496042, 16.0000000, 8.5498797,
946 16.0000000, 10.9027236, 16.0000000, 13.3905183,
947 16.0000000, 16.0000000, 16.0000000, 18.7207544,
948 16.0000000, 21.5443469, 16.0000000, 24.4637810,
949 16.0000000, 27.4731418, 16.0000000, 30.5673509,
950 16.0000000, 33.7419917, 16.0000000, 36.9931811,
951 16.0000000, 64.0f, 18.7207544, 0.0000000,
952 18.7207544, 1.0000000, 18.7207544, 2.5198421,
953 18.7207544, 4.3267487, 18.7207544, 6.3496042,
954 18.7207544, 8.5498797, 18.7207544, 10.9027236,
955 18.7207544, 13.3905183, 18.7207544, 16.0000000,
956 18.7207544, 18.7207544, 18.7207544, 21.5443469,
957 18.7207544, 24.4637810, 18.7207544, 27.4731418,
958 18.7207544, 30.5673509, 18.7207544, 33.7419917,
959 18.7207544, 36.9931811, 18.7207544, 64.0f,
960 21.5443469, 0.0000000, 21.5443469, 1.0000000,
961 21.5443469, 2.5198421, 21.5443469, 4.3267487,
962 21.5443469, 6.3496042, 21.5443469, 8.5498797,
963 21.5443469, 10.9027236, 21.5443469, 13.3905183,
964 21.5443469, 16.0000000, 21.5443469, 18.7207544,
965 21.5443469, 21.5443469, 21.5443469, 24.4637810,
966 21.5443469, 27.4731418, 21.5443469, 30.5673509,
967 21.5443469, 33.7419917, 21.5443469, 36.9931811,
968 21.5443469, 64.0f, 24.4637810, 0.0000000,
969 24.4637810, 1.0000000, 24.4637810, 2.5198421,
970 24.4637810, 4.3267487, 24.4637810, 6.3496042,
971 24.4637810, 8.5498797, 24.4637810, 10.9027236,
972 24.4637810, 13.3905183, 24.4637810, 16.0000000,
973 24.4637810, 18.7207544, 24.4637810, 21.5443469,
974 24.4637810, 24.4637810, 24.4637810, 27.4731418,
975 24.4637810, 30.5673509, 24.4637810, 33.7419917,
976 24.4637810, 36.9931811, 24.4637810, 64.0f,
977 27.4731418, 0.0000000, 27.4731418, 1.0000000,
978 27.4731418, 2.5198421, 27.4731418, 4.3267487,
979 27.4731418, 6.3496042, 27.4731418, 8.5498797,
980 27.4731418, 10.9027236, 27.4731418, 13.3905183,
981 27.4731418, 16.0000000, 27.4731418, 18.7207544,
982 27.4731418, 21.5443469, 27.4731418, 24.4637810,
983 27.4731418, 27.4731418, 27.4731418, 30.5673509,
984 27.4731418, 33.7419917, 27.4731418, 36.9931811,
985 27.4731418, 64.0f, 30.5673509, 0.0000000,
986 30.5673509, 1.0000000, 30.5673509, 2.5198421,
987 30.5673509, 4.3267487, 30.5673509, 6.3496042,
988 30.5673509, 8.5498797, 30.5673509, 10.9027236,
989 30.5673509, 13.3905183, 30.5673509, 16.0000000,
990 30.5673509, 18.7207544, 30.5673509, 21.5443469,
991 30.5673509, 24.4637810, 30.5673509, 27.4731418,
992 30.5673509, 30.5673509, 30.5673509, 33.7419917,
993 30.5673509, 36.9931811, 30.5673509, 64.0f,
994 33.7419917, 0.0000000, 33.7419917, 1.0000000,
995 33.7419917, 2.5198421, 33.7419917, 4.3267487,
996 33.7419917, 6.3496042, 33.7419917, 8.5498797,
997 33.7419917, 10.9027236, 33.7419917, 13.3905183,
998 33.7419917, 16.0000000, 33.7419917, 18.7207544,
999 33.7419917, 21.5443469, 33.7419917, 24.4637810,
1000 33.7419917, 27.4731418, 33.7419917, 30.5673509,
1001 33.7419917, 33.7419917, 33.7419917, 36.9931811,
1002 33.7419917, 64.0f, 36.9931811, 0.0000000,
1003 36.9931811, 1.0000000, 36.9931811, 2.5198421,
1004 36.9931811, 4.3267487, 36.9931811, 6.3496042,
1005 36.9931811, 8.5498797, 36.9931811, 10.9027236,
1006 36.9931811, 13.3905183, 36.9931811, 16.0000000,
1007 36.9931811, 18.7207544, 36.9931811, 21.5443469,
1008 36.9931811, 24.4637810, 36.9931811, 27.4731418,
1009 36.9931811, 30.5673509, 36.9931811, 33.7419917,
1010 36.9931811, 36.9931811, 36.9931811, 64.0f,
1011 64.0f, 0.0000000, 64.0f, 1.0000000,
1012 64.0f, 2.5198421, 64.0f, 4.3267487,
1013 64.0f, 6.3496042, 64.0f, 8.5498797,
1014 64.0f, 10.9027236, 64.0f, 13.3905183,
1015 64.0f, 16.0000000, 64.0f, 18.7207544,
1016 64.0f, 21.5443469, 64.0f, 24.4637810,
1017 64.0f, 27.4731418, 64.0f, 30.5673509,
1018 64.0f, 33.7419917, 64.0f, 36.9931811,
1019 64.0f, 64.0f,
1020 };
1021
1022 const float * const ff_aac_codebook_vectors[] = {
1023 codebook_vector0, codebook_vector0, codebook_vector2,
1024 codebook_vector2, codebook_vector4, codebook_vector4,
1025 codebook_vector6, codebook_vector6, codebook_vector8,
1026 codebook_vector8, codebook_vector10,
1027 };
1028
1029 static const float codebook_vector0_vals[] = {
1030 -1.0000000, 0.0000000, 1.0000000
1031 };
1032
1033 /*
1034 * bits 0:1, 2:3, 4:5, 6:7 index into _vals array
1035 * 8:11 number of non-zero values
1036 * 12:15 bit mask of non-zero values
1037 */
1038 static const uint16_t codebook_vector02_idx[] = {
1039 0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
1040 0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
1041 0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
1042 0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
1043 0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
1044 0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
1045 0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
1046 0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
1047 0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
1048 };
1049
1050 static const float codebook_vector4_vals[] = {
1051 -6.3496042, -4.3267487,
1052 -2.5198421, -1.0000000,
1053 0.0000000, 1.0000000,
1054 2.5198421, 4.3267487,
1055 6.3496042,
1056 };
1057
1058 /*
1059 * bits 0:3, 4:7 index into _vals array
1060 */
1061 static const uint16_t codebook_vector4_idx[] = {
1062 0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
1063 0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
1064 0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
1065 0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
1066 0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
1067 0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
1068 0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
1069 0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
1070 0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
1071 };
1072
1073 /*
1074 * bits 0:3, 4:7 index into _vals array
1075 * 8:11 number of non-zero values
1076 * 12:15 1: only second value non-zero
1077 * 0: other cases
1078 */
1079 static const uint16_t codebook_vector6_idx[] = {
1080 0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
1081 0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
1082 0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
1083 0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
1084 0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
1085 0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
1086 0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
1087 0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
1088 };
1089
1090 /*
1091 * bits 0:3, 4:7 index into _vals array
1092 * 8:11 number of non-zero values
1093 * 12:15 1: only second value non-zero
1094 * 0: other cases
1095 */
1096 static const uint16_t codebook_vector8_idx[] = {
1097 0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
1098 0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
1099 0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
1100 0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
1101 0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
1102 0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
1103 0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
1104 0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
1105 0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
1106 0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
1107 0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
1108 0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
1109 0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
1110 0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
1111 0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
1112 0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
1113 0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
1114 0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
1115 0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
1116 0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
1117 0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
1118 0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
1119 0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
1120 0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
1121 0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
1122 0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
1123 };
1124
1125 static const float codebook_vector10_vals[] = {
1126 0.0000000, 1.0000000,
1127 2.5198421, 4.3267487,
1128 6.3496042, 8.5498797,
1129 10.9027236, 13.3905183,
1130 16.0000000, 18.7207544,
1131 21.5443469, 24.4637810,
1132 27.4731418, 30.5673509,
1133 33.7419917, 36.9931811,
1134 };
1135
1136 /*
1137 * bits 0:3, 4:7 index into _vals array
1138 * 8:9 bit mask of escape-coded entries
1139 * 12:15 number of non-zero values
1140 */
1141 static const uint16_t codebook_vector10_idx[] = {
1142 0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
1143 0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
1144 0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
1145 0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
1146 0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
1147 0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
1148 0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
1149 0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
1150 0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
1151 0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
1152 0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
1153 0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
1154 0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
1155 0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
1156 0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
1157 0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
1158 0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
1159 0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
1160 0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
1161 0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
1162 0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
1163 0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
1164 0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
1165 0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
1166 0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
1167 0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
1168 0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
1169 0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
1170 0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
1171 0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
1172 0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
1173 0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
1174 0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
1175 0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
1176 };
1177
1178 const float *const ff_aac_codebook_vector_vals[] = {
1179 codebook_vector0_vals, codebook_vector0_vals,
1180 codebook_vector10_vals, codebook_vector10_vals,
1181 codebook_vector4_vals, codebook_vector4_vals,
1182 codebook_vector10_vals, codebook_vector10_vals,
1183 codebook_vector10_vals, codebook_vector10_vals,
1184 codebook_vector10_vals,
1185 };
1186
1187 const uint16_t *const ff_aac_codebook_vector_idx[] = {
1188 codebook_vector02_idx, codebook_vector02_idx,
1189 codebook_vector02_idx, codebook_vector02_idx,
1190 codebook_vector4_idx, codebook_vector4_idx,
1191 codebook_vector6_idx, codebook_vector6_idx,
1192 codebook_vector8_idx, codebook_vector8_idx,
1193 codebook_vector10_idx,
1194 };
1195
1196 /* @name swb_offsets
1197 * Sample offset into the window indicating the beginning of a scalefactor
1198 * window band
1199 *
1200 * scalefactor window band - term for scalefactor bands within a window,
1201 * given in Table 4.110 to Table 4.128.
1202 *
1203 * scalefactor band - a set of spectral coefficients which are scaled by one
1204 * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
1205 * may contain several scalefactor window bands of corresponding frequency. For
1206 * all other window_sequences scalefactor bands and scalefactor window bands are
1207 * identical.
1208 * @{
1209 */
1210
1211 static const uint16_t swb_offset_1024_96[] = {
1212 0, 4, 8, 12, 16, 20, 24, 28,
1213 32, 36, 40, 44, 48, 52, 56, 64,
1214 72, 80, 88, 96, 108, 120, 132, 144,
1215 156, 172, 188, 212, 240, 276, 320, 384,
1216 448, 512, 576, 640, 704, 768, 832, 896,
1217 960, 1024
1218 };
1219
1220 static const uint16_t swb_offset_128_96[] = {
1221 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1222 };
1223
1224 static const uint16_t swb_offset_1024_64[] = {
1225 0, 4, 8, 12, 16, 20, 24, 28,
1226 32, 36, 40, 44, 48, 52, 56, 64,
1227 72, 80, 88, 100, 112, 124, 140, 156,
1228 172, 192, 216, 240, 268, 304, 344, 384,
1229 424, 464, 504, 544, 584, 624, 664, 704,
1230 744, 784, 824, 864, 904, 944, 984, 1024
1231 };
1232
1233 static const uint16_t swb_offset_1024_48[] = {
1234 0, 4, 8, 12, 16, 20, 24, 28,
1235 32, 36, 40, 48, 56, 64, 72, 80,
1236 88, 96, 108, 120, 132, 144, 160, 176,
1237 196, 216, 240, 264, 292, 320, 352, 384,
1238 416, 448, 480, 512, 544, 576, 608, 640,
1239 672, 704, 736, 768, 800, 832, 864, 896,
1240 928, 1024
1241 };
1242
1243 static const uint16_t swb_offset_512_48[] = {
1244 0, 4, 8, 12, 16, 20, 24, 28,
1245 32, 36, 40, 44, 48, 52, 56, 60,
1246 68, 76, 84, 92, 100, 112, 124, 136,
1247 148, 164, 184, 208, 236, 268, 300, 332,
1248 364, 396, 428, 460, 512
1249 };
1250
1251 static const uint16_t swb_offset_480_48[] = {
1252 0, 4, 8, 12, 16, 20, 24, 28,
1253 32, 36, 40, 44, 48, 52, 56, 64,
1254 72, 80, 88, 96, 108, 120, 132, 144,
1255 156, 172, 188, 212, 240, 272, 304, 336,
1256 368, 400, 432, 480
1257 };
1258
1259 static const uint16_t swb_offset_128_48[] = {
1260 0, 4, 8, 12, 16, 20, 28, 36,
1261 44, 56, 68, 80, 96, 112, 128
1262 };
1263
1264 static const uint16_t swb_offset_1024_32[] = {
1265 0, 4, 8, 12, 16, 20, 24, 28,
1266 32, 36, 40, 48, 56, 64, 72, 80,
1267 88, 96, 108, 120, 132, 144, 160, 176,
1268 196, 216, 240, 264, 292, 320, 352, 384,
1269 416, 448, 480, 512, 544, 576, 608, 640,
1270 672, 704, 736, 768, 800, 832, 864, 896,
1271 928, 960, 992, 1024
1272 };
1273
1274 static const uint16_t swb_offset_512_32[] = {
1275 0, 4, 8, 12, 16, 20, 24, 28,
1276 32, 36, 40, 44, 48, 52, 56, 64,
1277 72, 80, 88, 96, 108, 120, 132, 144,
1278 160, 176, 192, 212, 236, 260, 288, 320,
1279 352, 384, 416, 448, 480, 512
1280 };
1281
1282 static const uint16_t swb_offset_480_32[] = {
1283 0, 4, 8, 12, 16, 20, 24, 28,
1284 32, 36, 40, 44, 48, 52, 56, 60,
1285 64, 72, 80, 88, 96, 104, 112, 124,
1286 136, 148, 164, 180, 200, 224, 256, 288,
1287 320, 352, 384, 416, 448, 480
1288 };
1289
1290 static const uint16_t swb_offset_1024_24[] = {
1291 0, 4, 8, 12, 16, 20, 24, 28,
1292 32, 36, 40, 44, 52, 60, 68, 76,
1293 84, 92, 100, 108, 116, 124, 136, 148,
1294 160, 172, 188, 204, 220, 240, 260, 284,
1295 308, 336, 364, 396, 432, 468, 508, 552,
1296 600, 652, 704, 768, 832, 896, 960, 1024
1297 };
1298
1299 static const uint16_t swb_offset_512_24[] = {
1300 0, 4, 8, 12, 16, 20, 24, 28,
1301 32, 36, 40, 44, 52, 60, 68, 80,
1302 92, 104, 120, 140, 164, 192, 224, 256,
1303 288, 320, 352, 384, 416, 448, 480, 512,
1304 };
1305
1306 static const uint16_t swb_offset_480_24[] = {
1307 0, 4, 8, 12, 16, 20, 24, 28,
1308 32, 36, 40, 44, 52, 60, 68, 80,
1309 92, 104, 120, 140, 164, 192, 224, 256,
1310 288, 320, 352, 384, 416, 448, 480
1311 };
1312
1313 static const uint16_t swb_offset_128_24[] = {
1314 0, 4, 8, 12, 16, 20, 24, 28,
1315 36, 44, 52, 64, 76, 92, 108, 128
1316 };
1317
1318 static const uint16_t swb_offset_1024_16[] = {
1319 0, 8, 16, 24, 32, 40, 48, 56,
1320 64, 72, 80, 88, 100, 112, 124, 136,
1321 148, 160, 172, 184, 196, 212, 228, 244,
1322 260, 280, 300, 320, 344, 368, 396, 424,
1323 456, 492, 532, 572, 616, 664, 716, 772,
1324 832, 896, 960, 1024
1325 };
1326
1327 static const uint16_t swb_offset_128_16[] = {
1328 0, 4, 8, 12, 16, 20, 24, 28,
1329 32, 40, 48, 60, 72, 88, 108, 128
1330 };
1331
1332 static const uint16_t swb_offset_1024_8[] = {
1333 0, 12, 24, 36, 48, 60, 72, 84,
1334 96, 108, 120, 132, 144, 156, 172, 188,
1335 204, 220, 236, 252, 268, 288, 308, 328,
1336 348, 372, 396, 420, 448, 476, 508, 544,
1337 580, 620, 664, 712, 764, 820, 880, 944,
1338 1024
1339 };
1340
1341 static const uint16_t swb_offset_128_8[] = {
1342 0, 4, 8, 12, 16, 20, 24, 28,
1343 36, 44, 52, 60, 72, 88, 108, 128
1344 };
1345
1346 static const uint16_t swb_offset_960_96[] =
1347 {
1348 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
1349 40, 44, 48, 52, 56, 64, 72, 80, 88, 96,
1350 108, 120, 132, 144, 156, 172, 188, 212, 240, 276,
1351 320, 384, 448, 512, 576, 640, 704, 768, 832, 896,
1352 960
1353 };
1354
1355 static const uint16_t swb_offset_960_64[] =
1356 {
1357 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
1358 40, 44, 48, 52, 56, 64, 72, 80, 88, 100,
1359 112, 124, 140, 156, 172, 192, 216, 240, 268, 304,
1360 344, 384, 424, 464, 504, 544, 584, 624, 664, 704,
1361 744, 784, 824, 864, 904, 944, 960
1362 };
1363
1364 static const uint16_t swb_offset_960_48[] =
1365 {
1366 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
1367 40, 48, 56, 64, 72, 80, 88, 96, 108, 120,
1368 132, 144, 160, 176, 196, 216, 240, 264, 292, 320,
1369 352, 384, 416, 448, 480, 512, 544, 576, 608, 640,
1370 672, 704, 736, 768, 800, 832, 864, 896, 928, 960
1371 };
1372
1373 #define swb_offset_960_32 swb_offset_960_48
1374
1375 static const uint16_t swb_offset_960_24[] =
1376 {
1377 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
1378 40, 44, 52, 60, 68, 76, 84, 92, 100, 108,
1379 116, 124, 136, 148, 160, 172, 188, 204, 220, 240,
1380 260, 284, 308, 336, 364, 396, 432, 468, 508, 552,
1381 600, 652, 704, 768, 832, 896, 960
1382 };
1383
1384 static const uint16_t swb_offset_960_16[] =
1385 {
1386 0, 8, 16, 24, 32, 40, 48, 56, 64, 72,
1387 80, 88, 100, 112, 124, 136, 148, 160, 172, 184,
1388 196, 212, 228, 244, 260, 280, 300, 320, 344, 368,
1389 396, 424, 456, 492, 532, 572, 616, 664, 716, 772,
1390 832, 896, 960
1391 };
1392
1393 static const uint16_t swb_offset_960_8[] =
1394 {
1395 0, 12, 24, 36, 48, 60, 72, 84, 96, 108,
1396 120, 132, 144, 156, 172, 188, 204, 220, 236, 252,
1397 268, 288, 308, 328, 348, 372, 396, 420, 448, 476,
1398 508, 544, 580, 620, 664, 712, 764, 820, 880, 944,
1399 960
1400 };
1401
1402
1403 static const uint16_t swb_offset_120_96[] =
1404 {
1405 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 120
1406 };
1407
1408 static const uint16_t swb_offset_120_64[] =
1409 {
1410 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 120
1411 };
1412
1413 static const uint16_t swb_offset_120_48[] =
1414 {
1415 0, 4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 120
1416 };
1417
1418 static const uint16_t swb_offset_120_24[] =
1419 {
1420 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 120
1421 };
1422
1423 static const uint16_t swb_offset_120_16[] =
1424 {
1425 0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 120
1426 };
1427
1428 static const uint16_t swb_offset_120_8[] =
1429 {
1430 0, 4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 120
1431 };
1432
1433 const uint16_t * const ff_swb_offset_1024[] = {
1434 swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
1435 swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
1436 swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
1437 swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
1438 swb_offset_1024_8
1439 };
1440
1441 const uint16_t * const ff_swb_offset_960[] = {
1442 swb_offset_960_96, swb_offset_960_96, swb_offset_960_64,
1443 swb_offset_960_48, swb_offset_960_48, swb_offset_960_32,
1444 swb_offset_960_24, swb_offset_960_24, swb_offset_960_16,
1445 swb_offset_960_16, swb_offset_960_16, swb_offset_960_8,
1446 swb_offset_960_8
1447 };
1448
1449 const uint16_t * const ff_swb_offset_512[] = {
1450 NULL, NULL, NULL,
1451 swb_offset_512_48, swb_offset_512_48, swb_offset_512_32,
1452 swb_offset_512_24, swb_offset_512_24, NULL,
1453 NULL, NULL, NULL,
1454 NULL
1455 };
1456
1457 const uint16_t * const ff_swb_offset_480[] = {
1458 NULL, NULL, NULL,
1459 swb_offset_480_48, swb_offset_480_48, swb_offset_480_32,
1460 swb_offset_480_24, swb_offset_480_24, NULL,
1461 NULL, NULL, NULL,
1462 NULL
1463 };
1464
1465 const uint16_t * const ff_swb_offset_128[] = {
1466 /* The last entry on the following row is swb_offset_128_64 but is a
1467 duplicate of swb_offset_128_96. */
1468 swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
1469 swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
1470 swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
1471 swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
1472 swb_offset_128_8
1473 };
1474
1475 const uint16_t * const ff_swb_offset_120[] = {
1476 swb_offset_120_96, swb_offset_120_96, swb_offset_120_96,
1477 swb_offset_120_48, swb_offset_120_48, swb_offset_120_48,
1478 swb_offset_120_24, swb_offset_120_24, swb_offset_120_16,
1479 swb_offset_120_16, swb_offset_120_16, swb_offset_120_8,
1480 swb_offset_120_8
1481 };
1482
1483 // @}
1484
1485 /* @name ff_tns_max_bands
1486 * The maximum number of scalefactor bands on which TNS can operate for the long
1487 * and short transforms respectively. The index to these tables is related to
1488 * the sample rate of the audio.
1489 * @{
1490 */
1491 const uint8_t ff_tns_max_bands_1024[] = {
1492 31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1493 };
1494
1495 const uint8_t ff_tns_max_bands_512[] = {
1496 0, 0, 0, 31, 32, 37, 31, 31, 0, 0, 0, 0, 0
1497 };
1498
1499 const uint8_t ff_tns_max_bands_480[] = {
1500 0, 0, 0, 31, 32, 37, 30, 30, 0, 0, 0, 0, 0
1501 };
1502
1503 const uint8_t ff_tns_max_bands_128[] = {
1504 9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1505 };
1506 // @}
1507
1508 const DECLARE_ALIGNED(32, float, ff_aac_eld_window_512)[1920] = {
1509 0.00338834, 0.00567745, 0.00847677, 0.01172641,
1510 0.01532555, 0.01917664, 0.02318809, 0.02729259,
1511 0.03144503, 0.03560261, 0.03972499, 0.04379783,
1512 0.04783094, 0.05183357, 0.05581342, 0.05977723,
1513 0.06373173, 0.06768364, 0.07163937, 0.07559976,
1514 0.07956096, 0.08352024, 0.08747623, 0.09143035,
1515 0.09538618, 0.09934771, 0.10331917, 0.10730456,
1516 0.11130697, 0.11532867, 0.11937133, 0.12343922,
1517 0.12753911, 0.13167705, 0.13585812, 0.14008529,
1518 0.14435986, 0.14868291, 0.15305531, 0.15747594,
1519 0.16194193, 0.16645070, 0.17099991, 0.17558633,
1520 0.18020600, 0.18485548, 0.18953191, 0.19423322,
1521 0.19895800, 0.20370512, 0.20847374, 0.21326312,
1522 0.21807244, 0.22290083, 0.22774742, 0.23261210,
1523 0.23749542, 0.24239767, 0.24731889, 0.25225887,
1524 0.25721719, 0.26219330, 0.26718648, 0.27219630,
1525 0.27722262, 0.28226514, 0.28732336, 0.29239628,
1526 0.29748247, 0.30258055, 0.30768914, 0.31280508,
1527 0.31792385, 0.32304172, 0.32815579, 0.33326397,
1528 0.33836470, 0.34345661, 0.34853868, 0.35361188,
1529 0.35867865, 0.36374072, 0.36879900, 0.37385347,
1530 0.37890349, 0.38394836, 0.38898730, 0.39401912,
1531 0.39904236, 0.40405575, 0.40905820, 0.41404819,
1532 0.41902398, 0.42398423, 0.42892805, 0.43385441,
1533 0.43876210, 0.44365014, 0.44851786, 0.45336632,
1534 0.45819759, 0.46301302, 0.46781309, 0.47259722,
1535 0.47736435, 0.48211365, 0.48684450, 0.49155594,
1536 0.49624679, 0.50091636, 0.50556440, 0.51019132,
1537 0.51479771, 0.51938391, 0.52394998, 0.52849587,
1538 0.53302151, 0.53752680, 0.54201160, 0.54647575,
1539 0.55091916, 0.55534181, 0.55974376, 0.56412513,
1540 0.56848615, 0.57282710, 0.57714834, 0.58145030,
1541 0.58492489, 0.58918511, 0.59342326, 0.59763936,
1542 0.60183347, 0.60600561, 0.61015581, 0.61428412,
1543 0.61839056, 0.62247517, 0.62653799, 0.63057912,
1544 0.63459872, 0.63859697, 0.64257403, 0.64653001,
1545 0.65046495, 0.65437887, 0.65827181, 0.66214383,
1546 0.66599499, 0.66982535, 0.67363499, 0.67742394,
1547 0.68119219, 0.68493972, 0.68866653, 0.69237258,
1548 0.69605778, 0.69972207, 0.70336537, 0.70698758,
1549 0.71058862, 0.71416837, 0.71772674, 0.72126361,
1550 0.72477889, 0.72827246, 0.73174419, 0.73519392,
1551 0.73862141, 0.74202643, 0.74540874, 0.74876817,
1552 0.75210458, 0.75541785, 0.75870785, 0.76197437,
1553 0.76521709, 0.76843570, 0.77162988, 0.77479939,
1554 0.77794403, 0.78106359, 0.78415789, 0.78722670,
1555 0.79026979, 0.79328694, 0.79627791, 0.79924244,
1556 0.80218027, 0.80509112, 0.80797472, 0.81083081,
1557 0.81365915, 0.81645949, 0.81923160, 0.82197528,
1558 0.82469037, 0.82737673, 0.83003419, 0.83266262,
1559 0.83526186, 0.83783176, 0.84037217, 0.84288297,
1560 0.84536401, 0.84781517, 0.85023632, 0.85262739,
1561 0.85498836, 0.85731921, 0.85961993, 0.86189052,
1562 0.86413101, 0.86634140, 0.86852173, 0.87067211,
1563 0.87279275, 0.87488384, 0.87694559, 0.87897824,
1564 0.88098206, 0.88295729, 0.88490423, 0.88682332,
1565 0.88871519, 0.89058048, 0.89241983, 0.89423391,
1566 0.89602338, 0.89778893, 0.89953126, 0.90125142,
1567 0.90295086, 0.90463104, 0.90629341, 0.90793946,
1568 0.90957067, 0.91118856, 0.91279464, 0.91439073,
1569 0.91597898, 0.91756153, 0.91914049, 0.92071690,
1570 0.92229070, 0.92386182, 0.92542993, 0.92698946,
1571 0.92852960, 0.93003929, 0.93150727, 0.93291739,
1572 0.93424863, 0.93547974, 0.93658982, 0.93756587,
1573 0.93894072, 0.93922780, 0.93955477, 0.93991290,
1574 0.94029104, 0.94067794, 0.94106258, 0.94144084,
1575 0.94181549, 0.94218963, 0.94256628, 0.94294662,
1576 0.94332998, 0.94371562, 0.94410280, 0.94449122,
1577 0.94488106, 0.94527249, 0.94566568, 0.94606074,
1578 0.94645772, 0.94685665, 0.94725759, 0.94766054,
1579 0.94806547, 0.94847234, 0.94888115, 0.94929190,
1580 0.94970469, 0.95011960, 0.95053672, 0.95095604,
1581 0.95137751, 0.95180105, 0.95222658, 0.95265413,
1582 0.95308380, 0.95351571, 0.95394994, 0.95438653,
1583 0.95482538, 0.95526643, 0.95570958, 0.95615486,
1584 0.95660234, 0.95705214, 0.95750433, 0.95795892,
1585 0.95841582, 0.95887493, 0.95933616, 0.95979949,
1586 0.96026500, 0.96073277, 0.96120286, 0.96167526,
1587 0.96214986, 0.96262655, 0.96310522, 0.96358586,
1588 0.96406853, 0.96455330, 0.96504026, 0.96552936,
1589 0.96602051, 0.96651360, 0.96700850, 0.96750520,
1590 0.96800376, 0.96850424, 0.96900670, 0.96951112,
1591 0.97001738, 0.97052533, 0.97103488, 0.97154597,
1592 0.97205867, 0.97257304, 0.97308915, 0.97360694,
1593 0.97412631, 0.97464711, 0.97516923, 0.97569262,
1594 0.97621735, 0.97674350, 0.97727111, 0.97780016,
1595 0.97833051, 0.97886205, 0.97939463, 0.97992823,
1596 0.98046291, 0.98099875, 0.98153580, 0.98207405,
1597 0.98261337, 0.98315364, 0.98369474, 0.98423664,
1598 0.98477941, 0.98532311, 0.98586780, 0.98641348,
1599 0.98696003, 0.98750734, 0.98805530, 0.98860389,
1600 0.98915320, 0.98970328, 0.99025423, 0.99080602,
1601 0.99135855, 0.99191171, 0.99246541, 0.99301962,
1602 0.99357443, 0.99412992, 0.99468617, 0.99524320,
1603 0.99580092, 0.99635926, 0.99691814, 0.99747748,
1604 0.99803721, 0.99859725, 0.99915752, 0.99971793,
1605 1.00028215, 1.00084319, 1.00140472, 1.00196665,
1606 1.00252889, 1.00309139, 1.00365404, 1.00421679,
1607 1.00477954, 1.00534221, 1.00590474, 1.00646713,
1608 1.00702945, 1.00759179, 1.00815424, 1.00871678,
1609 1.00927930, 1.00984169, 1.01040384, 1.01096575,
1610 1.01152747, 1.01208910, 1.01265070, 1.01321226,
1611 1.01377365, 1.01433478, 1.01489551, 1.01545584,
1612 1.01601582, 1.01657553, 1.01713502, 1.01769427,
1613 1.01825316, 1.01881154, 1.01936929, 1.01992639,
1614 1.02048289, 1.02103888, 1.02159441, 1.02214945,
1615 1.02270387, 1.02325751, 1.02381025, 1.02436204,
1616 1.02491295, 1.02546304, 1.02601238, 1.02656092,
1617 1.02710853, 1.02765508, 1.02820041, 1.02874449,
1618 1.02928737, 1.02982913, 1.03036981, 1.03090937,
1619 1.03144768, 1.03198460, 1.03252000, 1.03305384,
1620 1.03358617, 1.03411707, 1.03464659, 1.03517470,
1621 1.03570128, 1.03622620, 1.03674934, 1.03727066,
1622 1.03779024, 1.03830815, 1.03882446, 1.03933914,
1623 1.03985206, 1.04036312, 1.04087217, 1.04137920,
1624 1.04188428, 1.04238748, 1.04288888, 1.04338845,
1625 1.04388610, 1.04438170, 1.04487515, 1.04536645,
1626 1.04585569, 1.04634297, 1.04682838, 1.04731192,
1627 1.04779350, 1.04827303, 1.04875042, 1.04922568,
1628 1.04969891, 1.05017022, 1.05063974, 1.05110746,
1629 1.05157332, 1.05203721, 1.05249907, 1.05295889,
1630 1.05341676, 1.05387277, 1.05432700, 1.05477948,
1631 1.05523018, 1.05567906, 1.05612608, 1.05657124,
1632 1.05701459, 1.05745616, 1.05789601, 1.05833426,
1633 1.05877109, 1.05920669, 1.05964125, 1.06007444,
1634 1.06050542, 1.06093335, 1.06135746, 1.06177909,
1635 1.06220164, 1.06262858, 1.06306309, 1.06350050,
1636 1.06392837, 1.06433391, 1.06470443, 1.06502996,
1637 1.06481076, 1.06469765, 1.06445004, 1.06408002,
1638 1.06361382, 1.06307719, 1.06249453, 1.06188365,
1639 1.06125612, 1.06062291, 1.05999418, 1.05937132,
1640 1.05874726, 1.05811486, 1.05746728, 1.05680000,
1641 1.05611070, 1.05539715, 1.05465735, 1.05389329,
1642 1.05311083, 1.05231578, 1.05151372, 1.05070811,
1643 1.04990044, 1.04909210, 1.04828434, 1.04747647,
1644 1.04666590, 1.04585003, 1.04502628, 1.04419009,
1645 1.04333499, 1.04245452, 1.04154244, 1.04059452,
1646 1.03960846, 1.03858207, 1.03751326, 1.03640189,
1647 1.03524976, 1.03405868, 1.03283047, 1.03156812,
1648 1.03027574, 1.02895743, 1.02761717, 1.02625804,
1649 1.02488222, 1.02349184, 1.02208892, 1.02067450,
1650 1.01924861, 1.01781123, 1.01636229, 1.01490045,
1651 1.01342315, 1.01192778, 1.01041175, 1.00887284,
1652 1.00730915, 1.00571882, 1.00409996, 1.00245032,
1653 1.00076734, 0.99904842, 0.99729101, 0.99549380,
1654 0.99365664, 0.99177946, 0.98986234, 0.98791024,
1655 0.98593294, 0.98394037, 0.98194226, 0.97994532,
1656 0.97795324, 0.97596955, 0.97399748, 0.97203326,
1657 0.97006624, 0.96808546, 0.96608018, 0.96404416,
1658 0.96197556, 0.95987276, 0.95773420, 0.95556018,
1659 0.95335291, 0.95111462, 0.94884764, 0.94655663,
1660 0.94424858, 0.94193055, 0.93960953, 0.93729154,
1661 0.93498157, 0.93268456, 0.93040503, 0.92813771,
1662 0.92586755, 0.92357910, 0.92125731, 0.91889642,
1663 0.91649998, 0.91407191, 0.91161623, 0.90913975,
1664 0.90665202, 0.90416271, 0.90168115, 0.89920934,
1665 0.89674189, 0.89427312, 0.89179743, 0.88931147,
1666 0.88681415, 0.88430445, 0.88178141, 0.87924528,
1667 0.87669753, 0.87413966, 0.87157318, 0.86899958,
1668 0.86642037, 0.86383703, 0.86125106, 0.85866393,
1669 0.85604236, 0.85344385, 0.85083093, 0.84820550,
1670 0.84556943, 0.84292458, 0.84027278, 0.83761586,
1671 0.83495565, 0.83229393, 0.82963243, 0.82697135,
1672 0.82430933, 0.82164496, 0.81897669, 0.81630017,
1673 0.81360822, 0.81089355, 0.80814924, 0.80537741,
1674 0.80258920, 0.79979611, 0.79700954, 0.79423813,
1675 0.79148780, 0.78876432, 0.78607290, 0.78340590,
1676 0.78074288, 0.77806279, 0.77534514, 0.77258187,
1677 0.76977737, 0.76693654, 0.76406441, 0.76116851,
1678 0.75825892, 0.75534582, 0.75243924, 0.74954634,
1679 0.74667135, 0.74381840, 0.74099145, 0.73819147,
1680 0.73541641, 0.73266408, 0.72993193, 0.72720913,
1681 0.72447661, 0.72171494, 0.71890515, 0.71603932,
1682 0.71312056, 0.71015250, 0.70713900, 0.70409084,
1683 0.70102565, 0.69796137, 0.69491556, 0.69189772,
1684 0.68890931, 0.68595141, 0.68302498, 0.68012852,
1685 0.67725801, 0.67440936, 0.67157841, 0.66876081,
1686 0.66595195, 0.66314722, 0.66034194, 0.65753027,
1687 0.65470525, 0.65185984, 0.64898709, 0.64608214,
1688 0.64314221, 0.64016460, 0.63714680, 0.63409034,
1689 0.63100082, 0.62788400, 0.62474577, 0.62159473,
1690 0.61844225, 0.61529977, 0.61217866, 0.60908811,
1691 0.60603510, 0.60302654, 0.60006916, 0.59716588,
1692 0.59431580, 0.59151787, 0.58877068, 0.58606495,
1693 0.58338353, 0.58070891, 0.57802356, 0.57530864,
1694 0.57254404, 0.56970958, 0.56678577, 0.56376860,
1695 0.56066951, 0.55750064, 0.55427451, 0.55101301,
1696 0.54774732, 0.54450907, 0.54132936, 0.53822744,
1697 0.53521072, 0.53228613, 0.52945979, 0.52671997,
1698 0.52403708, 0.52138072, 0.51872085, 0.51603570,
1699 0.51331170, 0.51053560, 0.50769466, 0.50478931,
1700 0.50183308, 0.49884001, 0.49582406, 0.49279905,
1701 0.48985748, 0.48679641, 0.48379429, 0.48085363,
1702 0.47796576, 0.47512151, 0.47231151, 0.46952402,
1703 0.46674486, 0.46395978, 0.46115496, 0.45832607,
1704 0.45547830, 0.45261727, 0.44974866, 0.44688011,
1705 0.44402125, 0.44118178, 0.43837094, 0.43558772,
1706 0.43282082, 0.43005847, 0.42728913, 0.42450572,
1707 0.42170567, 0.41888658, 0.41604633, 0.41318897,
1708 0.41032472, 0.40746405, 0.40461724, 0.40178943,
1709 0.39898066, 0.39619073, 0.39341940, 0.39066519,
1710 0.38792536, 0.38519713, 0.38247773, 0.37976476,
1711 0.37705620, 0.37435006, 0.37164438, 0.36893869,
1712 0.36623396, 0.36353124, 0.36083153, 0.35813533,
1713 0.35544262, 0.35275338, 0.35006755, 0.34738530,
1714 0.34470699, 0.34203296, 0.33936359, 0.33669922,
1715 0.33404027, 0.33138711, 0.32874013, 0.32609944,
1716 0.32346493, 0.32083645, 0.31821388, 0.31559703,
1717 0.31298573, 0.31037987, 0.30777941, 0.30518446,
1718 0.30259525, 0.30001202, 0.29743499, 0.29486428,
1719 0.29229989, 0.28974179, 0.28718997, 0.28464452,
1720 0.28210562, 0.27957346, 0.27704820, 0.27452992,
1721 0.27201854, 0.26951399, 0.26701622, 0.26452533,
1722 0.26204158, 0.25956526, 0.25709662, 0.25463583,
1723 0.25218294, 0.24973798, 0.24730100, 0.24487207,
1724 0.24245133, 0.24003893, 0.23763500, 0.23523959,
1725 0.23285262, 0.23047401, 0.22810369, 0.22574170,
1726 0.22338818, 0.22104329, 0.21870719, 0.21637986,
1727 0.21406117, 0.21175095, 0.20944904, 0.20715535,
1728 0.20486987, 0.20259261, 0.20032356, 0.19806259,
1729 0.19580944, 0.19356385, 0.19132556, 0.18909442,
1730 0.18687040, 0.18465350, 0.18244372, 0.18024164,
1731 0.17804841, 0.17586521, 0.17369322, 0.17153360,
1732 0.16938755, 0.16725622, 0.16514081, 0.16304247,
1733 0.16098974, 0.15896561, 0.15696026, 0.15497259,
1734 0.15300151, 0.15104590, 0.14910466, 0.14717666,
1735 0.14526081, 0.14335599, 0.14146111, 0.13957570,
1736 0.13769993, 0.13583399, 0.13397806, 0.13213229,
1737 0.13029682, 0.12847178, 0.12665729, 0.12485353,
1738 0.12306074, 0.12127916, 0.11950900, 0.11775043,
1739 0.11600347, 0.11426820, 0.11254464, 0.11083292,
1740 0.10913318, 0.10744559, 0.10577028, 0.10410733,
1741 0.10245672, 0.10081842, 0.09919240, 0.09757872,
1742 0.09597750, 0.09438884, 0.09281288, 0.09124964,
1743 0.08969907, 0.08816111, 0.08663570, 0.08512288,
1744 0.08362274, 0.08213540, 0.08066096, 0.07919944,
1745 0.07775076, 0.07631484, 0.07489161, 0.07348108,
1746 0.07208335, 0.07069851, 0.06932666, 0.06796781,
1747 0.06662187, 0.06528874, 0.06396833, 0.06266065,
1748 0.06136578, 0.06008380, 0.05881480, 0.05755876,
1749 0.05631557, 0.05508511, 0.05386728, 0.05266206,
1750 0.05146951, 0.05028971, 0.04912272, 0.04796855,
1751 0.04682709, 0.04569825, 0.04458194, 0.04347817,
1752 0.04238704, 0.04130868, 0.04024318, 0.03919056,
1753 0.03815071, 0.03712352, 0.03610890, 0.03510679,
1754 0.03411720, 0.03314013, 0.03217560, 0.03122343,
1755 0.03028332, 0.02935494, 0.02843799, 0.02753230,
1756 0.02663788, 0.02575472, 0.02488283, 0.02402232,
1757 0.02317341, 0.02233631, 0.02151124, 0.02069866,
1758 0.01989922, 0.01911359, 0.01834241, 0.01758563,
1759 0.01684248, 0.01611219, 0.01539397, 0.01468726,
1760 0.01399167, 0.01330687, 0.01263250, 0.01196871,
1761 0.01131609, 0.01067527, 0.01004684, 0.00943077,
1762 0.00882641, 0.00823307, 0.00765011, 0.00707735,
1763 0.00651513, 0.00596377, 0.00542364, 0.00489514,
1764 0.00437884, 0.00387530, 0.00338509, 0.00290795,
1765 0.00244282, 0.00198860, 0.00154417, 0.00110825,
1766 0.00067934, 0.00025589, -0.00016357, -0.00057897,
1767 -0.00098865, -0.00139089, -0.00178397, -0.00216547,
1768 -0.00253230, -0.00288133, -0.00320955, -0.00351626,
1769 -0.00380315, -0.00407198, -0.00432457, -0.00456373,
1770 -0.00479326, -0.00501699, -0.00523871, -0.00546066,
1771 -0.00568360, -0.00590821, -0.00613508, -0.00636311,
1772 -0.00658944, -0.00681117, -0.00702540, -0.00722982,
1773 -0.00742268, -0.00760226, -0.00776687, -0.00791580,
1774 -0.00804933, -0.00816774, -0.00827139, -0.00836122,
1775 -0.00843882, -0.00850583, -0.00856383, -0.00861430,
1776 -0.00865853, -0.00869781, -0.00873344, -0.00876633,
1777 -0.00879707, -0.00882622, -0.00885433, -0.00888132,
1778 -0.00890652, -0.00892925, -0.00894881, -0.00896446,
1779 -0.00897541, -0.00898088, -0.00898010, -0.00897234,
1780 -0.00895696, -0.00893330, -0.00890076, -0.00885914,
1781 -0.00880875, -0.00874987, -0.00868282, -0.00860825,
1782 -0.00852716, -0.00844055, -0.00834941, -0.00825485,
1783 -0.00815807, -0.00806025, -0.00796253, -0.00786519,
1784 -0.00776767, -0.00766937, -0.00756971, -0.00746790,
1785 -0.00736305, -0.00725422, -0.00714055, -0.00702161,
1786 -0.00689746, -0.00676816, -0.00663381, -0.00649489,
1787 -0.00635230, -0.00620694, -0.00605969, -0.00591116,
1788 -0.00576167, -0.00561155, -0.00546110, -0.00531037,
1789 -0.00515917, -0.00500732, -0.00485462, -0.00470075,
1790 -0.00454530, -0.00438786, -0.00422805, -0.00406594,
1791 -0.00390204, -0.00373686, -0.00357091, -0.00340448,
1792 -0.00323770, -0.00307066, -0.00290344, -0.00273610,
1793 -0.00256867, -0.00240117, -0.00223365, -0.00206614,
1794 -0.00189866, -0.00173123, -0.00156390, -0.00139674,
1795 -0.00122989, -0.00106351, -0.00089772, -0.00073267,
1796 -0.00056849, -0.00040530, -0.00024324, -0.00008241,
1797 0.00008214, 0.00024102, 0.00039922, 0.00055660,
1798 0.00071299, 0.00086826, 0.00102224, 0.00117480,
1799 0.00132579, 0.00147507, 0.00162252, 0.00176804,
1800 0.00191161, 0.00205319, 0.00219277, 0.00233029,
1801 0.00246567, 0.00259886, 0.00272975, 0.00285832,
1802 0.00298453, 0.00310839, 0.00322990, 0.00334886,
1803 0.00346494, 0.00357778,