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 "libavutil/mem.h"
31#include "aac.h"
32
33#include <stdint.h>
34
35DECLARE_ALIGNED(16, float,  ff_aac_kbd_long_1024)[1024];
36DECLARE_ALIGNED(16, float,  ff_aac_kbd_short_128)[128];
37
38const uint8_t ff_aac_num_swb_1024[] = {
39    41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
40};
41
42const uint8_t ff_aac_num_swb_128[] = {
43    12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
44};
45
46const uint8_t ff_aac_pred_sfb_max[] = {
47    33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
48};
49
50const uint32_t ff_aac_scalefactor_code[121] = {
51    0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
52    0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
53    0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
54    0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
55    0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
56    0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
57    0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
58    0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
59    0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
60    0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
61    0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
62    0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
63    0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
64    0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
65    0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
66    0x7fff3,
67};
68
69const uint8_t ff_aac_scalefactor_bits[121] = {
70    18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
71    19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
72    14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
73    10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
74     6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
75    12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
76    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
77    19, 19, 19, 19, 19, 19, 19, 19, 19,
78};
79
80static const uint16_t codes1[81] = {
81    0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
82    0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
83    0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
84    0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
85    0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
86    0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
87    0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
88    0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
89    0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
90    0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
91    0x7f4,
92};
93
94static const uint8_t bits1[81] = {
95    11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
96     7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
97     7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
98     7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
99     7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
100    11,
101};
102
103static const uint16_t codes2[81] = {
104    0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
105    0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
106    0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
107    0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
108    0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
109    0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
110    0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
111    0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
112    0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
113    0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
114    0x1f6,
115};
116
117static const uint8_t bits2[81] = {
118    9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
119    6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
120    6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
121    6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
122    6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
123    9,
124};
125
126static const uint16_t codes3[81] = {
127    0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
128    0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
129    0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
130    0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
131    0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
132    0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
133    0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
134    0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
135    0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
136    0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
137    0x7ffa,
138};
139
140static const uint8_t bits3[81] = {
141     1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
142     9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
143    10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
144     8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
145    10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
146    15,
147};
148
149static const uint16_t codes4[81] = {
150    0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
151    0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
152    0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
153    0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
154    0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
155    0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
156    0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
157    0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
158    0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
159    0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
160    0x7fc,
161};
162
163static const uint8_t bits4[81] = {
164     4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
165     7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
166     8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
167     7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
168     7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
169    11,
170};
171
172static const uint16_t codes5[81] = {
173    0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
174    0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
175    0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
176    0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
177    0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
178    0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
179    0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
180    0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
181    0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
182    0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
183    0x1ffe,
184};
185
186static const uint8_t bits5[81] = {
187    13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
188    11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
189     5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
190     5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
191    11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
192    13,
193};
194
195static const uint16_t codes6[81] = {
196    0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
197    0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
198    0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
199    0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
200    0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
201    0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
202    0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
203    0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
204    0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
205    0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
206    0x7fc,
207};
208
209static const uint8_t bits6[81] = {
210    11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
211     9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
212     4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
213     4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
214     9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
215    11,
216};
217
218static const uint16_t codes7[64] = {
219    0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
220    0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
221    0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
222    0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
223    0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
224    0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
225    0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
226    0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
227};
228
229static const uint8_t bits7[64] = {
230     1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
231     6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
232     8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
233    10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
234};
235
236static const uint16_t codes8[64] = {
237    0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
238    0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
239    0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
240    0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
241    0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
242    0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
243    0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
244    0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
245};
246
247static const uint8_t bits8[64] = {
248     5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
249     5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
250     7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
251     9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
252};
253
254static const uint16_t codes9[169] = {
255    0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
256    0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
257    0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
258    0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
259    0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
260    0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
261    0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
262    0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
263    0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
264    0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
265    0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
266    0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
267    0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
268    0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
269    0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
270    0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
271    0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
272    0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
273    0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
274    0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
275    0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
276    0x7fff,
277};
278
279static const uint8_t bits9[169] = {
280     1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
281     7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
282    10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
283    11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
284    13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
285    10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
286    12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
287    13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
288    14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
289    11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
290    13, 13, 13, 13, 14, 14, 14, 14, 15,
291};
292
293static const uint16_t codes10[169] = {
294    0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
295    0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
296    0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
297    0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
298    0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
299    0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
300    0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
301    0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
302    0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
303    0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
304    0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
305    0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
306    0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
307    0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
308    0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
309    0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
310    0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
311    0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
312    0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
313    0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
314    0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
315    0xfff,
316};
317
318static const uint8_t bits10[169] = {
319     6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
320     5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
321     7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
322     9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
323    10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
324     7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
325     8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
326    10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
327    11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
328    10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
329    10, 10, 10, 11, 11, 12, 12, 12, 12,
330};
331
332static const uint16_t codes11[289] = {
333    0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
334    0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
335    0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
336    0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
337    0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
338    0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
339    0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
340    0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
341    0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
342    0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
343    0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
344    0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
345    0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
346    0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
347    0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
348    0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
349    0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
350    0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
351    0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
352    0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
353    0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
354    0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
355    0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
356    0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
357    0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
358    0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
359    0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
360    0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
361    0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
362    0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
363    0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
364    0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
365    0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
366    0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
367    0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
368    0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
369    0x004,
370};
371
372static const uint8_t bits11[289] = {
373     4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
374    10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
375    11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
376    10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
377    10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
378    10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
379     9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
380     9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
381     9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
382     9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
383     9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
384     9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
385     9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
386    10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
387     9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
388    10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
389    10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
390     9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
391     5,
392};
393
394const uint16_t * const ff_aac_spectral_codes[11] = {
395    codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
396    codes9, codes10, codes11,
397};
398
399const uint8_t * const ff_aac_spectral_bits[11] = {
400    bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
401    bits9, bits10, bits11,
402};
403
404const uint16_t ff_aac_spectral_sizes[11] = {
405    81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
406};
407
408/* NOTE:
409 * 64.0f is a special value indicating the existence of an escape code in the
410 * bitstream.
411 */
412static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
413 -1.0000000, -1.0000000, -1.0000000, -1.0000000,
414 -1.0000000, -1.0000000, -1.0000000,  0.0000000,
415 -1.0000000, -1.0000000, -1.0000000,  1.0000000,
416 -1.0000000, -1.0000000,  0.0000000, -1.0000000,
417 -1.0000000, -1.0000000,  0.0000000,  0.0000000,
418 -1.0000000, -1.0000000,  0.0000000,  1.0000000,
419 -1.0000000, -1.0000000,  1.0000000, -1.0000000,
420 -1.0000000, -1.0000000,  1.0000000,  0.0000000,
421 -1.0000000, -1.0000000,  1.0000000,  1.0000000,
422 -1.0000000,  0.0000000, -1.0000000, -1.0000000,
423 -1.0000000,  0.0000000, -1.0000000,  0.0000000,
424 -1.0000000,  0.0000000, -1.0000000,  1.0000000,
425 -1.0000000,  0.0000000,  0.0000000, -1.0000000,
426 -1.0000000,  0.0000000,  0.0000000,  0.0000000,
427 -1.0000000,  0.0000000,  0.0000000,  1.0000000,
428 -1.0000000,  0.0000000,  1.0000000, -1.0000000,
429 -1.0000000,  0.0000000,  1.0000000,  0.0000000,
430 -1.0000000,  0.0000000,  1.0000000,  1.0000000,
431 -1.0000000,  1.0000000, -1.0000000, -1.0000000,
432 -1.0000000,  1.0000000, -1.0000000,  0.0000000,
433 -1.0000000,  1.0000000, -1.0000000,  1.0000000,
434 -1.0000000,  1.0000000,  0.0000000, -1.0000000,
435 -1.0000000,  1.0000000,  0.0000000,  0.0000000,
436 -1.0000000,  1.0000000,  0.0000000,  1.0000000,
437 -1.0000000,  1.0000000,  1.0000000, -1.0000000,
438 -1.0000000,  1.0000000,  1.0000000,  0.0000000,
439 -1.0000000,  1.0000000,  1.0000000,  1.0000000,
440  0.0000000, -1.0000000, -1.0000000, -1.0000000,
441  0.0000000, -1.0000000, -1.0000000,  0.0000000,
442  0.0000000, -1.0000000, -1.0000000,  1.0000000,
443  0.0000000, -1.0000000,  0.0000000, -1.0000000,
444  0.0000000, -1.0000000,  0.0000000,  0.0000000,
445  0.0000000, -1.0000000,  0.0000000,  1.0000000,
446  0.0000000, -1.0000000,  1.0000000, -1.0000000,
447  0.0000000, -1.0000000,  1.0000000,  0.0000000,
448  0.0000000, -1.0000000,  1.0000000,  1.0000000,
449  0.0000000,  0.0000000, -1.0000000, -1.0000000,
450  0.0000000,  0.0000000, -1.0000000,  0.0000000,
451  0.0000000,  0.0000000, -1.0000000,  1.0000000,
452  0.0000000,  0.0000000,  0.0000000, -1.0000000,
453  0.0000000,  0.0000000,  0.0000000,  0.0000000,
454  0.0000000,  0.0000000,  0.0000000,  1.0000000,
455  0.0000000,  0.0000000,  1.0000000, -1.0000000,
456  0.0000000,  0.0000000,  1.0000000,  0.0000000,
457  0.0000000,  0.0000000,  1.0000000,  1.0000000,
458  0.0000000,  1.0000000, -1.0000000, -1.0000000,
459  0.0000000,  1.0000000, -1.0000000,  0.0000000,
460  0.0000000,  1.0000000, -1.0000000,  1.0000000,
461  0.0000000,  1.0000000,  0.0000000, -1.0000000,
462  0.0000000,  1.0000000,  0.0000000,  0.0000000,
463  0.0000000,  1.0000000,  0.0000000,  1.0000000,
464  0.0000000,  1.0000000,  1.0000000, -1.0000000,
465  0.0000000,  1.0000000,  1.0000000,  0.0000000,
466  0.0000000,  1.0000000,  1.0000000,  1.0000000,
467  1.0000000, -1.0000000, -1.0000000, -1.0000000,
468  1.0000000, -1.0000000, -1.0000000,  0.0000000,
469  1.0000000, -1.0000000, -1.0000000,  1.0000000,
470  1.0000000, -1.0000000,  0.0000000, -1.0000000,
471  1.0000000, -1.0000000,  0.0000000,  0.0000000,
472  1.0000000, -1.0000000,  0.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,  0.0000000, -1.0000000, -1.0000000,
477  1.0000000,  0.0000000, -1.0000000,  0.0000000,
478  1.0000000,  0.0000000, -1.0000000,  1.0000000,
479  1.0000000,  0.0000000,  0.0000000, -1.0000000,
480  1.0000000,  0.0000000,  0.0000000,  0.0000000,
481  1.0000000,  0.0000000,  0.0000000,  1.0000000,
482  1.0000000,  0.0000000,  1.0000000, -1.0000000,
483  1.0000000,  0.0000000,  1.0000000,  0.0000000,
484  1.0000000,  0.0000000,  1.0000000,  1.0000000,
485  1.0000000,  1.0000000, -1.0000000, -1.0000000,
486  1.0000000,  1.0000000, -1.0000000,  0.0000000,
487  1.0000000,  1.0000000, -1.0000000,  1.0000000,
488  1.0000000,  1.0000000,  0.0000000, -1.0000000,
489  1.0000000,  1.0000000,  0.0000000,  0.0000000,
490  1.0000000,  1.0000000,  0.0000000,  1.0000000,
491  1.0000000,  1.0000000,  1.0000000, -1.0000000,
492  1.0000000,  1.0000000,  1.0000000,  0.0000000,
493  1.0000000,  1.0000000,  1.0000000,  1.0000000,
494};
495
496static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
497  0.0000000,  0.0000000,  0.0000000,  0.0000000,
498  0.0000000,  0.0000000,  0.0000000,  1.0000000,
499  0.0000000,  0.0000000,  0.0000000,  2.5198421,
500  0.0000000,  0.0000000,  1.0000000,  0.0000000,
501  0.0000000,  0.0000000,  1.0000000,  1.0000000,
502  0.0000000,  0.0000000,  1.0000000,  2.5198421,
503  0.0000000,  0.0000000,  2.5198421,  0.0000000,
504  0.0000000,  0.0000000,  2.5198421,  1.0000000,
505  0.0000000,  0.0000000,  2.5198421,  2.5198421,
506  0.0000000,  1.0000000,  0.0000000,  0.0000000,
507  0.0000000,  1.0000000,  0.0000000,  1.0000000,
508  0.0000000,  1.0000000,  0.0000000,  2.5198421,
509  0.0000000,  1.0000000,  1.0000000,  0.0000000,
510  0.0000000,  1.0000000,  1.0000000,  1.0000000,
511  0.0000000,  1.0000000,  1.0000000,  2.5198421,
512  0.0000000,  1.0000000,  2.5198421,  0.0000000,
513  0.0000000,  1.0000000,  2.5198421,  1.0000000,
514  0.0000000,  1.0000000,  2.5198421,  2.5198421,
515  0.0000000,  2.5198421,  0.0000000,  0.0000000,
516  0.0000000,  2.5198421,  0.0000000,  1.0000000,
517  0.0000000,  2.5198421,  0.0000000,  2.5198421,
518  0.0000000,  2.5198421,  1.0000000,  0.0000000,
519  0.0000000,  2.5198421,  1.0000000,  1.0000000,
520  0.0000000,  2.5198421,  1.0000000,  2.5198421,
521  0.0000000,  2.5198421,  2.5198421,  0.0000000,
522  0.0000000,  2.5198421,  2.5198421,  1.0000000,
523  0.0000000,  2.5198421,  2.5198421,  2.5198421,
524  1.0000000,  0.0000000,  0.0000000,  0.0000000,
525  1.0000000,  0.0000000,  0.0000000,  1.0000000,
526  1.0000000,  0.0000000,  0.0000000,  2.5198421,
527  1.0000000,  0.0000000,  1.0000000,  0.0000000,
528  1.0000000,  0.0000000,  1.0000000,  1.0000000,
529  1.0000000,  0.0000000,  1.0000000,  2.5198421,
530  1.0000000,  0.0000000,  2.5198421,  0.0000000,
531  1.0000000,  0.0000000,  2.5198421,  1.0000000,
532  1.0000000,  0.0000000,  2.5198421,  2.5198421,
533  1.0000000,  1.0000000,  0.0000000,  0.0000000,
534  1.0000000,  1.0000000,  0.0000000,  1.0000000,
535  1.0000000,  1.0000000,  0.0000000,  2.5198421,
536  1.0000000,  1.0000000,  1.0000000,  0.0000000,
537  1.0000000,  1.0000000,  1.0000000,  1.0000000,
538  1.0000000,  1.0000000,  1.0000000,  2.5198421,
539  1.0000000,  1.0000000,  2.5198421,  0.0000000,
540  1.0000000,  1.0000000,  2.5198421,  1.0000000,
541  1.0000000,  1.0000000,  2.5198421,  2.5198421,
542  1.0000000,  2.5198421,  0.0000000,  0.0000000,
543  1.0000000,  2.5198421,  0.0000000,  1.0000000,
544  1.0000000,  2.5198421,  0.0000000,  2.5198421,
545  1.0000000,  2.5198421,  1.0000000,  0.0000000,
546  1.0000000,  2.5198421,  1.0000000,  1.0000000,
547  1.0000000,  2.5198421,  1.0000000,  2.5198421,
548  1.0000000,  2.5198421,  2.5198421,  0.0000000,
549  1.0000000,  2.5198421,  2.5198421,  1.0000000,
550  1.0000000,  2.5198421,  2.5198421,  2.5198421,
551  2.5198421,  0.0000000,  0.0000000,  0.0000000,
552  2.5198421,  0.0000000,  0.0000000,  1.0000000,
553  2.5198421,  0.0000000,  0.0000000,  2.5198421,
554  2.5198421,  0.0000000,  1.0000000,  0.0000000,
555  2.5198421,  0.0000000,  1.0000000,  1.0000000,
556  2.5198421,  0.0000000,  1.0000000,  2.5198421,
557  2.5198421,  0.0000000,  2.5198421,  0.0000000,
558  2.5198421,  0.0000000,  2.5198421,  1.0000000,
559  2.5198421,  0.0000000,  2.5198421,  2.5198421,
560  2.5198421,  1.0000000,  0.0000000,  0.0000000,
561  2.5198421,  1.0000000,  0.0000000,  1.0000000,
562  2.5198421,  1.0000000,  0.0000000,  2.5198421,
563  2.5198421,  1.0000000,  1.0000000,  0.0000000,
564  2.5198421,  1.0000000,  1.0000000,  1.0000000,
565  2.5198421,  1.0000000,  1.0000000,  2.5198421,
566  2.5198421,  1.0000000,  2.5198421,  0.0000000,
567  2.5198421,  1.0000000,  2.5198421,  1.0000000,
568  2.5198421,  1.0000000,  2.5198421,  2.5198421,
569  2.5198421,  2.5198421,  0.0000000,  0.0000000,
570  2.5198421,  2.5198421,  0.0000000,  1.0000000,
571  2.5198421,  2.5198421,  0.0000000,  2.5198421,
572  2.5198421,  2.5198421,  1.0000000,  0.0000000,
573  2.5198421,  2.5198421,  1.0000000,  1.0000000,
574  2.5198421,  2.5198421,  1.0000000,  2.5198421,
575  2.5198421,  2.5198421,  2.5198421,  0.0000000,
576  2.5198421,  2.5198421,  2.5198421,  1.0000000,
577  2.5198421,  2.5198421,  2.5198421,  2.5198421,
578};
579
580static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
581 -6.3496042, -6.3496042, -6.3496042, -4.3267487,
582 -6.3496042, -2.5198421, -6.3496042, -1.0000000,
583 -6.3496042,  0.0000000, -6.3496042,  1.0000000,
584 -6.3496042,  2.5198421, -6.3496042,  4.3267487,
585 -6.3496042,  6.3496042, -4.3267487, -6.3496042,
586 -4.3267487, -4.3267487, -4.3267487, -2.5198421,
587 -4.3267487, -1.0000000, -4.3267487,  0.0000000,
588 -4.3267487,  1.0000000, -4.3267487,  2.5198421,
589 -4.3267487,  4.3267487, -4.3267487,  6.3496042,
590 -2.5198421, -6.3496042, -2.5198421, -4.3267487,
591 -2.5198421, -2.5198421, -2.5198421, -1.0000000,
592 -2.5198421,  0.0000000, -2.5198421,  1.0000000,
593 -2.5198421,  2.5198421, -2.5198421,  4.3267487,
594 -2.5198421,  6.3496042, -1.0000000, -6.3496042,
595 -1.0000000, -4.3267487, -1.0000000, -2.5198421,
596 -1.0000000, -1.0000000, -1.0000000,  0.0000000,
597 -1.0000000,  1.0000000, -1.0000000,  2.5198421,
598 -1.0000000,  4.3267487, -1.0000000,  6.3496042,
599  0.0000000, -6.3496042,  0.0000000, -4.3267487,
600  0.0000000, -2.5198421,  0.0000000, -1.0000000,
601  0.0000000,  0.0000000,  0.0000000,  1.0000000,
602  0.0000000,  2.5198421,  0.0000000,  4.3267487,
603  0.0000000,  6.3496042,  1.0000000, -6.3496042,
604  1.0000000, -4.3267487,  1.0000000, -2.5198421,
605  1.0000000, -1.0000000,  1.0000000,  0.0000000,
606  1.0000000,  1.0000000,  1.0000000,  2.5198421,
607  1.0000000,  4.3267487,  1.0000000,  6.3496042,
608  2.5198421, -6.3496042,  2.5198421, -4.3267487,
609  2.5198421, -2.5198421,  2.5198421, -1.0000000,
610  2.5198421,  0.0000000,  2.5198421,  1.0000000,
611  2.5198421,  2.5198421,  2.5198421,  4.3267487,
612  2.5198421,  6.3496042,  4.3267487, -6.3496042,
613  4.3267487, -4.3267487,  4.3267487, -2.5198421,
614  4.3267487, -1.0000000,  4.3267487,  0.0000000,
615  4.3267487,  1.0000000,  4.3267487,  2.5198421,
616  4.3267487,  4.3267487,  4.3267487,  6.3496042,
617  6.3496042, -6.3496042,  6.3496042, -4.3267487,
618  6.3496042, -2.5198421,  6.3496042, -1.0000000,
619  6.3496042,  0.0000000,  6.3496042,  1.0000000,
620  6.3496042,  2.5198421,  6.3496042,  4.3267487,
621  6.3496042,  6.3496042,
622};
623
624static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
625  0.0000000,  0.0000000,  0.0000000,  1.0000000,
626  0.0000000,  2.5198421,  0.0000000,  4.3267487,
627  0.0000000,  6.3496042,  0.0000000,  8.5498797,
628  0.0000000, 10.9027236,  0.0000000, 13.3905183,
629  1.0000000,  0.0000000,  1.0000000,  1.0000000,
630  1.0000000,  2.5198421,  1.0000000,  4.3267487,
631  1.0000000,  6.3496042,  1.0000000,  8.5498797,
632  1.0000000, 10.9027236,  1.0000000, 13.3905183,
633  2.5198421,  0.0000000,  2.5198421,  1.0000000,
634  2.5198421,  2.5198421,  2.5198421,  4.3267487,
635  2.5198421,  6.3496042,  2.5198421,  8.5498797,
636  2.5198421, 10.9027236,  2.5198421, 13.3905183,
637  4.3267487,  0.0000000,  4.3267487,  1.0000000,
638  4.3267487,  2.5198421,  4.3267487,  4.3267487,
639  4.3267487,  6.3496042,  4.3267487,  8.5498797,
640  4.3267487, 10.9027236,  4.3267487, 13.3905183,
641  6.3496042,  0.0000000,  6.3496042,  1.0000000,
642  6.3496042,  2.5198421,  6.3496042,  4.3267487,
643  6.3496042,  6.3496042,  6.3496042,  8.5498797,
644  6.3496042, 10.9027236,  6.3496042, 13.3905183,
645  8.5498797,  0.0000000,  8.5498797,  1.0000000,
646  8.5498797,  2.5198421,  8.5498797,  4.3267487,
647  8.5498797,  6.3496042,  8.5498797,  8.5498797,
648  8.5498797, 10.9027236,  8.5498797, 13.3905183,
649 10.9027236,  0.0000000, 10.9027236,  1.0000000,
650 10.9027236,  2.5198421, 10.9027236,  4.3267487,
651 10.9027236,  6.3496042, 10.9027236,  8.5498797,
652 10.9027236, 10.9027236, 10.9027236, 13.3905183,
653 13.3905183,  0.0000000, 13.3905183,  1.0000000,
654 13.3905183,  2.5198421, 13.3905183,  4.3267487,
655 13.3905183,  6.3496042, 13.3905183,  8.5498797,
656 13.3905183, 10.9027236, 13.3905183, 13.3905183,
657};
658
659static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
660  0.0000000,  0.0000000,  0.0000000,  1.0000000,
661  0.0000000,  2.5198421,  0.0000000,  4.3267487,
662  0.0000000,  6.3496042,  0.0000000,  8.5498797,
663  0.0000000, 10.9027236,  0.0000000, 13.3905183,
664  0.0000000, 16.0000000,  0.0000000, 18.7207544,
665  0.0000000, 21.5443469,  0.0000000, 24.4637810,
666  0.0000000, 27.4731418,  1.0000000,  0.0000000,
667  1.0000000,  1.0000000,  1.0000000,  2.5198421,
668  1.0000000,  4.3267487,  1.0000000,  6.3496042,
669  1.0000000,  8.5498797,  1.0000000, 10.9027236,
670  1.0000000, 13.3905183,  1.0000000, 16.0000000,
671  1.0000000, 18.7207544,  1.0000000, 21.5443469,
672  1.0000000, 24.4637810,  1.0000000, 27.4731418,
673  2.5198421,  0.0000000,  2.5198421,  1.0000000,
674  2.5198421,  2.5198421,  2.5198421,  4.3267487,
675  2.5198421,  6.3496042,  2.5198421,  8.5498797,
676  2.5198421, 10.9027236,  2.5198421, 13.3905183,
677  2.5198421, 16.0000000,  2.5198421, 18.7207544,
678  2.5198421, 21.5443469,  2.5198421, 24.4637810,
679  2.5198421, 27.4731418,  4.3267487,  0.0000000,
680  4.3267487,  1.0000000,  4.3267487,  2.5198421,
681  4.3267487,  4.3267487,  4.3267487,  6.3496042,
682  4.3267487,  8.5498797,  4.3267487, 10.9027236,
683  4.3267487, 13.3905183,  4.3267487, 16.0000000,
684  4.3267487, 18.7207544,  4.3267487, 21.5443469,
685  4.3267487, 24.4637810,  4.3267487, 27.4731418,
686  6.3496042,  0.0000000,  6.3496042,  1.0000000,
687  6.3496042,  2.5198421,  6.3496042,  4.3267487,
688  6.3496042,  6.3496042,  6.3496042,  8.5498797,
689  6.3496042, 10.9027236,  6.3496042, 13.3905183,
690  6.3496042, 16.0000000,  6.3496042, 18.7207544,
691  6.3496042, 21.5443469,  6.3496042, 24.4637810,
692  6.3496042, 27.4731418,  8.5498797,  0.0000000,
693  8.5498797,  1.0000000,  8.5498797,  2.5198421,
694  8.5498797,  4.3267487,  8.5498797,  6.3496042,
695  8.5498797,  8.5498797,  8.5498797, 10.9027236,
696  8.5498797, 13.3905183,  8.5498797, 16.0000000,
697  8.5498797, 18.7207544,  8.5498797, 21.5443469,
698  8.5498797, 24.4637810,  8.5498797, 27.4731418,
699 10.9027236,  0.0000000, 10.9027236,  1.0000000,
700 10.9027236,  2.5198421, 10.9027236,  4.3267487,
701 10.9027236,  6.3496042, 10.9027236,  8.5498797,
702 10.9027236, 10.9027236, 10.9027236, 13.3905183,
703 10.9027236, 16.0000000, 10.9027236, 18.7207544,
704 10.9027236, 21.5443469, 10.9027236, 24.4637810,
705 10.9027236, 27.4731418, 13.3905183,  0.0000000,
706 13.3905183,  1.0000000, 13.3905183,  2.5198421,
707 13.3905183,  4.3267487, 13.3905183,  6.3496042,
708 13.3905183,  8.5498797, 13.3905183, 10.9027236,
709 13.3905183, 13.3905183, 13.3905183, 16.0000000,
710 13.3905183, 18.7207544, 13.3905183, 21.5443469,
711 13.3905183, 24.4637810, 13.3905183, 27.4731418,
712 16.0000000,  0.0000000, 16.0000000,  1.0000000,
713 16.0000000,  2.5198421, 16.0000000,  4.3267487,
714 16.0000000,  6.3496042, 16.0000000,  8.5498797,
715 16.0000000, 10.9027236, 16.0000000, 13.3905183,
716 16.0000000, 16.0000000, 16.0000000, 18.7207544,
717 16.0000000, 21.5443469, 16.0000000, 24.4637810,
718 16.0000000, 27.4731418, 18.7207544,  0.0000000,
719 18.7207544,  1.0000000, 18.7207544,  2.5198421,
720 18.7207544,  4.3267487, 18.7207544,  6.3496042,
721 18.7207544,  8.5498797, 18.7207544, 10.9027236,
722 18.7207544, 13.3905183, 18.7207544, 16.0000000,
723 18.7207544, 18.7207544, 18.7207544, 21.5443469,
724 18.7207544, 24.4637810, 18.7207544, 27.4731418,
725 21.5443469,  0.0000000, 21.5443469,  1.0000000,
726 21.5443469,  2.5198421, 21.5443469,  4.3267487,
727 21.5443469,  6.3496042, 21.5443469,  8.5498797,
728 21.5443469, 10.9027236, 21.5443469, 13.3905183,
729 21.5443469, 16.0000000, 21.5443469, 18.7207544,
730 21.5443469, 21.5443469, 21.5443469, 24.4637810,
731 21.5443469, 27.4731418, 24.4637810,  0.0000000,
732 24.4637810,  1.0000000, 24.4637810,  2.5198421,
733 24.4637810,  4.3267487, 24.4637810,  6.3496042,
734 24.4637810,  8.5498797, 24.4637810, 10.9027236,
735 24.4637810, 13.3905183, 24.4637810, 16.0000000,
736 24.4637810, 18.7207544, 24.4637810, 21.5443469,
737 24.4637810, 24.4637810, 24.4637810, 27.4731418,
738 27.4731418,  0.0000000, 27.4731418,  1.0000000,
739 27.4731418,  2.5198421, 27.4731418,  4.3267487,
740 27.4731418,  6.3496042, 27.4731418,  8.5498797,
741 27.4731418, 10.9027236, 27.4731418, 13.3905183,
742 27.4731418, 16.0000000, 27.4731418, 18.7207544,
743 27.4731418, 21.5443469, 27.4731418, 24.4637810,
744 27.4731418, 27.4731418,
745};
746
747static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
748  0.0000000,  0.0000000,  0.0000000,  1.0000000,
749  0.0000000,  2.5198421,  0.0000000,  4.3267487,
750  0.0000000,  6.3496042,  0.0000000,  8.5498797,
751  0.0000000, 10.9027236,  0.0000000, 13.3905183,
752  0.0000000, 16.0000000,  0.0000000, 18.7207544,
753  0.0000000, 21.5443469,  0.0000000, 24.4637810,
754  0.0000000, 27.4731418,  0.0000000, 30.5673509,
755  0.0000000, 33.7419917,  0.0000000, 36.9931811,
756  0.0000000,      64.0f,  1.0000000,  0.0000000,
757  1.0000000,  1.0000000,  1.0000000,  2.5198421,
758  1.0000000,  4.3267487,  1.0000000,  6.3496042,
759  1.0000000,  8.5498797,  1.0000000, 10.9027236,
760  1.0000000, 13.3905183,  1.0000000, 16.0000000,
761  1.0000000, 18.7207544,  1.0000000, 21.5443469,
762  1.0000000, 24.4637810,  1.0000000, 27.4731418,
763  1.0000000, 30.5673509,  1.0000000, 33.7419917,
764  1.0000000, 36.9931811,  1.0000000,      64.0f,
765  2.5198421,  0.0000000,  2.5198421,  1.0000000,
766  2.5198421,  2.5198421,  2.5198421,  4.3267487,
767  2.5198421,  6.3496042,  2.5198421,  8.5498797,
768  2.5198421, 10.9027236,  2.5198421, 13.3905183,
769  2.5198421, 16.0000000,  2.5198421, 18.7207544,
770  2.5198421, 21.5443469,  2.5198421, 24.4637810,
771  2.5198421, 27.4731418,  2.5198421, 30.5673509,
772  2.5198421, 33.7419917,  2.5198421, 36.9931811,
773  2.5198421,      64.0f,  4.3267487,  0.0000000,
774  4.3267487,  1.0000000,  4.3267487,  2.5198421,
775  4.3267487,  4.3267487,  4.3267487,  6.3496042,
776  4.3267487,  8.5498797,  4.3267487, 10.9027236,
777  4.3267487, 13.3905183,  4.3267487, 16.0000000,
778  4.3267487, 18.7207544,  4.3267487, 21.5443469,
779  4.3267487, 24.4637810,  4.3267487, 27.4731418,
780  4.3267487, 30.5673509,  4.3267487, 33.7419917,
781  4.3267487, 36.9931811,  4.3267487,      64.0f,
782  6.3496042,  0.0000000,  6.3496042,  1.0000000,
783  6.3496042,  2.5198421,  6.3496042,  4.3267487,
784  6.3496042,  6.3496042,  6.3496042,  8.5498797,
785  6.3496042, 10.9027236,  6.3496042, 13.3905183,
786  6.3496042, 16.0000000,  6.3496042, 18.7207544,
787  6.3496042, 21.5443469,  6.3496042, 24.4637810,
788  6.3496042, 27.4731418,  6.3496042, 30.5673509,
789  6.3496042, 33.7419917,  6.3496042, 36.9931811,
790  6.3496042,      64.0f,  8.5498797,  0.0000000,
791  8.5498797,  1.0000000,  8.5498797,  2.5198421,
792  8.5498797,  4.3267487,  8.5498797,  6.3496042,
793  8.5498797,  8.5498797,  8.5498797, 10.9027236,
794  8.5498797, 13.3905183,  8.5498797, 16.0000000,
795  8.5498797, 18.7207544,  8.5498797, 21.5443469,
796  8.5498797, 24.4637810,  8.5498797, 27.4731418,
797  8.5498797, 30.5673509,  8.5498797, 33.7419917,
798  8.5498797, 36.9931811,  8.5498797,      64.0f,
799 10.9027236,  0.0000000, 10.9027236,  1.0000000,
800 10.9027236,  2.5198421, 10.9027236,  4.3267487,
801 10.9027236,  6.3496042, 10.9027236,  8.5498797,
802 10.9027236, 10.9027236, 10.9027236, 13.3905183,
803 10.9027236, 16.0000000, 10.9027236, 18.7207544,
804 10.9027236, 21.5443469, 10.9027236, 24.4637810,
805 10.9027236, 27.4731418, 10.9027236, 30.5673509,
806 10.9027236, 33.7419917, 10.9027236, 36.9931811,
807 10.9027236,      64.0f, 13.3905183,  0.0000000,
808 13.3905183,  1.0000000, 13.3905183,  2.5198421,
809 13.3905183,  4.3267487, 13.3905183,  6.3496042,
810 13.3905183,  8.5498797, 13.3905183, 10.9027236,
811 13.3905183, 13.3905183, 13.3905183, 16.0000000,
812 13.3905183, 18.7207544, 13.3905183, 21.5443469,
813 13.3905183, 24.4637810, 13.3905183, 27.4731418,
814 13.3905183, 30.5673509, 13.3905183, 33.7419917,
815 13.3905183, 36.9931811, 13.3905183,      64.0f,
816 16.0000000,  0.0000000, 16.0000000,  1.0000000,
817 16.0000000,  2.5198421, 16.0000000,  4.3267487,
818 16.0000000,  6.3496042, 16.0000000,  8.5498797,
819 16.0000000, 10.9027236, 16.0000000, 13.3905183,
820 16.0000000, 16.0000000, 16.0000000, 18.7207544,
821 16.0000000, 21.5443469, 16.0000000, 24.4637810,
822 16.0000000, 27.4731418, 16.0000000, 30.5673509,
823 16.0000000, 33.7419917, 16.0000000, 36.9931811,
824 16.0000000,      64.0f, 18.7207544,  0.0000000,
825 18.7207544,  1.0000000, 18.7207544,  2.5198421,
826 18.7207544,  4.3267487, 18.7207544,  6.3496042,
827 18.7207544,  8.5498797, 18.7207544, 10.9027236,
828 18.7207544, 13.3905183, 18.7207544, 16.0000000,
829 18.7207544, 18.7207544, 18.7207544, 21.5443469,
830 18.7207544, 24.4637810, 18.7207544, 27.4731418,
831 18.7207544, 30.5673509, 18.7207544, 33.7419917,
832 18.7207544, 36.9931811, 18.7207544,      64.0f,
833 21.5443469,  0.0000000, 21.5443469,  1.0000000,
834 21.5443469,  2.5198421, 21.5443469,  4.3267487,
835 21.5443469,  6.3496042, 21.5443469,  8.5498797,
836 21.5443469, 10.9027236, 21.5443469, 13.3905183,
837 21.5443469, 16.0000000, 21.5443469, 18.7207544,
838 21.5443469, 21.5443469, 21.5443469, 24.4637810,
839 21.5443469, 27.4731418, 21.5443469, 30.5673509,
840 21.5443469, 33.7419917, 21.5443469, 36.9931811,
841 21.5443469,      64.0f, 24.4637810,  0.0000000,
842 24.4637810,  1.0000000, 24.4637810,  2.5198421,
843 24.4637810,  4.3267487, 24.4637810,  6.3496042,
844 24.4637810,  8.5498797, 24.4637810, 10.9027236,
845 24.4637810, 13.3905183, 24.4637810, 16.0000000,
846 24.4637810, 18.7207544, 24.4637810, 21.5443469,
847 24.4637810, 24.4637810, 24.4637810, 27.4731418,
848 24.4637810, 30.5673509, 24.4637810, 33.7419917,
849 24.4637810, 36.9931811, 24.4637810,      64.0f,
850 27.4731418,  0.0000000, 27.4731418,  1.0000000,
851 27.4731418,  2.5198421, 27.4731418,  4.3267487,
852 27.4731418,  6.3496042, 27.4731418,  8.5498797,
853 27.4731418, 10.9027236, 27.4731418, 13.3905183,
854 27.4731418, 16.0000000, 27.4731418, 18.7207544,
855 27.4731418, 21.5443469, 27.4731418, 24.4637810,
856 27.4731418, 27.4731418, 27.4731418, 30.5673509,
857 27.4731418, 33.7419917, 27.4731418, 36.9931811,
858 27.4731418,      64.0f, 30.5673509,  0.0000000,
859 30.5673509,  1.0000000, 30.5673509,  2.5198421,
860 30.5673509,  4.3267487, 30.5673509,  6.3496042,
861 30.5673509,  8.5498797, 30.5673509, 10.9027236,
862 30.5673509, 13.3905183, 30.5673509, 16.0000000,
863 30.5673509, 18.7207544, 30.5673509, 21.5443469,
864 30.5673509, 24.4637810, 30.5673509, 27.4731418,
865 30.5673509, 30.5673509, 30.5673509, 33.7419917,
866 30.5673509, 36.9931811, 30.5673509,      64.0f,
867 33.7419917,  0.0000000, 33.7419917,  1.0000000,
868 33.7419917,  2.5198421, 33.7419917,  4.3267487,
869 33.7419917,  6.3496042, 33.7419917,  8.5498797,
870 33.7419917, 10.9027236, 33.7419917, 13.3905183,
871 33.7419917, 16.0000000, 33.7419917, 18.7207544,
872 33.7419917, 21.5443469, 33.7419917, 24.4637810,
873 33.7419917, 27.4731418, 33.7419917, 30.5673509,
874 33.7419917, 33.7419917, 33.7419917, 36.9931811,
875 33.7419917,      64.0f, 36.9931811,  0.0000000,
876 36.9931811,  1.0000000, 36.9931811,  2.5198421,
877 36.9931811,  4.3267487, 36.9931811,  6.3496042,
878 36.9931811,  8.5498797, 36.9931811, 10.9027236,
879 36.9931811, 13.3905183, 36.9931811, 16.0000000,
880 36.9931811, 18.7207544, 36.9931811, 21.5443469,
881 36.9931811, 24.4637810, 36.9931811, 27.4731418,
882 36.9931811, 30.5673509, 36.9931811, 33.7419917,
883 36.9931811, 36.9931811, 36.9931811,      64.0f,
884      64.0f,  0.0000000,      64.0f,  1.0000000,
885      64.0f,  2.5198421,      64.0f,  4.3267487,
886      64.0f,  6.3496042,      64.0f,  8.5498797,
887      64.0f, 10.9027236,      64.0f, 13.3905183,
888      64.0f, 16.0000000,      64.0f, 18.7207544,
889      64.0f, 21.5443469,      64.0f, 24.4637810,
890      64.0f, 27.4731418,      64.0f, 30.5673509,
891      64.0f, 33.7419917,      64.0f, 36.9931811,
892      64.0f,      64.0f,
893};
894
895const float * const ff_aac_codebook_vectors[] = {
896    codebook_vector0, codebook_vector0, codebook_vector2,
897    codebook_vector2, codebook_vector4, codebook_vector4,
898    codebook_vector6, codebook_vector6, codebook_vector8,
899    codebook_vector8, codebook_vector10,
900};
901
902static const float codebook_vector0_vals[] = {
903   -1.0000000,  0.0000000,  1.0000000
904};
905
906/*
907 * bits  0:1, 2:3, 4:5, 6:7  index into _vals array
908 *       8:11                number of non-zero values
909 *      12:15                bit mask of non-zero values
910 */
911static const uint16_t codebook_vector02_idx[] = {
912    0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
913    0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
914    0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
915    0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
916    0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
917    0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
918    0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
919    0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
920    0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
921};
922
923static const float codebook_vector4_vals[] = {
924   -6.3496042, -4.3267487,
925   -2.5198421, -1.0000000,
926    0.0000000,  1.0000000,
927    2.5198421,  4.3267487,
928    6.3496042,
929};
930
931/*
932 * bits  0:3, 4:7  index into _vals array
933 */
934static const uint16_t codebook_vector4_idx[] = {
935    0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
936    0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
937    0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
938    0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
939    0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
940    0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
941    0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
942    0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
943    0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
944};
945
946/*
947 * bits  0:3, 4:7  index into _vals array
948 *       8:11      number of non-zero values
949 *      12:15      1: only second value non-zero
950 *                 0: other cases
951 */
952static const uint16_t codebook_vector6_idx[] = {
953    0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
954    0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
955    0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
956    0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
957    0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
958    0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
959    0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
960    0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
961};
962
963/*
964 * bits  0:3, 4:7  index into _vals array
965 *       8:11      number of non-zero values
966 *      12:15      1: only second value non-zero
967 *                 0: other cases
968 */
969static const uint16_t codebook_vector8_idx[] = {
970  0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
971  0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
972  0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
973  0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
974  0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
975  0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
976  0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
977  0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
978  0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
979  0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
980  0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
981  0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
982  0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
983  0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
984  0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
985  0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
986  0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
987  0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
988  0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
989  0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
990  0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
991  0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
992  0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
993  0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
994  0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
995  0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
996};
997
998static const float codebook_vector10_vals[] = {
999     0.0000000,  1.0000000,
1000     2.5198421,  4.3267487,
1001     6.3496042,  8.5498797,
1002    10.9027236, 13.3905183,
1003    16.0000000, 18.7207544,
1004    21.5443469, 24.4637810,
1005    27.4731418, 30.5673509,
1006    33.7419917, 36.9931811,
1007};
1008
1009/*
1010 * bits  0:3, 4:7  index into _vals array
1011 *       8:9       bit mask of escape-coded entries
1012 *      12:15      number of non-zero values
1013 */
1014static const uint16_t codebook_vector10_idx[] = {
1015    0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
1016    0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
1017    0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
1018    0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
1019    0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
1020    0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
1021    0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
1022    0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
1023    0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
1024    0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
1025    0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
1026    0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
1027    0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
1028    0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
1029    0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
1030    0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
1031    0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
1032    0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
1033    0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
1034    0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
1035    0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
1036    0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
1037    0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
1038    0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
1039    0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
1040    0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
1041    0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
1042    0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
1043    0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
1044    0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
1045    0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
1046    0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
1047    0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
1048    0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
1049};
1050
1051const float *const ff_aac_codebook_vector_vals[] = {
1052    codebook_vector0_vals,  codebook_vector0_vals,
1053    codebook_vector10_vals, codebook_vector10_vals,
1054    codebook_vector4_vals,  codebook_vector4_vals,
1055    codebook_vector10_vals, codebook_vector10_vals,
1056    codebook_vector10_vals, codebook_vector10_vals,
1057    codebook_vector10_vals,
1058};
1059
1060const uint16_t *const ff_aac_codebook_vector_idx[] = {
1061    codebook_vector02_idx, codebook_vector02_idx,
1062    codebook_vector02_idx, codebook_vector02_idx,
1063    codebook_vector4_idx,  codebook_vector4_idx,
1064    codebook_vector6_idx,  codebook_vector6_idx,
1065    codebook_vector8_idx,  codebook_vector8_idx,
1066    codebook_vector10_idx,
1067};
1068
1069/* @name swb_offsets
1070 * Sample offset into the window indicating the beginning of a scalefactor
1071 * window band
1072 *
1073 * scalefactor window band - term for scalefactor bands within a window,
1074 * given in Table 4.110 to Table 4.128.
1075 *
1076 * scalefactor band - a set of spectral coefficients which are scaled by one
1077 * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
1078 * may contain several scalefactor window bands of corresponding frequency. For
1079 * all other window_sequences scalefactor bands and scalefactor window bands are
1080 * identical.
1081 * @{
1082 */
1083
1084static const uint16_t swb_offset_1024_96[] = {
1085      0,   4,   8,  12,  16,  20,  24,  28,
1086     32,  36,  40,  44,  48,  52,  56,  64,
1087     72,  80,  88,  96, 108, 120, 132, 144,
1088    156, 172, 188, 212, 240, 276, 320, 384,
1089    448, 512, 576, 640, 704, 768, 832, 896,
1090    960, 1024
1091};
1092
1093static const uint16_t swb_offset_128_96[] = {
1094    0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1095};
1096
1097static const uint16_t swb_offset_1024_64[] = {
1098      0,   4,   8,  12,  16,  20,  24,  28,
1099     32,  36,  40,  44,  48,  52,  56,  64,
1100     72,  80,  88, 100, 112, 124, 140, 156,
1101    172, 192, 216, 240, 268, 304, 344, 384,
1102    424, 464, 504, 544, 584, 624, 664, 704,
1103    744, 784, 824, 864, 904, 944, 984, 1024
1104};
1105
1106static const uint16_t swb_offset_1024_48[] = {
1107      0,   4,   8,  12,  16,  20,  24,  28,
1108     32,  36,  40,  48,  56,  64,  72,  80,
1109     88,  96, 108, 120, 132, 144, 160, 176,
1110    196, 216, 240, 264, 292, 320, 352, 384,
1111    416, 448, 480, 512, 544, 576, 608, 640,
1112    672, 704, 736, 768, 800, 832, 864, 896,
1113    928, 1024
1114};
1115
1116static const uint16_t swb_offset_128_48[] = {
1117     0,   4,   8,  12,  16,  20,  28,  36,
1118    44,  56,  68,  80,  96, 112, 128
1119};
1120
1121static const uint16_t swb_offset_1024_32[] = {
1122      0,   4,   8,  12,  16,  20,  24,  28,
1123     32,  36,  40,  48,  56,  64,  72,  80,
1124     88,  96, 108, 120, 132, 144, 160, 176,
1125    196, 216, 240, 264, 292, 320, 352, 384,
1126    416, 448, 480, 512, 544, 576, 608, 640,
1127    672, 704, 736, 768, 800, 832, 864, 896,
1128    928, 960, 992, 1024
1129};
1130
1131static const uint16_t swb_offset_1024_24[] = {
1132      0,   4,   8,  12,  16,  20,  24,  28,
1133     32,  36,  40,  44,  52,  60,  68,  76,
1134     84,  92, 100, 108, 116, 124, 136, 148,
1135    160, 172, 188, 204, 220, 240, 260, 284,
1136    308, 336, 364, 396, 432, 468, 508, 552,
1137    600, 652, 704, 768, 832, 896, 960, 1024
1138};
1139
1140static const uint16_t swb_offset_128_24[] = {
1141     0,   4,   8,  12,  16,  20,  24,  28,
1142    36,  44,  52,  64,  76,  92, 108, 128
1143};
1144
1145static const uint16_t swb_offset_1024_16[] = {
1146      0,   8,  16,  24,  32,  40,  48,  56,
1147     64,  72,  80,  88, 100, 112, 124, 136,
1148    148, 160, 172, 184, 196, 212, 228, 244,
1149    260, 280, 300, 320, 344, 368, 396, 424,
1150    456, 492, 532, 572, 616, 664, 716, 772,
1151    832, 896, 960, 1024
1152};
1153
1154static const uint16_t swb_offset_128_16[] = {
1155     0,   4,   8,  12,  16,  20,  24,  28,
1156    32,  40,  48,  60,  72,  88, 108, 128
1157};
1158
1159static const uint16_t swb_offset_1024_8[] = {
1160      0,  12,  24,  36,  48,  60,  72,  84,
1161     96, 108, 120, 132, 144, 156, 172, 188,
1162    204, 220, 236, 252, 268, 288, 308, 328,
1163    348, 372, 396, 420, 448, 476, 508, 544,
1164    580, 620, 664, 712, 764, 820, 880, 944,
1165    1024
1166};
1167
1168static const uint16_t swb_offset_128_8[] = {
1169     0,   4,   8,  12,  16,  20,  24,  28,
1170    36,  44,  52,  60,  72,  88, 108, 128
1171};
1172
1173const uint16_t * const ff_swb_offset_1024[] = {
1174    swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
1175    swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
1176    swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
1177    swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
1178    swb_offset_1024_8
1179};
1180
1181const uint16_t * const ff_swb_offset_128[] = {
1182    /* The last entry on the following row is swb_offset_128_64 but is a
1183       duplicate of swb_offset_128_96. */
1184    swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
1185    swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
1186    swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
1187    swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
1188    swb_offset_128_8
1189};
1190
1191// @}
1192
1193/* @name ff_tns_max_bands
1194 * The maximum number of scalefactor bands on which TNS can operate for the long
1195 * and short transforms respectively. The index to these tables is related to
1196 * the sample rate of the audio.
1197 * @{
1198 */
1199const uint8_t ff_tns_max_bands_1024[] = {
1200    31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1201};
1202
1203const uint8_t ff_tns_max_bands_128[] = {
1204    9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1205};
1206// @}
1207
1208
1209#if CONFIG_HARDCODED_TABLES
1210
1211/**
1212 * Table of pow(2, (i - 200)/4.) used for different purposes depending on the
1213 * range of indices to the table:
1214 * [ 0, 255] scale factor decoding when using C dsp.float_to_int16
1215 * [60, 315] scale factor decoding when using SIMD dsp.float_to_int16
1216 * [45, 300] intensity stereo position decoding mapped in reverse order i.e. 0->300, 1->299, ..., 254->46, 255->45
1217 */
1218const float ff_aac_pow2sf_tab[428] = {
1219    8.88178420e-16, 1.05622810e-15, 1.25607397e-15, 1.49373210e-15,
1220    1.77635684e-15, 2.11245619e-15, 2.51214793e-15, 2.98746420e-15,
1221    3.55271368e-15, 4.22491238e-15, 5.02429587e-15, 5.97492839e-15,
1222    7.10542736e-15, 8.44982477e-15, 1.00485917e-14, 1.19498568e-14,
1223    1.42108547e-14, 1.68996495e-14, 2.00971835e-14, 2.38997136e-14,
1224    2.84217094e-14, 3.37992991e-14, 4.01943669e-14, 4.77994272e-14,
1225    5.68434189e-14, 6.75985982e-14, 8.03887339e-14, 9.55988543e-14,
1226    1.13686838e-13, 1.35197196e-13, 1.60777468e-13, 1.91197709e-13,
1227    2.27373675e-13, 2.70394393e-13, 3.21554936e-13, 3.82395417e-13,
1228    4.54747351e-13, 5.40788785e-13, 6.43109871e-13, 7.64790834e-13,
1229    9.09494702e-13, 1.08157757e-12, 1.28621974e-12, 1.52958167e-12,
1230    1.81898940e-12, 2.16315514e-12, 2.57243948e-12, 3.05916334e-12,
1231    3.63797881e-12, 4.32631028e-12, 5.14487897e-12, 6.11832668e-12,
1232    7.27595761e-12, 8.65262056e-12, 1.02897579e-11, 1.22366534e-11,
1233    1.45519152e-11, 1.73052411e-11, 2.05795159e-11, 2.44733067e-11,
1234    2.91038305e-11, 3.46104823e-11, 4.11590317e-11, 4.89466134e-11,
1235    5.82076609e-11, 6.92209645e-11, 8.23180635e-11, 9.78932268e-11,
1236    1.16415322e-10, 1.38441929e-10, 1.64636127e-10, 1.95786454e-10,
1237    2.32830644e-10, 2.76883858e-10, 3.29272254e-10, 3.91572907e-10,
1238    4.65661287e-10, 5.53767716e-10, 6.58544508e-10, 7.83145814e-10,
1239    9.31322575e-10, 1.10753543e-09, 1.31708902e-09, 1.56629163e-09,
1240    1.86264515e-09, 2.21507086e-09, 2.63417803e-09, 3.13258326e-09,
1241    3.72529030e-09, 4.43014173e-09, 5.26835606e-09, 6.26516652e-09,
1242    7.45058060e-09, 8.86028346e-09, 1.05367121e-08, 1.25303330e-08,
1243    1.49011612e-08, 1.77205669e-08, 2.10734243e-08, 2.50606661e-08,
1244    2.98023224e-08, 3.54411338e-08, 4.21468485e-08, 5.01213321e-08,
1245    5.96046448e-08, 7.08822677e-08, 8.42936970e-08, 1.00242664e-07,
1246    1.19209290e-07, 1.41764535e-07, 1.68587394e-07, 2.00485328e-07,
1247    2.38418579e-07, 2.83529071e-07, 3.37174788e-07, 4.00970657e-07,
1248    4.76837158e-07, 5.67058141e-07, 6.74349576e-07, 8.01941314e-07,
1249    9.53674316e-07, 1.13411628e-06, 1.34869915e-06, 1.60388263e-06,
1250    1.90734863e-06, 2.26823256e-06, 2.69739830e-06, 3.20776526e-06,
1251    3.81469727e-06, 4.53646513e-06, 5.39479661e-06, 6.41553051e-06,
1252    7.62939453e-06, 9.07293026e-06, 1.07895932e-05, 1.28310610e-05,
1253    1.52587891e-05, 1.81458605e-05, 2.15791864e-05, 2.56621220e-05,
1254    3.05175781e-05, 3.62917210e-05, 4.31583729e-05, 5.13242441e-05,
1255    6.10351562e-05, 7.25834421e-05, 8.63167458e-05, 1.02648488e-04,
1256    1.22070312e-04, 1.45166884e-04, 1.72633492e-04, 2.05296976e-04,
1257    2.44140625e-04, 2.90333768e-04, 3.45266983e-04, 4.10593953e-04,
1258    4.88281250e-04, 5.80667537e-04, 6.90533966e-04, 8.21187906e-04,
1259    9.76562500e-04, 1.16133507e-03, 1.38106793e-03, 1.64237581e-03,
1260    1.95312500e-03, 2.32267015e-03, 2.76213586e-03, 3.28475162e-03,
1261    3.90625000e-03, 4.64534029e-03, 5.52427173e-03, 6.56950324e-03,
1262    7.81250000e-03, 9.29068059e-03, 1.10485435e-02, 1.31390065e-02,
1263    1.56250000e-02, 1.85813612e-02, 2.20970869e-02, 2.62780130e-02,
1264    3.12500000e-02, 3.71627223e-02, 4.41941738e-02, 5.25560260e-02,
1265    6.25000000e-02, 7.43254447e-02, 8.83883476e-02, 1.05112052e-01,
1266    1.25000000e-01, 1.48650889e-01, 1.76776695e-01, 2.10224104e-01,
1267    2.50000000e-01, 2.97301779e-01, 3.53553391e-01, 4.20448208e-01,
1268    5.00000000e-01, 5.94603558e-01, 7.07106781e-01, 8.40896415e-01,
1269    1.00000000e+00, 1.18920712e+00, 1.41421356e+00, 1.68179283e+00,
1270    2.00000000e+00, 2.37841423e+00, 2.82842712e+00, 3.36358566e+00,
1271    4.00000000e+00, 4.75682846e+00, 5.65685425e+00, 6.72717132e+00,
1272    8.00000000e+00, 9.51365692e+00, 1.13137085e+01, 1.34543426e+01,
1273    1.60000000e+01, 1.90273138e+01, 2.26274170e+01, 2.69086853e+01,
1274    3.20000000e+01, 3.80546277e+01, 4.52548340e+01, 5.38173706e+01,
1275    6.40000000e+01, 7.61092554e+01, 9.05096680e+01, 1.07634741e+02,
1276    1.28000000e+02, 1.52218511e+02, 1.81019336e+02, 2.15269482e+02,
1277    2.56000000e+02, 3.04437021e+02, 3.62038672e+02, 4.30538965e+02,
1278    5.12000000e+02, 6.08874043e+02, 7.24077344e+02, 8.61077929e+02,
1279    1.02400000e+03, 1.21774809e+03, 1.44815469e+03, 1.72215586e+03,
1280    2.04800000e+03, 2.43549617e+03, 2.89630938e+03, 3.44431172e+03,
1281    4.09600000e+03, 4.87099234e+03, 5.79261875e+03, 6.88862343e+03,
1282    8.19200000e+03, 9.74198469e+03, 1.15852375e+04, 1.37772469e+04,
1283    1.63840000e+04, 1.94839694e+04, 2.31704750e+04, 2.75544937e+04,
1284    3.27680000e+04, 3.89679387e+04, 4.63409500e+04, 5.51089875e+04,
1285    6.55360000e+04, 7.79358775e+04, 9.26819000e+04, 1.10217975e+05,
1286    1.31072000e+05, 1.55871755e+05, 1.85363800e+05, 2.20435950e+05,
1287    2.62144000e+05, 3.11743510e+05, 3.70727600e+05, 4.40871900e+05,
1288    5.24288000e+05, 6.23487020e+05, 7.41455200e+05, 8.81743800e+05,
1289    1.04857600e+06, 1.24697404e+06, 1.48291040e+06, 1.76348760e+06,
1290    2.09715200e+06, 2.49394808e+06, 2.96582080e+06, 3.52697520e+06,
1291    4.19430400e+06, 4.98789616e+06, 5.93164160e+06, 7.05395040e+06,
1292    8.38860800e+06, 9.97579232e+06, 1.18632832e+07, 1.41079008e+07,
1293    1.67772160e+07, 1.99515846e+07, 2.37265664e+07, 2.82158016e+07,
1294    3.35544320e+07, 3.99031693e+07, 4.74531328e+07, 5.64316032e+07,
1295    6.71088640e+07, 7.98063385e+07, 9.49062656e+07, 1.12863206e+08,
1296    1.34217728e+08, 1.59612677e+08, 1.89812531e+08, 2.25726413e+08,
1297    2.68435456e+08, 3.19225354e+08, 3.79625062e+08, 4.51452825e+08,
1298    5.36870912e+08, 6.38450708e+08, 7.59250125e+08, 9.02905651e+08,
1299    1.07374182e+09, 1.27690142e+09, 1.51850025e+09, 1.80581130e+09,
1300    2.14748365e+09, 2.55380283e+09, 3.03700050e+09, 3.61162260e+09,
1301    4.29496730e+09, 5.10760567e+09, 6.07400100e+09, 7.22324521e+09,
1302    8.58993459e+09, 1.02152113e+10, 1.21480020e+10, 1.44464904e+10,
1303    1.71798692e+10, 2.04304227e+10, 2.42960040e+10, 2.88929808e+10,
1304    3.43597384e+10, 4.08608453e+10, 4.85920080e+10, 5.77859616e+10,
1305    6.87194767e+10, 8.17216907e+10, 9.71840160e+10, 1.15571923e+11,
1306    1.37438953e+11, 1.63443381e+11, 1.94368032e+11, 2.31143847e+11,
1307    2.74877907e+11, 3.26886763e+11, 3.88736064e+11, 4.62287693e+11,
1308    5.49755814e+11, 6.53773525e+11, 7.77472128e+11, 9.24575386e+11,
1309    1.09951163e+12, 1.30754705e+12, 1.55494426e+12, 1.84915077e+12,
1310    2.19902326e+12, 2.61509410e+12, 3.10988851e+12, 3.69830155e+12,
1311    4.39804651e+12, 5.23018820e+12, 6.21977702e+12, 7.39660309e+12,
1312    8.79609302e+12, 1.04603764e+13, 1.24395540e+13, 1.47932062e+13,
1313    1.75921860e+13, 2.09207528e+13, 2.48791081e+13, 2.95864124e+13,
1314    3.51843721e+13, 4.18415056e+13, 4.97582162e+13, 5.91728247e+13,
1315    7.03687442e+13, 8.36830112e+13, 9.95164324e+13, 1.18345649e+14,
1316    1.40737488e+14, 1.67366022e+14, 1.99032865e+14, 2.36691299e+14,
1317    2.81474977e+14, 3.34732045e+14, 3.98065730e+14, 4.73382598e+14,
1318    5.62949953e+14, 6.69464090e+14, 7.96131459e+14, 9.46765196e+14,
1319    1.12589991e+15, 1.33892818e+15, 1.59226292e+15, 1.89353039e+15,
1320    2.25179981e+15, 2.67785636e+15, 3.18452584e+15, 3.78706078e+15,
1321    4.50359963e+15, 5.35571272e+15, 6.36905167e+15, 7.57412156e+15,
1322    9.00719925e+15, 1.07114254e+16, 1.27381033e+16, 1.51482431e+16,
1323    1.80143985e+16, 2.14228509e+16, 2.54762067e+16, 3.02964863e+16,
1324    3.60287970e+16, 4.28457018e+16, 5.09524134e+16, 6.05929725e+16,
1325    7.20575940e+16, 8.56914035e+16, 1.01904827e+17, 1.21185945e+17,
1326};
1327
1328#else
1329
1330float ff_aac_pow2sf_tab[428];
1331
1332#endif /* CONFIG_HARDCODED_TABLES */
1333