]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blob - libavcodec/aactab.c
Add gnu/kfreebsd to list of recognized operating systems.
[frescor/ffmpeg.git] / 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 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 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 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 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 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 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 #if CONFIG_HARDCODED_TABLES
903
904 /**
905  * Table of pow(2, (i - 200)/4.) used for different purposes depending on the
906  * range of indices to the table:
907  * [ 0, 255] scale factor decoding when using C dsp.float_to_int16
908  * [60, 315] scale factor decoding when using SIMD dsp.float_to_int16
909  * [45, 300] intensity stereo position decoding mapped in reverse order i.e. 0->300, 1->299, ..., 254->46, 255->45
910  */
911 const float ff_aac_pow2sf_tab[428] = {
912     8.88178420e-16, 1.05622810e-15, 1.25607397e-15, 1.49373210e-15,
913     1.77635684e-15, 2.11245619e-15, 2.51214793e-15, 2.98746420e-15,
914     3.55271368e-15, 4.22491238e-15, 5.02429587e-15, 5.97492839e-15,
915     7.10542736e-15, 8.44982477e-15, 1.00485917e-14, 1.19498568e-14,
916     1.42108547e-14, 1.68996495e-14, 2.00971835e-14, 2.38997136e-14,
917     2.84217094e-14, 3.37992991e-14, 4.01943669e-14, 4.77994272e-14,
918     5.68434189e-14, 6.75985982e-14, 8.03887339e-14, 9.55988543e-14,
919     1.13686838e-13, 1.35197196e-13, 1.60777468e-13, 1.91197709e-13,
920     2.27373675e-13, 2.70394393e-13, 3.21554936e-13, 3.82395417e-13,
921     4.54747351e-13, 5.40788785e-13, 6.43109871e-13, 7.64790834e-13,
922     9.09494702e-13, 1.08157757e-12, 1.28621974e-12, 1.52958167e-12,
923     1.81898940e-12, 2.16315514e-12, 2.57243948e-12, 3.05916334e-12,
924     3.63797881e-12, 4.32631028e-12, 5.14487897e-12, 6.11832668e-12,
925     7.27595761e-12, 8.65262056e-12, 1.02897579e-11, 1.22366534e-11,
926     1.45519152e-11, 1.73052411e-11, 2.05795159e-11, 2.44733067e-11,
927     2.91038305e-11, 3.46104823e-11, 4.11590317e-11, 4.89466134e-11,
928     5.82076609e-11, 6.92209645e-11, 8.23180635e-11, 9.78932268e-11,
929     1.16415322e-10, 1.38441929e-10, 1.64636127e-10, 1.95786454e-10,
930     2.32830644e-10, 2.76883858e-10, 3.29272254e-10, 3.91572907e-10,
931     4.65661287e-10, 5.53767716e-10, 6.58544508e-10, 7.83145814e-10,
932     9.31322575e-10, 1.10753543e-09, 1.31708902e-09, 1.56629163e-09,
933     1.86264515e-09, 2.21507086e-09, 2.63417803e-09, 3.13258326e-09,
934     3.72529030e-09, 4.43014173e-09, 5.26835606e-09, 6.26516652e-09,
935     7.45058060e-09, 8.86028346e-09, 1.05367121e-08, 1.25303330e-08,
936     1.49011612e-08, 1.77205669e-08, 2.10734243e-08, 2.50606661e-08,
937     2.98023224e-08, 3.54411338e-08, 4.21468485e-08, 5.01213321e-08,
938     5.96046448e-08, 7.08822677e-08, 8.42936970e-08, 1.00242664e-07,
939     1.19209290e-07, 1.41764535e-07, 1.68587394e-07, 2.00485328e-07,
940     2.38418579e-07, 2.83529071e-07, 3.37174788e-07, 4.00970657e-07,
941     4.76837158e-07, 5.67058141e-07, 6.74349576e-07, 8.01941314e-07,
942     9.53674316e-07, 1.13411628e-06, 1.34869915e-06, 1.60388263e-06,
943     1.90734863e-06, 2.26823256e-06, 2.69739830e-06, 3.20776526e-06,
944     3.81469727e-06, 4.53646513e-06, 5.39479661e-06, 6.41553051e-06,
945     7.62939453e-06, 9.07293026e-06, 1.07895932e-05, 1.28310610e-05,
946     1.52587891e-05, 1.81458605e-05, 2.15791864e-05, 2.56621220e-05,
947     3.05175781e-05, 3.62917210e-05, 4.31583729e-05, 5.13242441e-05,
948     6.10351562e-05, 7.25834421e-05, 8.63167458e-05, 1.02648488e-04,
949     1.22070312e-04, 1.45166884e-04, 1.72633492e-04, 2.05296976e-04,
950     2.44140625e-04, 2.90333768e-04, 3.45266983e-04, 4.10593953e-04,
951     4.88281250e-04, 5.80667537e-04, 6.90533966e-04, 8.21187906e-04,
952     9.76562500e-04, 1.16133507e-03, 1.38106793e-03, 1.64237581e-03,
953     1.95312500e-03, 2.32267015e-03, 2.76213586e-03, 3.28475162e-03,
954     3.90625000e-03, 4.64534029e-03, 5.52427173e-03, 6.56950324e-03,
955     7.81250000e-03, 9.29068059e-03, 1.10485435e-02, 1.31390065e-02,
956     1.56250000e-02, 1.85813612e-02, 2.20970869e-02, 2.62780130e-02,
957     3.12500000e-02, 3.71627223e-02, 4.41941738e-02, 5.25560260e-02,
958     6.25000000e-02, 7.43254447e-02, 8.83883476e-02, 1.05112052e-01,
959     1.25000000e-01, 1.48650889e-01, 1.76776695e-01, 2.10224104e-01,
960     2.50000000e-01, 2.97301779e-01, 3.53553391e-01, 4.20448208e-01,
961     5.00000000e-01, 5.94603558e-01, 7.07106781e-01, 8.40896415e-01,
962     1.00000000e+00, 1.18920712e+00, 1.41421356e+00, 1.68179283e+00,
963     2.00000000e+00, 2.37841423e+00, 2.82842712e+00, 3.36358566e+00,
964     4.00000000e+00, 4.75682846e+00, 5.65685425e+00, 6.72717132e+00,
965     8.00000000e+00, 9.51365692e+00, 1.13137085e+01, 1.34543426e+01,
966     1.60000000e+01, 1.90273138e+01, 2.26274170e+01, 2.69086853e+01,
967     3.20000000e+01, 3.80546277e+01, 4.52548340e+01, 5.38173706e+01,
968     6.40000000e+01, 7.61092554e+01, 9.05096680e+01, 1.07634741e+02,
969     1.28000000e+02, 1.52218511e+02, 1.81019336e+02, 2.15269482e+02,
970     2.56000000e+02, 3.04437021e+02, 3.62038672e+02, 4.30538965e+02,
971     5.12000000e+02, 6.08874043e+02, 7.24077344e+02, 8.61077929e+02,
972     1.02400000e+03, 1.21774809e+03, 1.44815469e+03, 1.72215586e+03,
973     2.04800000e+03, 2.43549617e+03, 2.89630938e+03, 3.44431172e+03,
974     4.09600000e+03, 4.87099234e+03, 5.79261875e+03, 6.88862343e+03,
975     8.19200000e+03, 9.74198469e+03, 1.15852375e+04, 1.37772469e+04,
976     1.63840000e+04, 1.94839694e+04, 2.31704750e+04, 2.75544937e+04,
977     3.27680000e+04, 3.89679387e+04, 4.63409500e+04, 5.51089875e+04,
978     6.55360000e+04, 7.79358775e+04, 9.26819000e+04, 1.10217975e+05,
979     1.31072000e+05, 1.55871755e+05, 1.85363800e+05, 2.20435950e+05,
980     2.62144000e+05, 3.11743510e+05, 3.70727600e+05, 4.40871900e+05,
981     5.24288000e+05, 6.23487020e+05, 7.41455200e+05, 8.81743800e+05,
982     1.04857600e+06, 1.24697404e+06, 1.48291040e+06, 1.76348760e+06,
983     2.09715200e+06, 2.49394808e+06, 2.96582080e+06, 3.52697520e+06,
984     4.19430400e+06, 4.98789616e+06, 5.93164160e+06, 7.05395040e+06,
985     8.38860800e+06, 9.97579232e+06, 1.18632832e+07, 1.41079008e+07,
986     1.67772160e+07, 1.99515846e+07, 2.37265664e+07, 2.82158016e+07,
987     3.35544320e+07, 3.99031693e+07, 4.74531328e+07, 5.64316032e+07,
988     6.71088640e+07, 7.98063385e+07, 9.49062656e+07, 1.12863206e+08,
989     1.34217728e+08, 1.59612677e+08, 1.89812531e+08, 2.25726413e+08,
990     2.68435456e+08, 3.19225354e+08, 3.79625062e+08, 4.51452825e+08,
991     5.36870912e+08, 6.38450708e+08, 7.59250125e+08, 9.02905651e+08,
992     1.07374182e+09, 1.27690142e+09, 1.51850025e+09, 1.80581130e+09,
993     2.14748365e+09, 2.55380283e+09, 3.03700050e+09, 3.61162260e+09,
994     4.29496730e+09, 5.10760567e+09, 6.07400100e+09, 7.22324521e+09,
995     8.58993459e+09, 1.02152113e+10, 1.21480020e+10, 1.44464904e+10,
996     1.71798692e+10, 2.04304227e+10, 2.42960040e+10, 2.88929808e+10,
997     3.43597384e+10, 4.08608453e+10, 4.85920080e+10, 5.77859616e+10,
998     6.87194767e+10, 8.17216907e+10, 9.71840160e+10, 1.15571923e+11,
999     1.37438953e+11, 1.63443381e+11, 1.94368032e+11, 2.31143847e+11,
1000     2.74877907e+11, 3.26886763e+11, 3.88736064e+11, 4.62287693e+11,
1001     5.49755814e+11, 6.53773525e+11, 7.77472128e+11, 9.24575386e+11,
1002     1.09951163e+12, 1.30754705e+12, 1.55494426e+12, 1.84915077e+12,
1003     2.19902326e+12, 2.61509410e+12, 3.10988851e+12, 3.69830155e+12,
1004     4.39804651e+12, 5.23018820e+12, 6.21977702e+12, 7.39660309e+12,
1005     8.79609302e+12, 1.04603764e+13, 1.24395540e+13, 1.47932062e+13,
1006     1.75921860e+13, 2.09207528e+13, 2.48791081e+13, 2.95864124e+13,
1007     3.51843721e+13, 4.18415056e+13, 4.97582162e+13, 5.91728247e+13,
1008     7.03687442e+13, 8.36830112e+13, 9.95164324e+13, 1.18345649e+14,
1009     1.40737488e+14, 1.67366022e+14, 1.99032865e+14, 2.36691299e+14,
1010     2.81474977e+14, 3.34732045e+14, 3.98065730e+14, 4.73382598e+14,
1011     5.62949953e+14, 6.69464090e+14, 7.96131459e+14, 9.46765196e+14,
1012     1.12589991e+15, 1.33892818e+15, 1.59226292e+15, 1.89353039e+15,
1013     2.25179981e+15, 2.67785636e+15, 3.18452584e+15, 3.78706078e+15,
1014     4.50359963e+15, 5.35571272e+15, 6.36905167e+15, 7.57412156e+15,
1015     9.00719925e+15, 1.07114254e+16, 1.27381033e+16, 1.51482431e+16,
1016     1.80143985e+16, 2.14228509e+16, 2.54762067e+16, 3.02964863e+16,
1017     3.60287970e+16, 4.28457018e+16, 5.09524134e+16, 6.05929725e+16,
1018     7.20575940e+16, 8.56914035e+16, 1.01904827e+17, 1.21185945e+17,
1019 };
1020
1021 #else
1022
1023 float ff_aac_pow2sf_tab[428];
1024
1025 #endif /* CONFIG_HARDCODED_TABLES */