]> git.sesse.net Git - ffmpeg/blob - libavcodec/aactab.c
ac1d59f0c285c373bc552c36cc6a3967d531097b
[ffmpeg] / libavcodec / aactab.c
1 /*
2  * AAC data
3  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22
23 /**
24  * @file 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 const uint8_t ff_aac_num_swb_1024[] = {
36     41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40
37 };
38
39 const uint8_t ff_aac_num_swb_128[] = {
40     12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15
41 };
42
43 const uint32_t ff_aac_scalefactor_code[121] = {
44     0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
45     0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
46     0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
47     0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
48     0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
49     0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
50     0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
51     0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
52     0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
53     0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
54     0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
55     0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
56     0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
57     0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
58     0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
59     0x7fff3,
60 };
61
62 const uint8_t ff_aac_scalefactor_bits[121] = {
63     18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
64     19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
65     14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
66     10,  9,  9,  8,  8,  8,  7,  6,  6,  5,  4,  3,  1,  4,  4,  5,
67      6,  6,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11, 12,
68     12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
69     19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
70     19, 19, 19, 19, 19, 19, 19, 19, 19,
71 };
72
73 static const uint16_t codes1[81] = {
74     0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
75     0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
76     0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
77     0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
78     0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
79     0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
80     0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
81     0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
82     0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
83     0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
84     0x7f4,
85 };
86
87 static const uint8_t bits1[81] = {
88     11,  9, 11, 10,  7, 10, 11,  9, 11, 10,  7, 10,  7,  5,  7,  9,
89      7, 10, 11,  9, 11,  9,  7,  9, 11,  9, 11,  9,  7,  9,  7,  5,
90      7,  9,  7,  9,  7,  5,  7,  5,  1,  5,  7,  5,  7,  9,  7,  9,
91      7,  5,  7,  9,  7,  9, 11,  9, 11,  9,  7,  9, 11,  9, 11, 10,
92      7,  9,  7,  5,  7,  9,  7, 10, 11,  9, 11, 10,  7,  9, 11,  9,
93     11,
94 };
95
96 static const uint16_t codes2[81] = {
97     0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
98     0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
99     0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
100     0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
101     0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
102     0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
103     0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
104     0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
105     0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
106     0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
107     0x1f6,
108 };
109
110 static const uint8_t bits2[81] = {
111     9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
112     6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
113     6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
114     6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
115     6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
116     9,
117 };
118
119 static const uint16_t codes3[81] = {
120     0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
121     0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
122     0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
123     0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
124     0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
125     0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
126     0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
127     0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
128     0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
129     0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
130     0x7ffa,
131 };
132
133 static const uint8_t bits3[81] = {
134      1,  4,  8,  4,  5,  8,  9,  9, 10,  4,  6,  9,  6,  6,  9,  9,
135      9, 10,  9, 10, 13,  9,  9, 11, 11, 10, 12,  4,  6, 10,  6,  7,
136     10, 10, 10, 12,  5,  7, 11,  6,  7, 10,  9,  9, 11,  9, 10, 13,
137      8,  9, 12, 10, 11, 12,  8, 10, 15,  9, 11, 15, 13, 14, 16,  8,
138     10, 14,  9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
139     15,
140 };
141
142 static const uint16_t codes4[81] = {
143     0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
144     0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
145     0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
146     0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
147     0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
148     0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
149     0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
150     0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
151     0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
152     0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
153     0x7fc,
154 };
155
156 static const uint8_t bits4[81] = {
157      4,  5,  8,  5,  4,  8,  9,  8, 11,  5,  5,  8,  5,  4,  8,  8,
158      7, 10,  9,  8, 11,  8,  8, 10, 11, 10, 11,  4,  5,  8,  4,  4,
159      8,  8,  8, 10,  4,  4,  8,  4,  4,  7,  8,  7,  9,  8,  8, 10,
160      7,  7,  9, 10,  9, 10,  8,  8, 11,  8,  7, 10, 11, 10, 12,  8,
161      7, 10,  7,  7,  9, 10,  9, 11, 11, 10, 12, 10,  9, 11, 11, 10,
162     11,
163 };
164
165 static const uint16_t codes5[81] = {
166     0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
167     0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
168     0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
169     0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
170     0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
171     0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
172     0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
173     0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
174     0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
175     0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
176     0x1ffe,
177 };
178
179 static const uint8_t bits5[81] = {
180     13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10,  9,  8,  9, 10,
181     11, 12, 12, 10,  9,  8,  7,  8,  9, 10, 11, 11,  9,  8,  5,  4,
182      5,  8,  9, 11, 10,  8,  7,  4,  1,  4,  7,  8, 11, 11,  9,  8,
183      5,  4,  5,  8,  9, 11, 11, 10,  9,  8,  7,  8,  9, 10, 11, 12,
184     11, 10,  9,  8,  9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
185     13,
186 };
187
188 static const uint16_t codes6[81] = {
189     0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
190     0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
191     0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
192     0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
193     0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
194     0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
195     0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
196     0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
197     0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
198     0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
199     0x7fc,
200 };
201
202 static const uint8_t bits6[81] = {
203     11, 10,  9,  9,  9,  9,  9, 10, 11, 10,  9,  8,  7,  7,  7,  8,
204      9, 10,  9,  8,  6,  6,  6,  6,  6,  8,  9,  9,  7,  6,  4,  4,
205      4,  6,  7,  9,  9,  7,  6,  4,  4,  4,  6,  7,  9,  9,  7,  6,
206      4,  4,  4,  6,  7,  9,  9,  8,  6,  6,  6,  6,  6,  8,  9, 10,
207      9,  8,  7,  7,  7,  7,  8, 10, 11, 10,  9,  9,  9,  9,  9, 10,
208     11,
209 };
210
211 static const uint16_t codes7[64] = {
212     0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
213     0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
214     0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
215     0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
216     0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
217     0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
218     0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
219     0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
220 };
221
222 static const uint8_t bits7[64] = {
223      1,  3,  6,  7,  8,  9, 10, 11,  3,  4,  6,  7,  8,  8,  9,  9,
224      6,  6,  7,  8,  8,  9,  9, 10,  7,  7,  8,  8,  9,  9, 10, 10,
225      8,  8,  9,  9, 10, 10, 10, 11,  9,  8,  9,  9, 10, 10, 11, 11,
226     10,  9,  9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
227 };
228
229 static const uint16_t codes8[64] = {
230     0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
231     0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
232     0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
233     0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
234     0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
235     0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
236     0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
237     0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
238 };
239
240 static const uint8_t bits8[64] = {
241      5,  4,  5,  6,  7,  8,  9, 10,  4,  3,  4,  5,  6,  7,  7,  8,
242      5,  4,  4,  5,  6,  7,  7,  8,  6,  5,  5,  6,  6,  7,  8,  8,
243      7,  6,  6,  6,  7,  7,  8,  9,  8,  7,  6,  7,  7,  8,  8, 10,
244      9,  7,  7,  8,  8,  8,  9,  9, 10,  8,  8,  8,  9,  9,  9, 10,
245 };
246
247 static const uint16_t codes9[169] = {
248     0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
249     0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
250     0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
251     0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
252     0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
253     0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
254     0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
255     0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
256     0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
257     0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
258     0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
259     0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
260     0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
261     0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
262     0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
263     0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
264     0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
265     0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
266     0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
267     0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
268     0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
269     0x7fff,
270 };
271
272 static const uint8_t bits9[169] = {
273      1,  3,  6,  8,  9, 10, 10, 11, 11, 12, 12, 13, 13,  3,  4,  6,
274      7,  8,  8,  9, 10, 10, 10, 11, 12, 12,  6,  6,  7,  8,  8,  9,
275     10, 10, 10, 11, 12, 12, 12,  8,  7,  8,  9,  9, 10, 10, 11, 11,
276     11, 12, 12, 13,  9,  8,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12,
277     13, 10,  9,  9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11,  9,
278     10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
279     12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
280     13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
281     14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
282     11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
283     13, 13, 13, 13, 14, 14, 14, 14, 15,
284 };
285
286 static const uint16_t codes10[169] = {
287     0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
288     0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
289     0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
290     0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
291     0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
292     0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
293     0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
294     0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
295     0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
296     0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
297     0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
298     0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
299     0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
300     0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
301     0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
302     0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
303     0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
304     0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
305     0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
306     0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
307     0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
308     0xfff,
309 };
310
311 static const uint8_t bits10[169] = {
312      6,  5,  6,  6,  7,  8,  9, 10, 10, 10, 11, 11, 12,  5,  4,  4,
313      5,  6,  7,  7,  8,  8,  9, 10, 10, 11,  6,  4,  5,  5,  6,  6,
314      7,  8,  8,  9,  9, 10, 10,  6,  5,  5,  5,  6,  7,  7,  8,  8,
315      9,  9, 10, 10,  7,  6,  6,  6,  6,  7,  7,  8,  8,  9,  9, 10,
316     10,  8,  7,  6,  7,  7,  7,  8,  8,  8,  9, 10, 10, 11,  9,  7,
317      7,  7,  7,  8,  8,  9,  9,  9, 10, 10, 11,  9,  8,  8,  8,  8,
318      8,  9,  9,  9, 10, 10, 11, 11,  9,  8,  8,  8,  8,  8,  9,  9,
319     10, 10, 10, 11, 11, 10,  9,  9,  9,  9,  9,  9, 10, 10, 10, 11,
320     11, 12, 10,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
321     10,  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
322     10, 10, 10, 11, 11, 12, 12, 12, 12,
323 };
324
325 static const uint16_t codes11[289] = {
326     0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
327     0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
328     0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
329     0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
330     0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
331     0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
332     0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
333     0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
334     0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
335     0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
336     0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
337     0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
338     0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
339     0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
340     0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
341     0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
342     0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
343     0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
344     0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
345     0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
346     0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
347     0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
348     0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
349     0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
350     0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
351     0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
352     0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
353     0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
354     0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
355     0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
356     0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
357     0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
358     0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
359     0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
360     0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
361     0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
362     0x004,
363 };
364
365 static const uint8_t bits11[289] = {
366      4,  5,  6,  7,  8,  8,  9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
367     10,  5,  4,  5,  6,  7,  7,  8,  8,  9,  9,  9, 10, 10, 10, 10,
368     11,  8,  6,  5,  5,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,
369     10, 10,  8,  7,  6,  6,  6,  7,  7,  8,  8,  8,  9,  9,  9, 10,
370     10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,
371     10, 10, 10, 10,  8,  8,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9,
372      9, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  8,  9,  9,
373      9, 10, 10, 10, 10, 10,  8,  9,  8,  8,  8,  8,  8,  8,  9,  9,
374      9, 10, 10, 10, 10, 10, 10,  8, 10,  9,  8,  8,  9,  9,  9,  9,
375      9, 10, 10, 10, 10, 10, 10, 11,  8, 10,  9,  9,  9,  9,  9,  9,
376      9, 10, 10, 10, 10, 10, 10, 11, 11,  8, 11,  9,  9,  9,  9,  9,
377      9, 10, 10, 10, 10, 10, 11, 10, 11, 11,  8, 11, 10,  9,  9, 10,
378      9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  8, 11, 10, 10, 10,
379     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,  9, 11, 10,  9,
380      9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 11, 10,
381     10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,  9, 12,
382     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12,  9,
383      9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9,
384      5,
385 };
386
387 const uint16_t *ff_aac_spectral_codes[11] = {
388     codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
389     codes9, codes10, codes11,
390 };
391
392 const uint8_t *ff_aac_spectral_bits[11] = {
393     bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
394     bits9, bits10, bits11,
395 };
396
397 const uint16_t ff_aac_spectral_sizes[11] = {
398     81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
399 };
400
401 static const int8_t codebook_vector0[324] = {
402  -1, -1, -1, -1, -1, -1, -1,  0, -1, -1, -1,  1, -1, -1,  0, -1,
403  -1, -1,  0,  0, -1, -1,  0,  1, -1, -1,  1, -1, -1, -1,  1,  0,
404  -1, -1,  1,  1, -1,  0, -1, -1, -1,  0, -1,  0, -1,  0, -1,  1,
405  -1,  0,  0, -1, -1,  0,  0,  0, -1,  0,  0,  1, -1,  0,  1, -1,
406  -1,  0,  1,  0, -1,  0,  1,  1, -1,  1, -1, -1, -1,  1, -1,  0,
407  -1,  1, -1,  1, -1,  1,  0, -1, -1,  1,  0,  0, -1,  1,  0,  1,
408  -1,  1,  1, -1, -1,  1,  1,  0, -1,  1,  1,  1,  0, -1, -1, -1,
409   0, -1, -1,  0,  0, -1, -1,  1,  0, -1,  0, -1,  0, -1,  0,  0,
410   0, -1,  0,  1,  0, -1,  1, -1,  0, -1,  1,  0,  0, -1,  1,  1,
411   0,  0, -1, -1,  0,  0, -1,  0,  0,  0, -1,  1,  0,  0,  0, -1,
412   0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  1, -1,  0,  0,  1,  0,
413   0,  0,  1,  1,  0,  1, -1, -1,  0,  1, -1,  0,  0,  1, -1,  1,
414   0,  1,  0, -1,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  1, -1,
415   0,  1,  1,  0,  0,  1,  1,  1,  1, -1, -1, -1,  1, -1, -1,  0,
416   1, -1, -1,  1,  1, -1,  0, -1,  1, -1,  0,  0,  1, -1,  0,  1,
417   1, -1,  1, -1,  1, -1,  1,  0,  1, -1,  1,  1,  1,  0, -1, -1,
418   1,  0, -1,  0,  1,  0, -1,  1,  1,  0,  0, -1,  1,  0,  0,  0,
419   1,  0,  0,  1,  1,  0,  1, -1,  1,  0,  1,  0,  1,  0,  1,  1,
420   1,  1, -1, -1,  1,  1, -1,  0,  1,  1, -1,  1,  1,  1,  0, -1,
421   1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  1, -1,  1,  1,  1,  0,
422   1,  1,  1,  1,
423 };
424
425 static const int8_t codebook_vector2[324] = {
426   0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  2,  0,  0,  1,  0,
427   0,  0,  1,  1,  0,  0,  1,  2,  0,  0,  2,  0,  0,  0,  2,  1,
428   0,  0,  2,  2,  0,  1,  0,  0,  0,  1,  0,  1,  0,  1,  0,  2,
429   0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  2,  0,  1,  2,  0,
430   0,  1,  2,  1,  0,  1,  2,  2,  0,  2,  0,  0,  0,  2,  0,  1,
431   0,  2,  0,  2,  0,  2,  1,  0,  0,  2,  1,  1,  0,  2,  1,  2,
432   0,  2,  2,  0,  0,  2,  2,  1,  0,  2,  2,  2,  1,  0,  0,  0,
433   1,  0,  0,  1,  1,  0,  0,  2,  1,  0,  1,  0,  1,  0,  1,  1,
434   1,  0,  1,  2,  1,  0,  2,  0,  1,  0,  2,  1,  1,  0,  2,  2,
435   1,  1,  0,  0,  1,  1,  0,  1,  1,  1,  0,  2,  1,  1,  1,  0,
436   1,  1,  1,  1,  1,  1,  1,  2,  1,  1,  2,  0,  1,  1,  2,  1,
437   1,  1,  2,  2,  1,  2,  0,  0,  1,  2,  0,  1,  1,  2,  0,  2,
438   1,  2,  1,  0,  1,  2,  1,  1,  1,  2,  1,  2,  1,  2,  2,  0,
439   1,  2,  2,  1,  1,  2,  2,  2,  2,  0,  0,  0,  2,  0,  0,  1,
440   2,  0,  0,  2,  2,  0,  1,  0,  2,  0,  1,  1,  2,  0,  1,  2,
441   2,  0,  2,  0,  2,  0,  2,  1,  2,  0,  2,  2,  2,  1,  0,  0,
442   2,  1,  0,  1,  2,  1,  0,  2,  2,  1,  1,  0,  2,  1,  1,  1,
443   2,  1,  1,  2,  2,  1,  2,  0,  2,  1,  2,  1,  2,  1,  2,  2,
444   2,  2,  0,  0,  2,  2,  0,  1,  2,  2,  0,  2,  2,  2,  1,  0,
445   2,  2,  1,  1,  2,  2,  1,  2,  2,  2,  2,  0,  2,  2,  2,  1,
446   2,  2,  2,  2,
447 };
448
449 static const int8_t codebook_vector4[162] = {
450  -4, -4, -4, -3, -4, -2, -4, -1, -4,  0, -4,  1, -4,  2, -4,  3,
451  -4,  4, -3, -4, -3, -3, -3, -2, -3, -1, -3,  0, -3,  1, -3,  2,
452  -3,  3, -3,  4, -2, -4, -2, -3, -2, -2, -2, -1, -2,  0, -2,  1,
453  -2,  2, -2,  3, -2,  4, -1, -4, -1, -3, -1, -2, -1, -1, -1,  0,
454  -1,  1, -1,  2, -1,  3, -1,  4,  0, -4,  0, -3,  0, -2,  0, -1,
455   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  1, -4,  1, -3,  1, -2,
456   1, -1,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  2, -4,  2, -3,
457   2, -2,  2, -1,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  3, -4,
458   3, -3,  3, -2,  3, -1,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
459   4, -4,  4, -3,  4, -2,  4, -1,  4,  0,  4,  1,  4,  2,  4,  3,
460   4,  4,
461 };
462
463 static const int8_t codebook_vector6[128] = {
464   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
465   1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,  1,  7,
466   2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,  2,  6,  2,  7,
467   3,  0,  3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,
468   4,  0,  4,  1,  4,  2,  4,  3,  4,  4,  4,  5,  4,  6,  4,  7,
469   5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,  5,  7,
470   6,  0,  6,  1,  6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,
471   7,  0,  7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,
472 };
473
474 static const int8_t codebook_vector8[338] = {
475   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
476   0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  1,  0,  1,  1,  1,  2,
477   1,  3,  1,  4,  1,  5,  1,  6,  1,  7,  1,  8,  1,  9,  1, 10,
478   1, 11,  1, 12,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
479   2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  3,  0,
480   3,  1,  3,  2,  3,  3,  3,  4,  3,  5,  3,  6,  3,  7,  3,  8,
481   3,  9,  3, 10,  3, 11,  3, 12,  4,  0,  4,  1,  4,  2,  4,  3,
482   4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
483   4, 12,  5,  0,  5,  1,  5,  2,  5,  3,  5,  4,  5,  5,  5,  6,
484   5,  7,  5,  8,  5,  9,  5, 10,  5, 11,  5, 12,  6,  0,  6,  1,
485   6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
486   6, 10,  6, 11,  6, 12,  7,  0,  7,  1,  7,  2,  7,  3,  7,  4,
487   7,  5,  7,  6,  7,  7,  7,  8,  7,  9,  7, 10,  7, 11,  7, 12,
488   8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
489   8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  9,  0,  9,  1,  9,  2,
490   9,  3,  9,  4,  9,  5,  9,  6,  9,  7,  9,  8,  9,  9,  9, 10,
491   9, 11,  9, 12, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
492  10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 11,  0,
493  11,  1, 11,  2, 11,  3, 11,  4, 11,  5, 11,  6, 11,  7, 11,  8,
494  11,  9, 11, 10, 11, 11, 11, 12, 12,  0, 12,  1, 12,  2, 12,  3,
495  12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
496  12, 12,
497 };
498
499 static const int8_t codebook_vector10[578] = {
500   0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  0,  5,  0,  6,  0,  7,
501   0,  8,  0,  9,  0, 10,  0, 11,  0, 12,  0, 13,  0, 14,  0, 15,
502   0, 16,  1,  0,  1,  1,  1,  2,  1,  3,  1,  4,  1,  5,  1,  6,
503   1,  7,  1,  8,  1,  9,  1, 10,  1, 11,  1, 12,  1, 13,  1, 14,
504   1, 15,  1, 16,  2,  0,  2,  1,  2,  2,  2,  3,  2,  4,  2,  5,
505   2,  6,  2,  7,  2,  8,  2,  9,  2, 10,  2, 11,  2, 12,  2, 13,
506   2, 14,  2, 15,  2, 16,  3,  0,  3,  1,  3,  2,  3,  3,  3,  4,
507   3,  5,  3,  6,  3,  7,  3,  8,  3,  9,  3, 10,  3, 11,  3, 12,
508   3, 13,  3, 14,  3, 15,  3, 16,  4,  0,  4,  1,  4,  2,  4,  3,
509   4,  4,  4,  5,  4,  6,  4,  7,  4,  8,  4,  9,  4, 10,  4, 11,
510   4, 12,  4, 13,  4, 14,  4, 15,  4, 16,  5,  0,  5,  1,  5,  2,
511   5,  3,  5,  4,  5,  5,  5,  6,  5,  7,  5,  8,  5,  9,  5, 10,
512   5, 11,  5, 12,  5, 13,  5, 14,  5, 15,  5, 16,  6,  0,  6,  1,
513   6,  2,  6,  3,  6,  4,  6,  5,  6,  6,  6,  7,  6,  8,  6,  9,
514   6, 10,  6, 11,  6, 12,  6, 13,  6, 14,  6, 15,  6, 16,  7,  0,
515   7,  1,  7,  2,  7,  3,  7,  4,  7,  5,  7,  6,  7,  7,  7,  8,
516   7,  9,  7, 10,  7, 11,  7, 12,  7, 13,  7, 14,  7, 15,  7, 16,
517   8,  0,  8,  1,  8,  2,  8,  3,  8,  4,  8,  5,  8,  6,  8,  7,
518   8,  8,  8,  9,  8, 10,  8, 11,  8, 12,  8, 13,  8, 14,  8, 15,
519   8, 16,  9,  0,  9,  1,  9,  2,  9,  3,  9,  4,  9,  5,  9,  6,
520   9,  7,  9,  8,  9,  9,  9, 10,  9, 11,  9, 12,  9, 13,  9, 14,
521   9, 15,  9, 16, 10,  0, 10,  1, 10,  2, 10,  3, 10,  4, 10,  5,
522  10,  6, 10,  7, 10,  8, 10,  9, 10, 10, 10, 11, 10, 12, 10, 13,
523  10, 14, 10, 15, 10, 16, 11,  0, 11,  1, 11,  2, 11,  3, 11,  4,
524  11,  5, 11,  6, 11,  7, 11,  8, 11,  9, 11, 10, 11, 11, 11, 12,
525  11, 13, 11, 14, 11, 15, 11, 16, 12,  0, 12,  1, 12,  2, 12,  3,
526  12,  4, 12,  5, 12,  6, 12,  7, 12,  8, 12,  9, 12, 10, 12, 11,
527  12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 13,  0, 13,  1, 13,  2,
528  13,  3, 13,  4, 13,  5, 13,  6, 13,  7, 13,  8, 13,  9, 13, 10,
529  13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 14,  0, 14,  1,
530  14,  2, 14,  3, 14,  4, 14,  5, 14,  6, 14,  7, 14,  8, 14,  9,
531  14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 15,  0,
532  15,  1, 15,  2, 15,  3, 15,  4, 15,  5, 15,  6, 15,  7, 15,  8,
533  15,  9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16,
534  16,  0, 16,  1, 16,  2, 16,  3, 16,  4, 16,  5, 16,  6, 16,  7,
535  16,  8, 16,  9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15,
536  16, 16,
537 };
538
539 const int8_t *ff_aac_codebook_vectors[] = {
540     codebook_vector0, codebook_vector0, codebook_vector2,
541     codebook_vector2, codebook_vector4, codebook_vector4,
542     codebook_vector6, codebook_vector6, codebook_vector8,
543     codebook_vector8, codebook_vector10,
544 };
545
546 #ifdef CONFIG_HARDCODED_TABLES
547
548 const float ff_aac_ivquant_tab[IVQUANT_SIZE] = {
549     -4085.3368071, -4074.6805676, -4064.0312908, -4053.3889857,
550     -4042.7536614, -4032.1253271, -4021.5039921, -4010.8896656,
551     -4000.2823568, -3989.6820750, -3979.0888296, -3968.5026299,
552     -3957.9234854, -3947.3514054, -3936.7863993, -3926.2284768,
553     -3915.6776473, -3905.1339203, -3894.5973054, -3884.0678123,
554     -3873.5454506, -3863.0302299, -3852.5221601, -3842.0212507,
555     -3831.5275117, -3821.0409528, -3810.5615838, -3800.0894147,
556     -3789.6244554, -3779.1667157, -3768.7162058, -3758.2729355,
557     -3747.8369150, -3737.4081544, -3726.9866637, -3716.5724532,
558     -3706.1655329, -3695.7659132, -3685.3736044, -3674.9886166,
559     -3664.6109603, -3654.2406458, -3643.8776835, -3633.5220839,
560     -3623.1738574, -3612.8330147, -3602.4995662, -3592.1735225,
561     -3581.8548943, -3571.5436923, -3561.2399271, -3550.9436095,
562     -3540.6547503, -3530.3733604, -3520.0994506, -3509.8330317,
563     -3499.5741148, -3489.3227109, -3479.0788309, -3468.8424860,
564     -3458.6136872, -3448.3924458, -3438.1787728, -3427.9726795,
565     -3417.7741773, -3407.5832773, -3397.3999911, -3387.2243299,
566     -3377.0563052, -3366.8959286, -3356.7432115, -3346.5981655,
567     -3336.4608022, -3326.3311334, -3316.2091706, -3306.0949257,
568     -3295.9884105, -3285.8896367, -3275.7986164, -3265.7153613,
569     -3255.6398836, -3245.5721951, -3235.5123081, -3225.4602346,
570     -3215.4159867, -3205.3795768, -3195.3510169, -3185.3303196,
571     -3175.3174970, -3165.3125617, -3155.3155261, -3145.3264026,
572     -3135.3452039, -3125.3719425, -3115.4066312, -3105.4492825,
573     -3095.4999092, -3085.5585243, -3075.6251404, -3065.6997706,
574     -3055.7824278, -3045.8731250, -3035.9718753, -3026.0786917,
575     -3016.1935876, -3006.3165760, -2996.4476703, -2986.5868839,
576     -2976.7342300, -2966.8897222, -2957.0533740, -2947.2251989,
577     -2937.4052106, -2927.5934226, -2917.7898488, -2907.9945030,
578     -2898.2073989, -2888.4285505, -2878.6579717, -2868.8956767,
579     -2859.1416793, -2849.3959939, -2839.6586345, -2829.9296156,
580     -2820.2089512, -2810.4966560, -2800.7927443, -2791.0972306,
581     -2781.4101295, -2771.7314556, -2762.0612237, -2752.3994485,
582     -2742.7461448, -2733.1013276, -2723.4650117, -2713.8372123,
583     -2704.2179443, -2694.6072231, -2685.0050637, -2675.4114815,
584     -2665.8264919, -2656.2501103, -2646.6823521, -2637.1232331,
585     -2627.5727687, -2618.0309748, -2608.4978671, -2598.9734614,
586     -2589.4577738, -2579.9508201, -2570.4526166, -2560.9631792,
587     -2551.4825244, -2542.0106682, -2532.5476273, -2523.0934179,
588     -2513.6480566, -2504.2115601, -2494.7839450, -2485.3652281,
589     -2475.9554262, -2466.5545562, -2457.1626352, -2447.7796803,
590     -2438.4057086, -2429.0407373, -2419.6847838, -2410.3378655,
591     -2401.0000000, -2391.6712048, -2382.3514975, -2373.0408959,
592     -2363.7394180, -2354.4470815, -2345.1639046, -2335.8899054,
593     -2326.6251019, -2317.3695127, -2308.1231559, -2298.8860501,
594     -2289.6582139, -2280.4396659, -2271.2304249, -2262.0305097,
595     -2252.8399393, -2243.6587327, -2234.4869090, -2225.3244875,
596     -2216.1714876, -2207.0279286, -2197.8938301, -2188.7692117,
597     -2179.6540933, -2170.5484945, -2161.4524354, -2152.3659360,
598     -2143.2890165, -2134.2216972, -2125.1639983, -2116.1159404,
599     -2107.0775442, -2098.0488302, -2089.0298192, -2080.0205323,
600     -2071.0209905, -2062.0312148, -2053.0512267, -2044.0810473,
601     -2035.1206983, -2026.1702013, -2017.2295780, -2008.2988502,
602     -1999.3780400, -1990.4671694, -1981.5662607, -1972.6753362,
603     -1963.7944183, -1954.9235298, -1946.0626932, -1937.2119316,
604     -1928.3712678, -1919.5407249, -1910.7203263, -1901.9100954,
605     -1893.1100555, -1884.3202305, -1875.5406441, -1866.7713202,
606     -1858.0122829, -1849.2635565, -1840.5251653, -1831.7971337,
607     -1823.0794865, -1814.3722485, -1805.6754445, -1796.9890997,
608     -1788.3132394, -1779.6478889, -1770.9930739, -1762.3488199,
609     -1753.7151529, -1745.0920989, -1736.4796841, -1727.8779349,
610     -1719.2868777, -1710.7065393, -1702.1369465, -1693.5781262,
611     -1685.0301058, -1676.4929125, -1667.9665739, -1659.4511177,
612     -1650.9465718, -1642.4529642, -1633.9703232, -1625.4986772,
613     -1617.0380549, -1608.5884850, -1600.1499965, -1591.7226186,
614     -1583.3063807, -1574.9013124, -1566.5074433, -1558.1248036,
615     -1549.7534233, -1541.3933328, -1533.0445627, -1524.7071438,
616     -1516.3811070, -1508.0664836, -1499.7633050, -1491.4716029,
617     -1483.1914090, -1474.9227555, -1466.6656746, -1458.4201990,
618     -1450.1863613, -1441.9641946, -1433.7537320, -1425.5550071,
619     -1417.3680536, -1409.1929053, -1401.0295965, -1392.8781617,
620     -1384.7386355, -1376.6110529, -1368.4954490, -1360.3918594,
621     -1352.3003198, -1344.2208661, -1336.1535347, -1328.0983621,
622     -1320.0553851, -1312.0246407, -1304.0061665, -1296.0000000,
623     -1288.0061792, -1280.0247424, -1272.0557280, -1264.0991750,
624     -1256.1551226, -1248.2236101, -1240.3046773, -1232.3983645,
625     -1224.5047118, -1216.6237602, -1208.7555507, -1200.9001246,
626     -1193.0575238, -1185.2277903, -1177.4109665, -1169.6070953,
627     -1161.8162197, -1154.0383833, -1146.2736299, -1138.5220038,
628     -1130.7835495, -1123.0583122, -1115.3463371, -1107.6476700,
629     -1099.9623571, -1092.2904450, -1084.6319806, -1076.9870114,
630     -1069.3555851, -1061.7377500, -1054.1335548, -1046.5430486,
631     -1038.9662809, -1031.4033017, -1023.8541615, -1016.3189112,
632     -1008.7976022, -1001.2902864,  -993.7970162,  -986.3178444,
633      -978.8528243,  -971.4020099,  -963.9654554,  -956.5432158,
634      -949.1353466,  -941.7419036,  -934.3629435,  -926.9985233,
635      -919.6487005,  -912.3135336,  -904.9930812,  -897.6874027,
636      -890.3965581,  -883.1206081,  -875.8596139,  -868.6136373,
637      -861.3827409,  -854.1669878,  -846.9664418,  -839.7811675,
638      -832.6112300,  -825.4566953,  -818.3176299,  -811.1941012,
639      -804.0861773,  -796.9939269,  -789.9174197,  -782.8567260,
640      -775.8119169,  -768.7830645,  -761.7702415,  -754.7735215,
641      -747.7929790,  -740.8286894,  -733.8807287,  -726.9491743,
642      -720.0341040,  -713.1355968,  -706.2537328,  -699.3885927,
643      -692.5402584,  -685.7088129,  -678.8943400,  -672.0969248,
644      -665.3166532,  -658.5536125,  -651.8078908,  -645.0795775,
645      -638.3687633,  -631.6755398,  -625.0000000,  -618.3422381,
646      -611.7023495,  -605.0804310,  -598.4765806,  -591.8908978,
647      -585.3234834,  -578.7744395,  -572.2438698,  -565.7318795,
648      -559.2385751,  -552.7640648,  -546.3084584,  -539.8718672,
649      -533.4544042,  -527.0561843,  -520.6773237,  -514.3179408,
650      -507.9781556,  -501.6580901,  -495.3578679,  -489.0776150,
651      -482.8174592,  -476.5775303,  -470.3579603,  -464.1588834,
652      -457.9804359,  -451.8227566,  -445.6859865,  -439.5702691,
653      -433.4757504,  -427.4025787,  -421.3509053,  -415.3208841,
654      -409.3126715,  -403.3264272,  -397.3623135,  -391.4204959,
655      -385.5011431,  -379.6044268,  -373.7305221,  -367.8796078,
656      -362.0518657,  -356.2474818,  -350.4666456,  -344.7095504,
657      -338.9763937,  -333.2673772,  -327.5827066,  -321.9225924,
658      -316.2872495,  -310.6768976,  -305.0917613,  -299.5320705,
659      -293.9980602,  -288.4899710,  -283.0080491,  -277.5525469,
660      -272.1237227,  -266.7218414,  -261.3471743,  -256.0000000,
661      -250.6806041,  -245.3892798,  -240.1263282,  -234.8920585,
662      -229.6867885,  -224.5108452,  -219.3645645,  -214.2482925,
663      -209.1623853,  -204.1072101,  -199.0831450,  -194.0905802,
664      -189.1299182,  -184.2015749,  -179.3059798,  -174.4435769,
665      -169.6148258,  -164.8202021,  -160.0601987,  -155.3353268,
666      -150.6461166,  -145.9931191,  -141.3769069,  -136.7980757,
667      -132.2572463,  -127.7550655,  -123.2922085,  -118.8693810,
668      -114.4873209,  -110.1468012,  -105.8486329,  -101.5936673,
669       -97.3828002,   -93.2169752,   -89.0971879,   -85.0244912,
670       -81.0000000,   -77.0248978,   -73.1004435,   -69.2279794,
671       -65.4089405,   -61.6448653,   -57.9374077,   -54.2883523,
672       -50.6996313,   -47.1733451,   -43.7117870,   -40.3174736,
673       -36.9931811,   -33.7419917,   -30.5673509,   -27.4731418,
674       -24.4637810,   -21.5443469,   -18.7207544,   -16.0000000,
675       -13.3905183,   -10.9027236,    -8.5498797,    -6.3496042,
676        -4.3267487,    -2.5198421,    -1.0000000,     0.0000000,
677         1.0000000,     2.5198421,     4.3267487,     6.3496042,
678         8.5498797,    10.9027236,    13.3905183,    16.0000000,
679        18.7207544,    21.5443469,    24.4637810,    27.4731418,
680        30.5673509,    33.7419917,    36.9931811,    40.3174736,
681        43.7117870,    47.1733451,    50.6996313,    54.2883523,
682        57.9374077,    61.6448653,    65.4089405,    69.2279794,
683        73.1004435,    77.0248978,    81.0000000,    85.0244912,
684        89.0971879,    93.2169752,    97.3828002,   101.5936673,
685       105.8486329,   110.1468012,   114.4873209,   118.8693810,
686       123.2922085,   127.7550655,   132.2572463,   136.7980757,
687       141.3769069,   145.9931191,   150.6461166,   155.3353268,
688       160.0601987,   164.8202021,   169.6148258,   174.4435769,
689       179.3059798,   184.2015749,   189.1299182,   194.0905802,
690       199.0831450,   204.1072101,   209.1623853,   214.2482925,
691       219.3645645,   224.5108452,   229.6867885,   234.8920585,
692       240.1263282,   245.3892798,   250.6806041,   256.0000000,
693       261.3471743,   266.7218414,   272.1237227,   277.5525469,
694       283.0080491,   288.4899710,   293.9980602,   299.5320705,
695       305.0917613,   310.6768976,   316.2872495,   321.9225924,
696       327.5827066,   333.2673772,   338.9763937,   344.7095504,
697       350.4666456,   356.2474818,   362.0518657,   367.8796078,
698       373.7305221,   379.6044268,   385.5011431,   391.4204959,
699       397.3623135,   403.3264272,   409.3126715,   415.3208841,
700       421.3509053,   427.4025787,   433.4757504,   439.5702691,
701       445.6859865,   451.8227566,   457.9804359,   464.1588834,
702       470.3579603,   476.5775303,   482.8174592,   489.0776150,
703       495.3578679,   501.6580901,   507.9781556,   514.3179408,
704       520.6773237,   527.0561843,   533.4544042,   539.8718672,
705       546.3084584,   552.7640648,   559.2385751,   565.7318795,
706       572.2438698,   578.7744395,   585.3234834,   591.8908978,
707       598.4765806,   605.0804310,   611.7023495,   618.3422381,
708       625.0000000,   631.6755398,   638.3687633,   645.0795775,
709       651.8078908,   658.5536125,   665.3166532,   672.0969248,
710       678.8943400,   685.7088129,   692.5402584,   699.3885927,
711       706.2537328,   713.1355968,   720.0341040,   726.9491743,
712       733.8807287,   740.8286894,   747.7929790,   754.7735215,
713       761.7702415,   768.7830645,   775.8119169,   782.8567260,
714       789.9174197,   796.9939269,   804.0861773,   811.1941012,
715       818.3176299,   825.4566953,   832.6112300,   839.7811675,
716       846.9664418,   854.1669878,   861.3827409,   868.6136373,
717       875.8596139,   883.1206081,   890.3965581,   897.6874027,
718       904.9930812,   912.3135336,   919.6487005,   926.9985233,
719       934.3629435,   941.7419036,   949.1353466,   956.5432158,
720       963.9654554,   971.4020099,   978.8528243,   986.3178444,
721       993.7970162,  1001.2902864,  1008.7976022,  1016.3189112,
722      1023.8541615,  1031.4033017,  1038.9662809,  1046.5430486,
723      1054.1335548,  1061.7377500,  1069.3555851,  1076.9870114,
724      1084.6319806,  1092.2904450,  1099.9623571,  1107.6476700,
725      1115.3463371,  1123.0583122,  1130.7835495,  1138.5220038,
726      1146.2736299,  1154.0383833,  1161.8162197,  1169.6070953,
727      1177.4109665,  1185.2277903,  1193.0575238,  1200.9001246,
728      1208.7555507,  1216.6237602,  1224.5047118,  1232.3983645,
729      1240.3046773,  1248.2236101,  1256.1551226,  1264.0991750,
730      1272.0557280,  1280.0247424,  1288.0061792,  1296.0000000,
731      1304.0061665,  1312.0246407,  1320.0553851,  1328.0983621,
732      1336.1535347,  1344.2208661,  1352.3003198,  1360.3918594,
733      1368.4954490,  1376.6110529,  1384.7386355,  1392.8781617,
734      1401.0295965,  1409.1929053,  1417.3680536,  1425.5550071,
735      1433.7537320,  1441.9641946,  1450.1863613,  1458.4201990,
736      1466.6656746,  1474.9227555,  1483.1914090,  1491.4716029,
737      1499.7633050,  1508.0664836,  1516.3811070,  1524.7071438,
738      1533.0445627,  1541.3933328,  1549.7534233,  1558.1248036,
739      1566.5074433,  1574.9013124,  1583.3063807,  1591.7226186,
740      1600.1499965,  1608.5884850,  1617.0380549,  1625.4986772,
741      1633.9703232,  1642.4529642,  1650.9465718,  1659.4511177,
742      1667.9665739,  1676.4929125,  1685.0301058,  1693.5781262,
743      1702.1369465,  1710.7065393,  1719.2868777,  1727.8779349,
744      1736.4796841,  1745.0920989,  1753.7151529,  1762.3488199,
745      1770.9930739,  1779.6478889,  1788.3132394,  1796.9890997,
746      1805.6754445,  1814.3722485,  1823.0794865,  1831.7971337,
747      1840.5251653,  1849.2635565,  1858.0122829,  1866.7713202,
748      1875.5406441,  1884.3202305,  1893.1100555,  1901.9100954,
749      1910.7203263,  1919.5407249,  1928.3712678,  1937.2119316,
750      1946.0626932,  1954.9235298,  1963.7944183,  1972.6753362,
751      1981.5662607,  1990.4671694,  1999.3780400,  2008.2988502,
752      2017.2295780,  2026.1702013,  2035.1206983,  2044.0810473,
753      2053.0512267,  2062.0312148,  2071.0209905,  2080.0205323,
754      2089.0298192,  2098.0488302,  2107.0775442,  2116.1159404,
755      2125.1639983,  2134.2216972,  2143.2890165,  2152.3659360,
756      2161.4524354,  2170.5484945,  2179.6540933,  2188.7692117,
757      2197.8938301,  2207.0279286,  2216.1714876,  2225.3244875,
758      2234.4869090,  2243.6587327,  2252.8399393,  2262.0305097,
759      2271.2304249,  2280.4396659,  2289.6582139,  2298.8860501,
760      2308.1231559,  2317.3695127,  2326.6251019,  2335.8899054,
761      2345.1639046,  2354.4470815,  2363.7394180,  2373.0408959,
762      2382.3514975,  2391.6712048,  2401.0000000,  2410.3378655,
763      2419.6847838,  2429.0407373,  2438.4057086,  2447.7796803,
764      2457.1626352,  2466.5545562,  2475.9554262,  2485.3652281,
765      2494.7839450,  2504.2115601,  2513.6480566,  2523.0934179,
766      2532.5476273,  2542.0106682,  2551.4825244,  2560.9631792,
767      2570.4526166,  2579.9508201,  2589.4577738,  2598.9734614,
768      2608.4978671,  2618.0309748,  2627.5727687,  2637.1232331,
769      2646.6823521,  2656.2501103,  2665.8264919,  2675.4114815,
770      2685.0050637,  2694.6072231,  2704.2179443,  2713.8372123,
771      2723.4650117,  2733.1013276,  2742.7461448,  2752.3994485,
772      2762.0612237,  2771.7314556,  2781.4101295,  2791.0972306,
773      2800.7927443,  2810.4966560,  2820.2089512,  2829.9296156,
774      2839.6586345,  2849.3959939,  2859.1416793,  2868.8956767,
775      2878.6579717,  2888.4285505,  2898.2073989,  2907.9945030,
776      2917.7898488,  2927.5934226,  2937.4052106,  2947.2251989,
777      2957.0533740,  2966.8897222,  2976.7342300,  2986.5868839,
778      2996.4476703,  3006.3165760,  3016.1935876,  3026.0786917,
779      3035.9718753,  3045.8731250,  3055.7824278,  3065.6997706,
780      3075.6251404,  3085.5585243,  3095.4999092,  3105.4492825,
781      3115.4066312,  3125.3719425,  3135.3452039,  3145.3264026,
782      3155.3155261,  3165.3125617,  3175.3174970,  3185.3303196,
783      3195.3510169,  3205.3795768,  3215.4159867,  3225.4602346,
784      3235.5123081,  3245.5721951,  3255.6398836,  3265.7153613,
785      3275.7986164,  3285.8896367,  3295.9884105,  3306.0949257,
786      3316.2091706,  3326.3311334,  3336.4608022,  3346.5981655,
787      3356.7432115,  3366.8959286,  3377.0563052,  3387.2243299,
788      3397.3999911,  3407.5832773,  3417.7741773,  3427.9726795,
789      3438.1787728,  3448.3924458,  3458.6136872,  3468.8424860,
790      3479.0788309,  3489.3227109,  3499.5741148,  3509.8330317,
791      3520.0994506,  3530.3733604,  3540.6547503,  3550.9436095,
792      3561.2399271,  3571.5436923,  3581.8548943,  3592.1735225,
793      3602.4995662,  3612.8330147,  3623.1738574,  3633.5220839,
794      3643.8776835,  3654.2406458,  3664.6109603,  3674.9886166,
795      3685.3736044,  3695.7659132,  3706.1655329,  3716.5724532,
796      3726.9866637,  3737.4081544,  3747.8369150,  3758.2729355,
797      3768.7162058,  3779.1667157,  3789.6244554,  3800.0894147,
798      3810.5615838,  3821.0409528,  3831.5275117,  3842.0212507,
799      3852.5221601,  3863.0302299,  3873.5454506,  3884.0678123,
800      3894.5973054,  3905.1339203,  3915.6776473,  3926.2284768,
801      3936.7863993,  3947.3514054,  3957.9234854,  3968.5026299,
802      3979.0888296,  3989.6820750,  4000.2823568,  4010.8896656,
803      4021.5039921,  4032.1253271,  4042.7536614,  4053.3889857,
804      4064.0312908,  4074.6805676,  4085.3368071,  4096.0000000,
805 };
806
807 /**
808  * Table of pow(2, (i - 200)/4.) used for different purposes depending on the
809  * range of indices to the table:
810  * [ 0, 255] scale factor decoding when using C dsp.float_to_int16
811  * [60, 315] scale factor decoding when using SIMD dsp.float_to_int16
812  * [45, 300] intensity stereo position decoding mapped in reverse order i.e. 0->300, 1->299, ..., 254->46, 255->45
813  */
814 const float ff_aac_pow2sf_tab[316] = {
815     8.88178420e-16, 1.05622810e-15, 1.25607397e-15, 1.49373210e-15,
816     1.77635684e-15, 2.11245619e-15, 2.51214793e-15, 2.98746420e-15,
817     3.55271368e-15, 4.22491238e-15, 5.02429587e-15, 5.97492839e-15,
818     7.10542736e-15, 8.44982477e-15, 1.00485917e-14, 1.19498568e-14,
819     1.42108547e-14, 1.68996495e-14, 2.00971835e-14, 2.38997136e-14,
820     2.84217094e-14, 3.37992991e-14, 4.01943669e-14, 4.77994272e-14,
821     5.68434189e-14, 6.75985982e-14, 8.03887339e-14, 9.55988543e-14,
822     1.13686838e-13, 1.35197196e-13, 1.60777468e-13, 1.91197709e-13,
823     2.27373675e-13, 2.70394393e-13, 3.21554936e-13, 3.82395417e-13,
824     4.54747351e-13, 5.40788785e-13, 6.43109871e-13, 7.64790834e-13,
825     9.09494702e-13, 1.08157757e-12, 1.28621974e-12, 1.52958167e-12,
826     1.81898940e-12, 2.16315514e-12, 2.57243948e-12, 3.05916334e-12,
827     3.63797881e-12, 4.32631028e-12, 5.14487897e-12, 6.11832668e-12,
828     7.27595761e-12, 8.65262056e-12, 1.02897579e-11, 1.22366534e-11,
829     1.45519152e-11, 1.73052411e-11, 2.05795159e-11, 2.44733067e-11,
830     2.91038305e-11, 3.46104823e-11, 4.11590317e-11, 4.89466134e-11,
831     5.82076609e-11, 6.92209645e-11, 8.23180635e-11, 9.78932268e-11,
832     1.16415322e-10, 1.38441929e-10, 1.64636127e-10, 1.95786454e-10,
833     2.32830644e-10, 2.76883858e-10, 3.29272254e-10, 3.91572907e-10,
834     4.65661287e-10, 5.53767716e-10, 6.58544508e-10, 7.83145814e-10,
835     9.31322575e-10, 1.10753543e-09, 1.31708902e-09, 1.56629163e-09,
836     1.86264515e-09, 2.21507086e-09, 2.63417803e-09, 3.13258326e-09,
837     3.72529030e-09, 4.43014173e-09, 5.26835606e-09, 6.26516652e-09,
838     7.45058060e-09, 8.86028346e-09, 1.05367121e-08, 1.25303330e-08,
839     1.49011612e-08, 1.77205669e-08, 2.10734243e-08, 2.50606661e-08,
840     2.98023224e-08, 3.54411338e-08, 4.21468485e-08, 5.01213321e-08,
841     5.96046448e-08, 7.08822677e-08, 8.42936970e-08, 1.00242664e-07,
842     1.19209290e-07, 1.41764535e-07, 1.68587394e-07, 2.00485328e-07,
843     2.38418579e-07, 2.83529071e-07, 3.37174788e-07, 4.00970657e-07,
844     4.76837158e-07, 5.67058141e-07, 6.74349576e-07, 8.01941314e-07,
845     9.53674316e-07, 1.13411628e-06, 1.34869915e-06, 1.60388263e-06,
846     1.90734863e-06, 2.26823256e-06, 2.69739830e-06, 3.20776526e-06,
847     3.81469727e-06, 4.53646513e-06, 5.39479661e-06, 6.41553051e-06,
848     7.62939453e-06, 9.07293026e-06, 1.07895932e-05, 1.28310610e-05,
849     1.52587891e-05, 1.81458605e-05, 2.15791864e-05, 2.56621220e-05,
850     3.05175781e-05, 3.62917210e-05, 4.31583729e-05, 5.13242441e-05,
851     6.10351562e-05, 7.25834421e-05, 8.63167458e-05, 1.02648488e-04,
852     1.22070312e-04, 1.45166884e-04, 1.72633492e-04, 2.05296976e-04,
853     2.44140625e-04, 2.90333768e-04, 3.45266983e-04, 4.10593953e-04,
854     4.88281250e-04, 5.80667537e-04, 6.90533966e-04, 8.21187906e-04,
855     9.76562500e-04, 1.16133507e-03, 1.38106793e-03, 1.64237581e-03,
856     1.95312500e-03, 2.32267015e-03, 2.76213586e-03, 3.28475162e-03,
857     3.90625000e-03, 4.64534029e-03, 5.52427173e-03, 6.56950324e-03,
858     7.81250000e-03, 9.29068059e-03, 1.10485435e-02, 1.31390065e-02,
859     1.56250000e-02, 1.85813612e-02, 2.20970869e-02, 2.62780130e-02,
860     3.12500000e-02, 3.71627223e-02, 4.41941738e-02, 5.25560260e-02,
861     6.25000000e-02, 7.43254447e-02, 8.83883476e-02, 1.05112052e-01,
862     1.25000000e-01, 1.48650889e-01, 1.76776695e-01, 2.10224104e-01,
863     2.50000000e-01, 2.97301779e-01, 3.53553391e-01, 4.20448208e-01,
864     5.00000000e-01, 5.94603558e-01, 7.07106781e-01, 8.40896415e-01,
865     1.00000000e+00, 1.18920712e+00, 1.41421356e+00, 1.68179283e+00,
866     2.00000000e+00, 2.37841423e+00, 2.82842712e+00, 3.36358566e+00,
867     4.00000000e+00, 4.75682846e+00, 5.65685425e+00, 6.72717132e+00,
868     8.00000000e+00, 9.51365692e+00, 1.13137085e+01, 1.34543426e+01,
869     1.60000000e+01, 1.90273138e+01, 2.26274170e+01, 2.69086853e+01,
870     3.20000000e+01, 3.80546277e+01, 4.52548340e+01, 5.38173706e+01,
871     6.40000000e+01, 7.61092554e+01, 9.05096680e+01, 1.07634741e+02,
872     1.28000000e+02, 1.52218511e+02, 1.81019336e+02, 2.15269482e+02,
873     2.56000000e+02, 3.04437021e+02, 3.62038672e+02, 4.30538965e+02,
874     5.12000000e+02, 6.08874043e+02, 7.24077344e+02, 8.61077929e+02,
875     1.02400000e+03, 1.21774809e+03, 1.44815469e+03, 1.72215586e+03,
876     2.04800000e+03, 2.43549617e+03, 2.89630938e+03, 3.44431172e+03,
877     4.09600000e+03, 4.87099234e+03, 5.79261875e+03, 6.88862343e+03,
878     8.19200000e+03, 9.74198469e+03, 1.15852375e+04, 1.37772469e+04,
879     1.63840000e+04, 1.94839694e+04, 2.31704750e+04, 2.75544937e+04,
880     3.27680000e+04, 3.89679387e+04, 4.63409500e+04, 5.51089875e+04,
881     6.55360000e+04, 7.79358775e+04, 9.26819000e+04, 1.10217975e+05,
882     1.31072000e+05, 1.55871755e+05, 1.85363800e+05, 2.20435950e+05,
883     2.62144000e+05, 3.11743510e+05, 3.70727600e+05, 4.40871900e+05,
884     5.24288000e+05, 6.23487020e+05, 7.41455200e+05, 8.81743800e+05,
885     1.04857600e+06, 1.24697404e+06, 1.48291040e+06, 1.76348760e+06,
886     2.09715200e+06, 2.49394808e+06, 2.96582080e+06, 3.52697520e+06,
887     4.19430400e+06, 4.98789616e+06, 5.93164160e+06, 7.05395040e+06,
888     8.38860800e+06, 9.97579232e+06, 1.18632832e+07, 1.41079008e+07,
889     1.67772160e+07, 1.99515846e+07, 2.37265664e+07, 2.82158016e+07,
890     3.35544320e+07, 3.99031693e+07, 4.74531328e+07, 5.64316032e+07,
891     6.71088640e+07, 7.98063385e+07, 9.49062656e+07, 1.12863206e+08,
892     1.34217728e+08, 1.59612677e+08, 1.89812531e+08, 2.25726413e+08,
893     2.68435456e+08, 3.19225354e+08, 3.79625062e+08, 4.51452825e+08,
894 };
895
896 #endif /* CONFIG_HARDCODED_TABLES */