FFmpeg coverage


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