]> git.sesse.net Git - ffmpeg/blob - libavcodec/aactab.c
Bump avcodec minor version for kgv1 decoder
[ffmpeg] / libavcodec / aactab.c
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 libavcodec/aactab.c
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
35 DECLARE_ALIGNED(16, float,  ff_aac_kbd_long_1024)[1024];
36 DECLARE_ALIGNED(16, float,  ff_aac_kbd_short_128)[128];
37
38 const uint8_t ff_aac_num_swb_1024[] = {
39     41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
40 };
41
42 const uint8_t ff_aac_num_swb_128[] = {
43     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
44 };
45
46 const uint8_t ff_aac_pred_sfb_max[] = {
47     33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
48 };
49
50 const 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
69 const 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
80 static 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
94 static 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
103 static 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
117 static 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
126 static 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
140 static 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
149 static 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
163 static 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
172 static 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
186 static 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
195 static 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
209 static 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
218 static 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
229 static 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
236 static 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
247 static 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
254 static 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
279 static 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
293 static 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
318 static 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
332 static 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
372 static 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
394 const uint16_t * const ff_aac_spectral_codes[11] = {
395     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
396     codes9, codes10, codes11,
397 };
398
399 const uint8_t * const ff_aac_spectral_bits[11] = {
400     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
401     bits9, bits10, bits11,
402 };
403
404 const 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  */
412 static 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
496 static 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
580 static 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
624 static 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
659 static 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
747 static 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
895 const 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
902 static 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  */
911 static 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
923 static 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  */
934 static 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  */
952 static 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  */
969 static 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
998 static 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  */
1014 static 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
1051 const 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
1060 const 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
1084 static 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
1093 static const uint16_t swb_offset_128_96[] = {
1094     0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1095 };
1096
1097 static 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
1106 static 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
1116 static 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
1121 static 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
1131 static 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
1140 static 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
1145 static 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
1154 static 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
1159 static 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
1168 static 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
1173 const 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
1181 const 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  */
1199 const uint8_t ff_tns_max_bands_1024[] = {
1200     31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1201 };
1202
1203 const 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  */
1218 const 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
1330 float ff_aac_pow2sf_tab[428];
1331
1332 #endif /* CONFIG_HARDCODED_TABLES */