Fix perceptual noise shaping scaling including an oversight of the offset for
[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 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 };
41
42 const uint8_t ff_aac_num_swb_128[] = {
43     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15
44 };
45
46 const uint32_t ff_aac_scalefactor_code[121] = {
47     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
48     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
49     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
50     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
51     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
52     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
53     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
54     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
55     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
56     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
57     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
58     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
59     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
60     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
61     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
62     0x7fff3,
63 };
64
65 const uint8_t ff_aac_scalefactor_bits[121] = {
66     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
67     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
68     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
69     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
70      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
71     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
72     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
73     19, 19, 19, 19, 19, 19, 19, 19, 19,
74 };
75
76 static const uint16_t codes1[81] = {
77     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
78     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
79     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
80     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
81     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
82     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
83     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
84     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
85     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
86     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
87     0x7f4,
88 };
89
90 static const uint8_t bits1[81] = {
91     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
92      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
93      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
94      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
95      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
96     11,
97 };
98
99 static const uint16_t codes2[81] = {
100     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
101     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
102     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
103     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
104     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
105     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
106     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
107     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
108     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
109     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
110     0x1f6,
111 };
112
113 static const uint8_t bits2[81] = {
114     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
115     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
116     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
117     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
118     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
119     9,
120 };
121
122 static const uint16_t codes3[81] = {
123     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
124     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
125     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
126     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
127     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
128     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
129     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
130     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
131     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
132     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
133     0x7ffa,
134 };
135
136 static const uint8_t bits3[81] = {
137      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
138      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
139     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
140      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
141     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
142     15,
143 };
144
145 static const uint16_t codes4[81] = {
146     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
147     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
148     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
149     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
150     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
151     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
152     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
153     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
154     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
155     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
156     0x7fc,
157 };
158
159 static const uint8_t bits4[81] = {
160      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
161      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
162      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
163      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
164      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
165     11,
166 };
167
168 static const uint16_t codes5[81] = {
169     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
170     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
171     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
172     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
173     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
174     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
175     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
176     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
177     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
178     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
179     0x1ffe,
180 };
181
182 static const uint8_t bits5[81] = {
183     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
184     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
185      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
186      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
187     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
188     13,
189 };
190
191 static const uint16_t codes6[81] = {
192     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
193     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
194     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
195     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
196     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
197     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
198     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
199     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
200     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
201     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
202     0x7fc,
203 };
204
205 static const uint8_t bits6[81] = {
206     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
207      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
208      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
209      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
210      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
211     11,
212 };
213
214 static const uint16_t codes7[64] = {
215     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
216     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
217     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
218     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
219     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
220     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
221     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
222     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
223 };
224
225 static const uint8_t bits7[64] = {
226      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
227      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
228      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
229     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
230 };
231
232 static const uint16_t codes8[64] = {
233     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
234     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
235     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
236     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
237     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
238     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
239     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
240     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
241 };
242
243 static const uint8_t bits8[64] = {
244      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
245      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
246      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
247      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
248 };
249
250 static const uint16_t codes9[169] = {
251     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
252     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
253     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
254     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
255     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
256     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
257     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
258     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
259     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
260     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
261     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
262     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
263     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
264     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
265     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
266     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
267     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
268     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
269     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
270     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
271     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
272     0x7fff,
273 };
274
275 static const uint8_t bits9[169] = {
276      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
277      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
278     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
279     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
280     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
281     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
282     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
283     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
284     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
285     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
286     13, 13, 13, 13, 14, 14, 14, 14, 15,
287 };
288
289 static const uint16_t codes10[169] = {
290     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
291     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
292     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
293     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
294     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
295     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
296     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
297     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
298     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
299     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
300     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
301     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
302     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
303     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
304     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
305     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
306     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
307     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
308     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
309     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
310     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
311     0xfff,
312 };
313
314 static const uint8_t bits10[169] = {
315      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
316      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
317      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
318      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
319     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
320      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
321      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
322     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
323     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
324     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
325     10, 10, 10, 11, 11, 12, 12, 12, 12,
326 };
327
328 static const uint16_t codes11[289] = {
329     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
330     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
331     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
332     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
333     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
334     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
335     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
336     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
337     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
338     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
339     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
340     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
341     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
342     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
343     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
344     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
345     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
346     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
347     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
348     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
349     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
350     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
351     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
352     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
353     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
354     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
355     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
356     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
357     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
358     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
359     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
360     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
361     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
362     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
363     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
364     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
365     0x004,
366 };
367
368 static const uint8_t bits11[289] = {
369      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
370     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
371     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
372     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
373     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
374     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
375      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
376      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
377      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
378      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
379      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
380      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
381      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
382     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
383      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
384     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
385     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
386      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
387      5,
388 };
389
390 const uint16_t * const ff_aac_spectral_codes[11] = {
391     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
392     codes9, codes10, codes11,
393 };
394
395 const uint8_t * const ff_aac_spectral_bits[11] = {
396     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
397     bits9, bits10, bits11,
398 };
399
400 const uint16_t ff_aac_spectral_sizes[11] = {
401     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
402 };
403
404 /* NOTE:
405  * 64.0f is a special value indicating the existence of an escape code in the
406  * bitstream.
407  */
408 static const float codebook_vector0[324] = {
409  -1.0000000, -1.0000000, -1.0000000, -1.0000000,
410  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
411  -1.0000000, -1.0000000, -1.0000000,  1.0000000,
412  -1.0000000, -1.0000000,  0.0000000, -1.0000000,
413  -1.0000000, -1.0000000,  0.0000000,  0.0000000,
414  -1.0000000, -1.0000000,  0.0000000,  1.0000000,
415  -1.0000000, -1.0000000,  1.0000000, -1.0000000,
416  -1.0000000, -1.0000000,  1.0000000,  0.0000000,
417  -1.0000000, -1.0000000,  1.0000000,  1.0000000,
418  -1.0000000,  0.0000000, -1.0000000, -1.0000000,
419  -1.0000000,  0.0000000, -1.0000000,  0.0000000,
420  -1.0000000,  0.0000000, -1.0000000,  1.0000000,
421  -1.0000000,  0.0000000,  0.0000000, -1.0000000,
422  -1.0000000,  0.0000000,  0.0000000,  0.0000000,
423  -1.0000000,  0.0000000,  0.0000000,  1.0000000,
424  -1.0000000,  0.0000000,  1.0000000, -1.0000000,
425  -1.0000000,  0.0000000,  1.0000000,  0.0000000,
426  -1.0000000,  0.0000000,  1.0000000,  1.0000000,
427  -1.0000000,  1.0000000, -1.0000000, -1.0000000,
428  -1.0000000,  1.0000000, -1.0000000,  0.0000000,
429  -1.0000000,  1.0000000, -1.0000000,  1.0000000,
430  -1.0000000,  1.0000000,  0.0000000, -1.0000000,
431  -1.0000000,  1.0000000,  0.0000000,  0.0000000,
432  -1.0000000,  1.0000000,  0.0000000,  1.0000000,
433  -1.0000000,  1.0000000,  1.0000000, -1.0000000,
434  -1.0000000,  1.0000000,  1.0000000,  0.0000000,
435  -1.0000000,  1.0000000,  1.0000000,  1.0000000,
436   0.0000000, -1.0000000, -1.0000000, -1.0000000,
437   0.0000000, -1.0000000, -1.0000000,  0.0000000,
438   0.0000000, -1.0000000, -1.0000000,  1.0000000,
439   0.0000000, -1.0000000,  0.0000000, -1.0000000,
440   0.0000000, -1.0000000,  0.0000000,  0.0000000,
441   0.0000000, -1.0000000,  0.0000000,  1.0000000,
442   0.0000000, -1.0000000,  1.0000000, -1.0000000,
443   0.0000000, -1.0000000,  1.0000000,  0.0000000,
444   0.0000000, -1.0000000,  1.0000000,  1.0000000,
445   0.0000000,  0.0000000, -1.0000000, -1.0000000,
446   0.0000000,  0.0000000, -1.0000000,  0.0000000,
447   0.0000000,  0.0000000, -1.0000000,  1.0000000,
448   0.0000000,  0.0000000,  0.0000000, -1.0000000,
449   0.0000000,  0.0000000,  0.0000000,  0.0000000,
450   0.0000000,  0.0000000,  0.0000000,  1.0000000,
451   0.0000000,  0.0000000,  1.0000000, -1.0000000,
452   0.0000000,  0.0000000,  1.0000000,  0.0000000,
453   0.0000000,  0.0000000,  1.0000000,  1.0000000,
454   0.0000000,  1.0000000, -1.0000000, -1.0000000,
455   0.0000000,  1.0000000, -1.0000000,  0.0000000,
456   0.0000000,  1.0000000, -1.0000000,  1.0000000,
457   0.0000000,  1.0000000,  0.0000000, -1.0000000,
458   0.0000000,  1.0000000,  0.0000000,  0.0000000,
459   0.0000000,  1.0000000,  0.0000000,  1.0000000,
460   0.0000000,  1.0000000,  1.0000000, -1.0000000,
461   0.0000000,  1.0000000,  1.0000000,  0.0000000,
462   0.0000000,  1.0000000,  1.0000000,  1.0000000,
463   1.0000000, -1.0000000, -1.0000000, -1.0000000,
464   1.0000000, -1.0000000, -1.0000000,  0.0000000,
465   1.0000000, -1.0000000, -1.0000000,  1.0000000,
466   1.0000000, -1.0000000,  0.0000000, -1.0000000,
467   1.0000000, -1.0000000,  0.0000000,  0.0000000,
468   1.0000000, -1.0000000,  0.0000000,  1.0000000,
469   1.0000000, -1.0000000,  1.0000000, -1.0000000,
470   1.0000000, -1.0000000,  1.0000000,  0.0000000,
471   1.0000000, -1.0000000,  1.0000000,  1.0000000,
472   1.0000000,  0.0000000, -1.0000000, -1.0000000,
473   1.0000000,  0.0000000, -1.0000000,  0.0000000,
474   1.0000000,  0.0000000, -1.0000000,  1.0000000,
475   1.0000000,  0.0000000,  0.0000000, -1.0000000,
476   1.0000000,  0.0000000,  0.0000000,  0.0000000,
477   1.0000000,  0.0000000,  0.0000000,  1.0000000,
478   1.0000000,  0.0000000,  1.0000000, -1.0000000,
479   1.0000000,  0.0000000,  1.0000000,  0.0000000,
480   1.0000000,  0.0000000,  1.0000000,  1.0000000,
481   1.0000000,  1.0000000, -1.0000000, -1.0000000,
482   1.0000000,  1.0000000, -1.0000000,  0.0000000,
483   1.0000000,  1.0000000, -1.0000000,  1.0000000,
484   1.0000000,  1.0000000,  0.0000000, -1.0000000,
485   1.0000000,  1.0000000,  0.0000000,  0.0000000,
486   1.0000000,  1.0000000,  0.0000000,  1.0000000,
487   1.0000000,  1.0000000,  1.0000000, -1.0000000,
488   1.0000000,  1.0000000,  1.0000000,  0.0000000,
489   1.0000000,  1.0000000,  1.0000000,  1.0000000,
490 };
491
492 static const float codebook_vector2[324] = {
493   0.0000000,  0.0000000,  0.0000000,  0.0000000,
494   0.0000000,  0.0000000,  0.0000000,  1.0000000,
495   0.0000000,  0.0000000,  0.0000000,  2.5198421,
496   0.0000000,  0.0000000,  1.0000000,  0.0000000,
497   0.0000000,  0.0000000,  1.0000000,  1.0000000,
498   0.0000000,  0.0000000,  1.0000000,  2.5198421,
499   0.0000000,  0.0000000,  2.5198421,  0.0000000,
500   0.0000000,  0.0000000,  2.5198421,  1.0000000,
501   0.0000000,  0.0000000,  2.5198421,  2.5198421,
502   0.0000000,  1.0000000,  0.0000000,  0.0000000,
503   0.0000000,  1.0000000,  0.0000000,  1.0000000,
504   0.0000000,  1.0000000,  0.0000000,  2.5198421,
505   0.0000000,  1.0000000,  1.0000000,  0.0000000,
506   0.0000000,  1.0000000,  1.0000000,  1.0000000,
507   0.0000000,  1.0000000,  1.0000000,  2.5198421,
508   0.0000000,  1.0000000,  2.5198421,  0.0000000,
509   0.0000000,  1.0000000,  2.5198421,  1.0000000,
510   0.0000000,  1.0000000,  2.5198421,  2.5198421,
511   0.0000000,  2.5198421,  0.0000000,  0.0000000,
512   0.0000000,  2.5198421,  0.0000000,  1.0000000,
513   0.0000000,  2.5198421,  0.0000000,  2.5198421,
514   0.0000000,  2.5198421,  1.0000000,  0.0000000,
515   0.0000000,  2.5198421,  1.0000000,  1.0000000,
516   0.0000000,  2.5198421,  1.0000000,  2.5198421,
517   0.0000000,  2.5198421,  2.5198421,  0.0000000,
518   0.0000000,  2.5198421,  2.5198421,  1.0000000,
519   0.0000000,  2.5198421,  2.5198421,  2.5198421,
520   1.0000000,  0.0000000,  0.0000000,  0.0000000,
521   1.0000000,  0.0000000,  0.0000000,  1.0000000,
522   1.0000000,  0.0000000,  0.0000000,  2.5198421,
523   1.0000000,  0.0000000,  1.0000000,  0.0000000,
524   1.0000000,  0.0000000,  1.0000000,  1.0000000,
525   1.0000000,  0.0000000,  1.0000000,  2.5198421,
526   1.0000000,  0.0000000,  2.5198421,  0.0000000,
527   1.0000000,  0.0000000,  2.5198421,  1.0000000,
528   1.0000000,  0.0000000,  2.5198421,  2.5198421,
529   1.0000000,  1.0000000,  0.0000000,  0.0000000,
530   1.0000000,  1.0000000,  0.0000000,  1.0000000,
531   1.0000000,  1.0000000,  0.0000000,  2.5198421,
532   1.0000000,  1.0000000,  1.0000000,  0.0000000,
533   1.0000000,  1.0000000,  1.0000000,  1.0000000,
534   1.0000000,  1.0000000,  1.0000000,  2.5198421,
535   1.0000000,  1.0000000,  2.5198421,  0.0000000,
536   1.0000000,  1.0000000,  2.5198421,  1.0000000,
537   1.0000000,  1.0000000,  2.5198421,  2.5198421,
538   1.0000000,  2.5198421,  0.0000000,  0.0000000,
539   1.0000000,  2.5198421,  0.0000000,  1.0000000,
540   1.0000000,  2.5198421,  0.0000000,  2.5198421,
541   1.0000000,  2.5198421,  1.0000000,  0.0000000,
542   1.0000000,  2.5198421,  1.0000000,  1.0000000,
543   1.0000000,  2.5198421,  1.0000000,  2.5198421,
544   1.0000000,  2.5198421,  2.5198421,  0.0000000,
545   1.0000000,  2.5198421,  2.5198421,  1.0000000,
546   1.0000000,  2.5198421,  2.5198421,  2.5198421,
547   2.5198421,  0.0000000,  0.0000000,  0.0000000,
548   2.5198421,  0.0000000,  0.0000000,  1.0000000,
549   2.5198421,  0.0000000,  0.0000000,  2.5198421,
550   2.5198421,  0.0000000,  1.0000000,  0.0000000,
551   2.5198421,  0.0000000,  1.0000000,  1.0000000,
552   2.5198421,  0.0000000,  1.0000000,  2.5198421,
553   2.5198421,  0.0000000,  2.5198421,  0.0000000,
554   2.5198421,  0.0000000,  2.5198421,  1.0000000,
555   2.5198421,  0.0000000,  2.5198421,  2.5198421,
556   2.5198421,  1.0000000,  0.0000000,  0.0000000,
557   2.5198421,  1.0000000,  0.0000000,  1.0000000,
558   2.5198421,  1.0000000,  0.0000000,  2.5198421,
559   2.5198421,  1.0000000,  1.0000000,  0.0000000,
560   2.5198421,  1.0000000,  1.0000000,  1.0000000,
561   2.5198421,  1.0000000,  1.0000000,  2.5198421,
562   2.5198421,  1.0000000,  2.5198421,  0.0000000,
563   2.5198421,  1.0000000,  2.5198421,  1.0000000,
564   2.5198421,  1.0000000,  2.5198421,  2.5198421,
565   2.5198421,  2.5198421,  0.0000000,  0.0000000,
566   2.5198421,  2.5198421,  0.0000000,  1.0000000,
567   2.5198421,  2.5198421,  0.0000000,  2.5198421,
568   2.5198421,  2.5198421,  1.0000000,  0.0000000,
569   2.5198421,  2.5198421,  1.0000000,  1.0000000,
570   2.5198421,  2.5198421,  1.0000000,  2.5198421,
571   2.5198421,  2.5198421,  2.5198421,  0.0000000,
572   2.5198421,  2.5198421,  2.5198421,  1.0000000,
573   2.5198421,  2.5198421,  2.5198421,  2.5198421,
574 };
575
576 static const float codebook_vector4[162] = {
577  -6.3496042, -6.3496042, -6.3496042, -4.3267487,
578  -6.3496042, -2.5198421, -6.3496042, -1.0000000,
579  -6.3496042,  0.0000000, -6.3496042,  1.0000000,
580  -6.3496042,  2.5198421, -6.3496042,  4.3267487,
581  -6.3496042,  6.3496042, -4.3267487, -6.3496042,
582  -4.3267487, -4.3267487, -4.3267487, -2.5198421,
583  -4.3267487, -1.0000000, -4.3267487,  0.0000000,
584  -4.3267487,  1.0000000, -4.3267487,  2.5198421,
585  -4.3267487,  4.3267487, -4.3267487,  6.3496042,
586  -2.5198421, -6.3496042, -2.5198421, -4.3267487,
587  -2.5198421, -2.5198421, -2.5198421, -1.0000000,
588  -2.5198421,  0.0000000, -2.5198421,  1.0000000,
589  -2.5198421,  2.5198421, -2.5198421,  4.3267487,
590  -2.5198421,  6.3496042, -1.0000000, -6.3496042,
591  -1.0000000, -4.3267487, -1.0000000, -2.5198421,
592  -1.0000000, -1.0000000, -1.0000000,  0.0000000,
593  -1.0000000,  1.0000000, -1.0000000,  2.5198421,
594  -1.0000000,  4.3267487, -1.0000000,  6.3496042,
595   0.0000000, -6.3496042,  0.0000000, -4.3267487,
596   0.0000000, -2.5198421,  0.0000000, -1.0000000,
597   0.0000000,  0.0000000,  0.0000000,  1.0000000,
598   0.0000000,  2.5198421,  0.0000000,  4.3267487,
599   0.0000000,  6.3496042,  1.0000000, -6.3496042,
600   1.0000000, -4.3267487,  1.0000000, -2.5198421,
601   1.0000000, -1.0000000,  1.0000000,  0.0000000,
602   1.0000000,  1.0000000,  1.0000000,  2.5198421,
603   1.0000000,  4.3267487,  1.0000000,  6.3496042,
604   2.5198421, -6.3496042,  2.5198421, -4.3267487,
605   2.5198421, -2.5198421,  2.5198421, -1.0000000,
606   2.5198421,  0.0000000,  2.5198421,  1.0000000,
607   2.5198421,  2.5198421,  2.5198421,  4.3267487,
608   2.5198421,  6.3496042,  4.3267487, -6.3496042,
609   4.3267487, -4.3267487,  4.3267487, -2.5198421,
610   4.3267487, -1.0000000,  4.3267487,  0.0000000,
611   4.3267487,  1.0000000,  4.3267487,  2.5198421,
612   4.3267487,  4.3267487,  4.3267487,  6.3496042,
613   6.3496042, -6.3496042,  6.3496042, -4.3267487,
614   6.3496042, -2.5198421,  6.3496042, -1.0000000,
615   6.3496042,  0.0000000,  6.3496042,  1.0000000,
616   6.3496042,  2.5198421,  6.3496042,  4.3267487,
617   6.3496042,  6.3496042,
618 };
619
620 static const float codebook_vector6[128] = {
621   0.0000000,  0.0000000,  0.0000000,  1.0000000,
622   0.0000000,  2.5198421,  0.0000000,  4.3267487,
623   0.0000000,  6.3496042,  0.0000000,  8.5498797,
624   0.0000000, 10.9027236,  0.0000000, 13.3905183,
625   1.0000000,  0.0000000,  1.0000000,  1.0000000,
626   1.0000000,  2.5198421,  1.0000000,  4.3267487,
627   1.0000000,  6.3496042,  1.0000000,  8.5498797,
628   1.0000000, 10.9027236,  1.0000000, 13.3905183,
629   2.5198421,  0.0000000,  2.5198421,  1.0000000,
630   2.5198421,  2.5198421,  2.5198421,  4.3267487,
631   2.5198421,  6.3496042,  2.5198421,  8.5498797,
632   2.5198421, 10.9027236,  2.5198421, 13.3905183,
633   4.3267487,  0.0000000,  4.3267487,  1.0000000,
634   4.3267487,  2.5198421,  4.3267487,  4.3267487,
635   4.3267487,  6.3496042,  4.3267487,  8.5498797,
636   4.3267487, 10.9027236,  4.3267487, 13.3905183,
637   6.3496042,  0.0000000,  6.3496042,  1.0000000,
638   6.3496042,  2.5198421,  6.3496042,  4.3267487,
639   6.3496042,  6.3496042,  6.3496042,  8.5498797,
640   6.3496042, 10.9027236,  6.3496042, 13.3905183,
641   8.5498797,  0.0000000,  8.5498797,  1.0000000,
642   8.5498797,  2.5198421,  8.5498797,  4.3267487,
643   8.5498797,  6.3496042,  8.5498797,  8.5498797,
644   8.5498797, 10.9027236,  8.5498797, 13.3905183,
645  10.9027236,  0.0000000, 10.9027236,  1.0000000,
646  10.9027236,  2.5198421, 10.9027236,  4.3267487,
647  10.9027236,  6.3496042, 10.9027236,  8.5498797,
648  10.9027236, 10.9027236, 10.9027236, 13.3905183,
649  13.3905183,  0.0000000, 13.3905183,  1.0000000,
650  13.3905183,  2.5198421, 13.3905183,  4.3267487,
651  13.3905183,  6.3496042, 13.3905183,  8.5498797,
652  13.3905183, 10.9027236, 13.3905183, 13.3905183,
653 };
654
655 static const float codebook_vector8[338] = {
656   0.0000000,  0.0000000,  0.0000000,  1.0000000,
657   0.0000000,  2.5198421,  0.0000000,  4.3267487,
658   0.0000000,  6.3496042,  0.0000000,  8.5498797,
659   0.0000000, 10.9027236,  0.0000000, 13.3905183,
660   0.0000000, 16.0000000,  0.0000000, 18.7207544,
661   0.0000000, 21.5443469,  0.0000000, 24.4637810,
662   0.0000000, 27.4731418,  1.0000000,  0.0000000,
663   1.0000000,  1.0000000,  1.0000000,  2.5198421,
664   1.0000000,  4.3267487,  1.0000000,  6.3496042,
665   1.0000000,  8.5498797,  1.0000000, 10.9027236,
666   1.0000000, 13.3905183,  1.0000000, 16.0000000,
667   1.0000000, 18.7207544,  1.0000000, 21.5443469,
668   1.0000000, 24.4637810,  1.0000000, 27.4731418,
669   2.5198421,  0.0000000,  2.5198421,  1.0000000,
670   2.5198421,  2.5198421,  2.5198421,  4.3267487,
671   2.5198421,  6.3496042,  2.5198421,  8.5498797,
672   2.5198421, 10.9027236,  2.5198421, 13.3905183,
673   2.5198421, 16.0000000,  2.5198421, 18.7207544,
674   2.5198421, 21.5443469,  2.5198421, 24.4637810,
675   2.5198421, 27.4731418,  4.3267487,  0.0000000,
676   4.3267487,  1.0000000,  4.3267487,  2.5198421,
677   4.3267487,  4.3267487,  4.3267487,  6.3496042,
678   4.3267487,  8.5498797,  4.3267487, 10.9027236,
679   4.3267487, 13.3905183,  4.3267487, 16.0000000,
680   4.3267487, 18.7207544,  4.3267487, 21.5443469,
681   4.3267487, 24.4637810,  4.3267487, 27.4731418,
682   6.3496042,  0.0000000,  6.3496042,  1.0000000,
683   6.3496042,  2.5198421,  6.3496042,  4.3267487,
684   6.3496042,  6.3496042,  6.3496042,  8.5498797,
685   6.3496042, 10.9027236,  6.3496042, 13.3905183,
686   6.3496042, 16.0000000,  6.3496042, 18.7207544,
687   6.3496042, 21.5443469,  6.3496042, 24.4637810,
688   6.3496042, 27.4731418,  8.5498797,  0.0000000,
689   8.5498797,  1.0000000,  8.5498797,  2.5198421,
690   8.5498797,  4.3267487,  8.5498797,  6.3496042,
691   8.5498797,  8.5498797,  8.5498797, 10.9027236,
692   8.5498797, 13.3905183,  8.5498797, 16.0000000,
693   8.5498797, 18.7207544,  8.5498797, 21.5443469,
694   8.5498797, 24.4637810,  8.5498797, 27.4731418,
695  10.9027236,  0.0000000, 10.9027236,  1.0000000,
696  10.9027236,  2.5198421, 10.9027236,  4.3267487,
697  10.9027236,  6.3496042, 10.9027236,  8.5498797,
698  10.9027236, 10.9027236, 10.9027236, 13.3905183,
699  10.9027236, 16.0000000, 10.9027236, 18.7207544,
700  10.9027236, 21.5443469, 10.9027236, 24.4637810,
701  10.9027236, 27.4731418, 13.3905183,  0.0000000,
702  13.3905183,  1.0000000, 13.3905183,  2.5198421,
703  13.3905183,  4.3267487, 13.3905183,  6.3496042,
704  13.3905183,  8.5498797, 13.3905183, 10.9027236,
705  13.3905183, 13.3905183, 13.3905183, 16.0000000,
706  13.3905183, 18.7207544, 13.3905183, 21.5443469,
707  13.3905183, 24.4637810, 13.3905183, 27.4731418,
708  16.0000000,  0.0000000, 16.0000000,  1.0000000,
709  16.0000000,  2.5198421, 16.0000000,  4.3267487,
710  16.0000000,  6.3496042, 16.0000000,  8.5498797,
711  16.0000000, 10.9027236, 16.0000000, 13.3905183,
712  16.0000000, 16.0000000, 16.0000000, 18.7207544,
713  16.0000000, 21.5443469, 16.0000000, 24.4637810,
714  16.0000000, 27.4731418, 18.7207544,  0.0000000,
715  18.7207544,  1.0000000, 18.7207544,  2.5198421,
716  18.7207544,  4.3267487, 18.7207544,  6.3496042,
717  18.7207544,  8.5498797, 18.7207544, 10.9027236,
718  18.7207544, 13.3905183, 18.7207544, 16.0000000,
719  18.7207544, 18.7207544, 18.7207544, 21.5443469,
720  18.7207544, 24.4637810, 18.7207544, 27.4731418,
721  21.5443469,  0.0000000, 21.5443469,  1.0000000,
722  21.5443469,  2.5198421, 21.5443469,  4.3267487,
723  21.5443469,  6.3496042, 21.5443469,  8.5498797,
724  21.5443469, 10.9027236, 21.5443469, 13.3905183,
725  21.5443469, 16.0000000, 21.5443469, 18.7207544,
726  21.5443469, 21.5443469, 21.5443469, 24.4637810,
727  21.5443469, 27.4731418, 24.4637810,  0.0000000,
728  24.4637810,  1.0000000, 24.4637810,  2.5198421,
729  24.4637810,  4.3267487, 24.4637810,  6.3496042,
730  24.4637810,  8.5498797, 24.4637810, 10.9027236,
731  24.4637810, 13.3905183, 24.4637810, 16.0000000,
732  24.4637810, 18.7207544, 24.4637810, 21.5443469,
733  24.4637810, 24.4637810, 24.4637810, 27.4731418,
734  27.4731418,  0.0000000, 27.4731418,  1.0000000,
735  27.4731418,  2.5198421, 27.4731418,  4.3267487,
736  27.4731418,  6.3496042, 27.4731418,  8.5498797,
737  27.4731418, 10.9027236, 27.4731418, 13.3905183,
738  27.4731418, 16.0000000, 27.4731418, 18.7207544,
739  27.4731418, 21.5443469, 27.4731418, 24.4637810,
740  27.4731418, 27.4731418,
741 };
742
743 static const float codebook_vector10[578] = {
744   0.0000000,  0.0000000,  0.0000000,  1.0000000,
745   0.0000000,  2.5198421,  0.0000000,  4.3267487,
746   0.0000000,  6.3496042,  0.0000000,  8.5498797,
747   0.0000000, 10.9027236,  0.0000000, 13.3905183,
748   0.0000000, 16.0000000,  0.0000000, 18.7207544,
749   0.0000000, 21.5443469,  0.0000000, 24.4637810,
750   0.0000000, 27.4731418,  0.0000000, 30.5673509,
751   0.0000000, 33.7419917,  0.0000000, 36.9931811,
752   0.0000000,      64.0f,  1.0000000,  0.0000000,
753   1.0000000,  1.0000000,  1.0000000,  2.5198421,
754   1.0000000,  4.3267487,  1.0000000,  6.3496042,
755   1.0000000,  8.5498797,  1.0000000, 10.9027236,
756   1.0000000, 13.3905183,  1.0000000, 16.0000000,
757   1.0000000, 18.7207544,  1.0000000, 21.5443469,
758   1.0000000, 24.4637810,  1.0000000, 27.4731418,
759   1.0000000, 30.5673509,  1.0000000, 33.7419917,
760   1.0000000, 36.9931811,  1.0000000,      64.0f,
761   2.5198421,  0.0000000,  2.5198421,  1.0000000,
762   2.5198421,  2.5198421,  2.5198421,  4.3267487,
763   2.5198421,  6.3496042,  2.5198421,  8.5498797,
764   2.5198421, 10.9027236,  2.5198421, 13.3905183,
765   2.5198421, 16.0000000,  2.5198421, 18.7207544,
766   2.5198421, 21.5443469,  2.5198421, 24.4637810,
767   2.5198421, 27.4731418,  2.5198421, 30.5673509,
768   2.5198421, 33.7419917,  2.5198421, 36.9931811,
769   2.5198421,      64.0f,  4.3267487,  0.0000000,
770   4.3267487,  1.0000000,  4.3267487,  2.5198421,
771   4.3267487,  4.3267487,  4.3267487,  6.3496042,
772   4.3267487,  8.5498797,  4.3267487, 10.9027236,
773   4.3267487, 13.3905183,  4.3267487, 16.0000000,
774   4.3267487, 18.7207544,  4.3267487, 21.5443469,
775   4.3267487, 24.4637810,  4.3267487, 27.4731418,
776   4.3267487, 30.5673509,  4.3267487, 33.7419917,
777   4.3267487, 36.9931811,  4.3267487,      64.0f,
778   6.3496042,  0.0000000,  6.3496042,  1.0000000,
779   6.3496042,  2.5198421,  6.3496042,  4.3267487,
780   6.3496042,  6.3496042,  6.3496042,  8.5498797,
781   6.3496042, 10.9027236,  6.3496042, 13.3905183,
782   6.3496042, 16.0000000,  6.3496042, 18.7207544,
783   6.3496042, 21.5443469,  6.3496042, 24.4637810,
784   6.3496042, 27.4731418,  6.3496042, 30.5673509,
785   6.3496042, 33.7419917,  6.3496042, 36.9931811,
786   6.3496042,      64.0f,  8.5498797,  0.0000000,
787   8.5498797,  1.0000000,  8.5498797,  2.5198421,
788   8.5498797,  4.3267487,  8.5498797,  6.3496042,
789   8.5498797,  8.5498797,  8.5498797, 10.9027236,
790   8.5498797, 13.3905183,  8.5498797, 16.0000000,
791   8.5498797, 18.7207544,  8.5498797, 21.5443469,
792   8.5498797, 24.4637810,  8.5498797, 27.4731418,
793   8.5498797, 30.5673509,  8.5498797, 33.7419917,
794   8.5498797, 36.9931811,  8.5498797,      64.0f,
795  10.9027236,  0.0000000, 10.9027236,  1.0000000,
796  10.9027236,  2.5198421, 10.9027236,  4.3267487,
797  10.9027236,  6.3496042, 10.9027236,  8.5498797,
798  10.9027236, 10.9027236, 10.9027236, 13.3905183,
799  10.9027236, 16.0000000, 10.9027236, 18.7207544,
800  10.9027236, 21.5443469, 10.9027236, 24.4637810,
801  10.9027236, 27.4731418, 10.9027236, 30.5673509,
802  10.9027236, 33.7419917, 10.9027236, 36.9931811,
803  10.9027236,      64.0f, 13.3905183,  0.0000000,
804  13.3905183,  1.0000000, 13.3905183,  2.5198421,
805  13.3905183,  4.3267487, 13.3905183,  6.3496042,
806  13.3905183,  8.5498797, 13.3905183, 10.9027236,
807  13.3905183, 13.3905183, 13.3905183, 16.0000000,
808  13.3905183, 18.7207544, 13.3905183, 21.5443469,
809  13.3905183, 24.4637810, 13.3905183, 27.4731418,
810  13.3905183, 30.5673509, 13.3905183, 33.7419917,
811  13.3905183, 36.9931811, 13.3905183,      64.0f,
812  16.0000000,  0.0000000, 16.0000000,  1.0000000,
813  16.0000000,  2.5198421, 16.0000000,  4.3267487,
814  16.0000000,  6.3496042, 16.0000000,  8.5498797,
815  16.0000000, 10.9027236, 16.0000000, 13.3905183,
816  16.0000000, 16.0000000, 16.0000000, 18.7207544,
817  16.0000000, 21.5443469, 16.0000000, 24.4637810,
818  16.0000000, 27.4731418, 16.0000000, 30.5673509,
819  16.0000000, 33.7419917, 16.0000000, 36.9931811,
820  16.0000000,      64.0f, 18.7207544,  0.0000000,
821  18.7207544,  1.0000000, 18.7207544,  2.5198421,
822  18.7207544,  4.3267487, 18.7207544,  6.3496042,
823  18.7207544,  8.5498797, 18.7207544, 10.9027236,
824  18.7207544, 13.3905183, 18.7207544, 16.0000000,
825  18.7207544, 18.7207544, 18.7207544, 21.5443469,
826  18.7207544, 24.4637810, 18.7207544, 27.4731418,
827  18.7207544, 30.5673509, 18.7207544, 33.7419917,
828  18.7207544, 36.9931811, 18.7207544,      64.0f,
829  21.5443469,  0.0000000, 21.5443469,  1.0000000,
830  21.5443469,  2.5198421, 21.5443469,  4.3267487,
831  21.5443469,  6.3496042, 21.5443469,  8.5498797,
832  21.5443469, 10.9027236, 21.5443469, 13.3905183,
833  21.5443469, 16.0000000, 21.5443469, 18.7207544,
834  21.5443469, 21.5443469, 21.5443469, 24.4637810,
835  21.5443469, 27.4731418, 21.5443469, 30.5673509,
836  21.5443469, 33.7419917, 21.5443469, 36.9931811,
837  21.5443469,      64.0f, 24.4637810,  0.0000000,
838  24.4637810,  1.0000000, 24.4637810,  2.5198421,
839  24.4637810,  4.3267487, 24.4637810,  6.3496042,
840  24.4637810,  8.5498797, 24.4637810, 10.9027236,
841  24.4637810, 13.3905183, 24.4637810, 16.0000000,
842  24.4637810, 18.7207544, 24.4637810, 21.5443469,
843  24.4637810, 24.4637810, 24.4637810, 27.4731418,
844  24.4637810, 30.5673509, 24.4637810, 33.7419917,
845  24.4637810, 36.9931811, 24.4637810,      64.0f,
846  27.4731418,  0.0000000, 27.4731418,  1.0000000,
847  27.4731418,  2.5198421, 27.4731418,  4.3267487,
848  27.4731418,  6.3496042, 27.4731418,  8.5498797,
849  27.4731418, 10.9027236, 27.4731418, 13.3905183,
850  27.4731418, 16.0000000, 27.4731418, 18.7207544,
851  27.4731418, 21.5443469, 27.4731418, 24.4637810,
852  27.4731418, 27.4731418, 27.4731418, 30.5673509,
853  27.4731418, 33.7419917, 27.4731418, 36.9931811,
854  27.4731418,      64.0f, 30.5673509,  0.0000000,
855  30.5673509,  1.0000000, 30.5673509,  2.5198421,
856  30.5673509,  4.3267487, 30.5673509,  6.3496042,
857  30.5673509,  8.5498797, 30.5673509, 10.9027236,
858  30.5673509, 13.3905183, 30.5673509, 16.0000000,
859  30.5673509, 18.7207544, 30.5673509, 21.5443469,
860  30.5673509, 24.4637810, 30.5673509, 27.4731418,
861  30.5673509, 30.5673509, 30.5673509, 33.7419917,
862  30.5673509, 36.9931811, 30.5673509,      64.0f,
863  33.7419917,  0.0000000, 33.7419917,  1.0000000,
864  33.7419917,  2.5198421, 33.7419917,  4.3267487,
865  33.7419917,  6.3496042, 33.7419917,  8.5498797,
866  33.7419917, 10.9027236, 33.7419917, 13.3905183,
867  33.7419917, 16.0000000, 33.7419917, 18.7207544,
868  33.7419917, 21.5443469, 33.7419917, 24.4637810,
869  33.7419917, 27.4731418, 33.7419917, 30.5673509,
870  33.7419917, 33.7419917, 33.7419917, 36.9931811,
871  33.7419917,      64.0f, 36.9931811,  0.0000000,
872  36.9931811,  1.0000000, 36.9931811,  2.5198421,
873  36.9931811,  4.3267487, 36.9931811,  6.3496042,
874  36.9931811,  8.5498797, 36.9931811, 10.9027236,
875  36.9931811, 13.3905183, 36.9931811, 16.0000000,
876  36.9931811, 18.7207544, 36.9931811, 21.5443469,
877  36.9931811, 24.4637810, 36.9931811, 27.4731418,
878  36.9931811, 30.5673509, 36.9931811, 33.7419917,
879  36.9931811, 36.9931811, 36.9931811,      64.0f,
880       64.0f,  0.0000000,      64.0f,  1.0000000,
881       64.0f,  2.5198421,      64.0f,  4.3267487,
882       64.0f,  6.3496042,      64.0f,  8.5498797,
883       64.0f, 10.9027236,      64.0f, 13.3905183,
884       64.0f, 16.0000000,      64.0f, 18.7207544,
885       64.0f, 21.5443469,      64.0f, 24.4637810,
886       64.0f, 27.4731418,      64.0f, 30.5673509,
887       64.0f, 33.7419917,      64.0f, 36.9931811,
888       64.0f,      64.0f,
889 };
890
891 const float * const ff_aac_codebook_vectors[] = {
892     codebook_vector0, codebook_vector0, codebook_vector2,
893     codebook_vector2, codebook_vector4, codebook_vector4,
894     codebook_vector6, codebook_vector6, codebook_vector8,
895     codebook_vector8, codebook_vector10,
896 };
897
898 #ifdef CONFIG_HARDCODED_TABLES
899
900 /**
901  * Table of pow(2, (i - 200)/4.) used for different purposes depending on the
902  * range of indices to the table:
903  * [ 0, 255] scale factor decoding when using C dsp.float_to_int16
904  * [60, 315] scale factor decoding when using SIMD dsp.float_to_int16
905  * [45, 300] intensity stereo position decoding mapped in reverse order i.e. 0->300, 1->299, ..., 254->46, 255->45
906  */
907 const float ff_aac_pow2sf_tab[428] = {
908     8.88178420e-16, 1.05622810e-15, 1.25607397e-15, 1.49373210e-15,
909     1.77635684e-15, 2.11245619e-15, 2.51214793e-15, 2.98746420e-15,
910     3.55271368e-15, 4.22491238e-15, 5.02429587e-15, 5.97492839e-15,
911     7.10542736e-15, 8.44982477e-15, 1.00485917e-14, 1.19498568e-14,
912     1.42108547e-14, 1.68996495e-14, 2.00971835e-14, 2.38997136e-14,
913     2.84217094e-14, 3.37992991e-14, 4.01943669e-14, 4.77994272e-14,
914     5.68434189e-14, 6.75985982e-14, 8.03887339e-14, 9.55988543e-14,
915     1.13686838e-13, 1.35197196e-13, 1.60777468e-13, 1.91197709e-13,
916     2.27373675e-13, 2.70394393e-13, 3.21554936e-13, 3.82395417e-13,
917     4.54747351e-13, 5.40788785e-13, 6.43109871e-13, 7.64790834e-13,
918     9.09494702e-13, 1.08157757e-12, 1.28621974e-12, 1.52958167e-12,
919     1.81898940e-12, 2.16315514e-12, 2.57243948e-12, 3.05916334e-12,
920     3.63797881e-12, 4.32631028e-12, 5.14487897e-12, 6.11832668e-12,
921     7.27595761e-12, 8.65262056e-12, 1.02897579e-11, 1.22366534e-11,
922     1.45519152e-11, 1.73052411e-11, 2.05795159e-11, 2.44733067e-11,
923     2.91038305e-11, 3.46104823e-11, 4.11590317e-11, 4.89466134e-11,
924     5.82076609e-11, 6.92209645e-11, 8.23180635e-11, 9.78932268e-11,
925     1.16415322e-10, 1.38441929e-10, 1.64636127e-10, 1.95786454e-10,
926     2.32830644e-10, 2.76883858e-10, 3.29272254e-10, 3.91572907e-10,
927     4.65661287e-10, 5.53767716e-10, 6.58544508e-10, 7.83145814e-10,
928     9.31322575e-10, 1.10753543e-09, 1.31708902e-09, 1.56629163e-09,
929     1.86264515e-09, 2.21507086e-09, 2.63417803e-09, 3.13258326e-09,
930     3.72529030e-09, 4.43014173e-09, 5.26835606e-09, 6.26516652e-09,
931     7.45058060e-09, 8.86028346e-09, 1.05367121e-08, 1.25303330e-08,
932     1.49011612e-08, 1.77205669e-08, 2.10734243e-08, 2.50606661e-08,
933     2.98023224e-08, 3.54411338e-08, 4.21468485e-08, 5.01213321e-08,
934     5.96046448e-08, 7.08822677e-08, 8.42936970e-08, 1.00242664e-07,
935     1.19209290e-07, 1.41764535e-07, 1.68587394e-07, 2.00485328e-07,
936     2.38418579e-07, 2.83529071e-07, 3.37174788e-07, 4.00970657e-07,
937     4.76837158e-07, 5.67058141e-07, 6.74349576e-07, 8.01941314e-07,
938     9.53674316e-07, 1.13411628e-06, 1.34869915e-06, 1.60388263e-06,
939     1.90734863e-06, 2.26823256e-06, 2.69739830e-06, 3.20776526e-06,
940     3.81469727e-06, 4.53646513e-06, 5.39479661e-06, 6.41553051e-06,
941     7.62939453e-06, 9.07293026e-06, 1.07895932e-05, 1.28310610e-05,
942     1.52587891e-05, 1.81458605e-05, 2.15791864e-05, 2.56621220e-05,
943     3.05175781e-05, 3.62917210e-05, 4.31583729e-05, 5.13242441e-05,
944     6.10351562e-05, 7.25834421e-05, 8.63167458e-05, 1.02648488e-04,
945     1.22070312e-04, 1.45166884e-04, 1.72633492e-04, 2.05296976e-04,
946     2.44140625e-04, 2.90333768e-04, 3.45266983e-04, 4.10593953e-04,
947     4.88281250e-04, 5.80667537e-04, 6.90533966e-04, 8.21187906e-04,
948     9.76562500e-04, 1.16133507e-03, 1.38106793e-03, 1.64237581e-03,
949     1.95312500e-03, 2.32267015e-03, 2.76213586e-03, 3.28475162e-03,
950     3.90625000e-03, 4.64534029e-03, 5.52427173e-03, 6.56950324e-03,
951     7.81250000e-03, 9.29068059e-03, 1.10485435e-02, 1.31390065e-02,
952     1.56250000e-02, 1.85813612e-02, 2.20970869e-02, 2.62780130e-02,
953     3.12500000e-02, 3.71627223e-02, 4.41941738e-02, 5.25560260e-02,
954     6.25000000e-02, 7.43254447e-02, 8.83883476e-02, 1.05112052e-01,
955     1.25000000e-01, 1.48650889e-01, 1.76776695e-01, 2.10224104e-01,
956     2.50000000e-01, 2.97301779e-01, 3.53553391e-01, 4.20448208e-01,
957     5.00000000e-01, 5.94603558e-01, 7.07106781e-01, 8.40896415e-01,
958     1.00000000e+00, 1.18920712e+00, 1.41421356e+00, 1.68179283e+00,
959     2.00000000e+00, 2.37841423e+00, 2.82842712e+00, 3.36358566e+00,
960     4.00000000e+00, 4.75682846e+00, 5.65685425e+00, 6.72717132e+00,
961     8.00000000e+00, 9.51365692e+00, 1.13137085e+01, 1.34543426e+01,
962     1.60000000e+01, 1.90273138e+01, 2.26274170e+01, 2.69086853e+01,
963     3.20000000e+01, 3.80546277e+01, 4.52548340e+01, 5.38173706e+01,
964     6.40000000e+01, 7.61092554e+01, 9.05096680e+01, 1.07634741e+02,
965     1.28000000e+02, 1.52218511e+02, 1.81019336e+02, 2.15269482e+02,
966     2.56000000e+02, 3.04437021e+02, 3.62038672e+02, 4.30538965e+02,
967     5.12000000e+02, 6.08874043e+02, 7.24077344e+02, 8.61077929e+02,
968     1.02400000e+03, 1.21774809e+03, 1.44815469e+03, 1.72215586e+03,
969     2.04800000e+03, 2.43549617e+03, 2.89630938e+03, 3.44431172e+03,
970     4.09600000e+03, 4.87099234e+03, 5.79261875e+03, 6.88862343e+03,
971     8.19200000e+03, 9.74198469e+03, 1.15852375e+04, 1.37772469e+04,
972     1.63840000e+04, 1.94839694e+04, 2.31704750e+04, 2.75544937e+04,
973     3.27680000e+04, 3.89679387e+04, 4.63409500e+04, 5.51089875e+04,
974     6.55360000e+04, 7.79358775e+04, 9.26819000e+04, 1.10217975e+05,
975     1.31072000e+05, 1.55871755e+05, 1.85363800e+05, 2.20435950e+05,
976     2.62144000e+05, 3.11743510e+05, 3.70727600e+05, 4.40871900e+05,
977     5.24288000e+05, 6.23487020e+05, 7.41455200e+05, 8.81743800e+05,
978     1.04857600e+06, 1.24697404e+06, 1.48291040e+06, 1.76348760e+06,
979     2.09715200e+06, 2.49394808e+06, 2.96582080e+06, 3.52697520e+06,
980     4.19430400e+06, 4.98789616e+06, 5.93164160e+06, 7.05395040e+06,
981     8.38860800e+06, 9.97579232e+06, 1.18632832e+07, 1.41079008e+07,
982     1.67772160e+07, 1.99515846e+07, 2.37265664e+07, 2.82158016e+07,
983     3.35544320e+07, 3.99031693e+07, 4.74531328e+07, 5.64316032e+07,
984     6.71088640e+07, 7.98063385e+07, 9.49062656e+07, 1.12863206e+08,
985     1.34217728e+08, 1.59612677e+08, 1.89812531e+08, 2.25726413e+08,
986     2.68435456e+08, 3.19225354e+08, 3.79625062e+08, 4.51452825e+08,
987     5.36870912e+08, 6.38450708e+08, 7.59250125e+08, 9.02905651e+08,
988     1.07374182e+09, 1.27690142e+09, 1.51850025e+09, 1.80581130e+09,
989     2.14748365e+09, 2.55380283e+09, 3.03700050e+09, 3.61162260e+09,
990     4.29496730e+09, 5.10760567e+09, 6.07400100e+09, 7.22324521e+09,
991     8.58993459e+09, 1.02152113e+10, 1.21480020e+10, 1.44464904e+10,
992     1.71798692e+10, 2.04304227e+10, 2.42960040e+10, 2.88929808e+10,
993     3.43597384e+10, 4.08608453e+10, 4.85920080e+10, 5.77859616e+10,
994     6.87194767e+10, 8.17216907e+10, 9.71840160e+10, 1.15571923e+11,
995     1.37438953e+11, 1.63443381e+11, 1.94368032e+11, 2.31143847e+11,
996     2.74877907e+11, 3.26886763e+11, 3.88736064e+11, 4.62287693e+11,
997     5.49755814e+11, 6.53773525e+11, 7.77472128e+11, 9.24575386e+11,
998     1.09951163e+12, 1.30754705e+12, 1.55494426e+12, 1.84915077e+12,
999     2.19902326e+12, 2.61509410e+12, 3.10988851e+12, 3.69830155e+12,
1000     4.39804651e+12, 5.23018820e+12, 6.21977702e+12, 7.39660309e+12,
1001     8.79609302e+12, 1.04603764e+13, 1.24395540e+13, 1.47932062e+13,
1002     1.75921860e+13, 2.09207528e+13, 2.48791081e+13, 2.95864124e+13,
1003     3.51843721e+13, 4.18415056e+13, 4.97582162e+13, 5.91728247e+13,
1004     7.03687442e+13, 8.36830112e+13, 9.95164324e+13, 1.18345649e+14,
1005     1.40737488e+14, 1.67366022e+14, 1.99032865e+14, 2.36691299e+14,
1006     2.81474977e+14, 3.34732045e+14, 3.98065730e+14, 4.73382598e+14,
1007     5.62949953e+14, 6.69464090e+14, 7.96131459e+14, 9.46765196e+14,
1008     1.12589991e+15, 1.33892818e+15, 1.59226292e+15, 1.89353039e+15,
1009     2.25179981e+15, 2.67785636e+15, 3.18452584e+15, 3.78706078e+15,
1010     4.50359963e+15, 5.35571272e+15, 6.36905167e+15, 7.57412156e+15,
1011     9.00719925e+15, 1.07114254e+16, 1.27381033e+16, 1.51482431e+16,
1012     1.80143985e+16, 2.14228509e+16, 2.54762067e+16, 3.02964863e+16,
1013     3.60287970e+16, 4.28457018e+16, 5.09524134e+16, 6.05929725e+16,
1014     7.20575940e+16, 8.56914035e+16, 1.01904827e+17, 1.21185945e+17,
1015 };
1016
1017 #else
1018
1019 float ff_aac_pow2sf_tab[428];
1020
1021 #endif /* CONFIG_HARDCODED_TABLES */