c11c63326e3dc5c045d5ced8c8d016d7169972be
[libav.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 "aac.h"
31
32 #include <stdint.h>
33
34 const uint32_t ff_aac_scalefactor_code[121] = {
35 0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
36 0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
37 0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
38 0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
39 0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
40 0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
41 0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
42 0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
43 0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
44 0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
45 0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
46 0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
47 0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
48 0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
49 0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
50 0x7fff3,
51 };
52
53 const uint8_t ff_aac_scalefactor_bits[121] = {
54 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
55 19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
56 14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
57 10, 9, 9, 8, 8, 8, 7, 6, 6, 5, 4, 3, 1, 4, 4, 5,
58 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12,
59 12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
60 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
61 19, 19, 19, 19, 19, 19, 19, 19, 19,
62 };
63
64 static const uint16_t codes1[81] = {
65 0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
66 0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
67 0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
68 0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
69 0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
70 0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
71 0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
72 0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
73 0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
74 0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
75 0x7f4,
76 };
77
78 static const uint8_t bits1[81] = {
79 11, 9, 11, 10, 7, 10, 11, 9, 11, 10, 7, 10, 7, 5, 7, 9,
80 7, 10, 11, 9, 11, 9, 7, 9, 11, 9, 11, 9, 7, 9, 7, 5,
81 7, 9, 7, 9, 7, 5, 7, 5, 1, 5, 7, 5, 7, 9, 7, 9,
82 7, 5, 7, 9, 7, 9, 11, 9, 11, 9, 7, 9, 11, 9, 11, 10,
83 7, 9, 7, 5, 7, 9, 7, 10, 11, 9, 11, 10, 7, 9, 11, 9,
84 11,
85 };
86
87 static const uint16_t codes2[81] = {
88 0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
89 0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
90 0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
91 0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
92 0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
93 0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
94 0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
95 0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
96 0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
97 0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
98 0x1f6,
99 };
100
101 static const uint8_t bits2[81] = {
102 9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
103 6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
104 6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
105 6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
106 6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
107 9,
108 };
109
110 static const uint16_t codes3[81] = {
111 0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
112 0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
113 0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
114 0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
115 0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
116 0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
117 0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
118 0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
119 0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
120 0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
121 0x7ffa,
122 };
123
124 static const uint8_t bits3[81] = {
125 1, 4, 8, 4, 5, 8, 9, 9, 10, 4, 6, 9, 6, 6, 9, 9,
126 9, 10, 9, 10, 13, 9, 9, 11, 11, 10, 12, 4, 6, 10, 6, 7,
127 10, 10, 10, 12, 5, 7, 11, 6, 7, 10, 9, 9, 11, 9, 10, 13,
128 8, 9, 12, 10, 11, 12, 8, 10, 15, 9, 11, 15, 13, 14, 16, 8,
129 10, 14, 9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
130 15,
131 };
132
133 static const uint16_t codes4[81] = {
134 0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
135 0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
136 0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
137 0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
138 0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
139 0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
140 0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
141 0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
142 0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
143 0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
144 0x7fc,
145 };
146
147 static const uint8_t bits4[81] = {
148 4, 5, 8, 5, 4, 8, 9, 8, 11, 5, 5, 8, 5, 4, 8, 8,
149 7, 10, 9, 8, 11, 8, 8, 10, 11, 10, 11, 4, 5, 8, 4, 4,
150 8, 8, 8, 10, 4, 4, 8, 4, 4, 7, 8, 7, 9, 8, 8, 10,
151 7, 7, 9, 10, 9, 10, 8, 8, 11, 8, 7, 10, 11, 10, 12, 8,
152 7, 10, 7, 7, 9, 10, 9, 11, 11, 10, 12, 10, 9, 11, 11, 10,
153 11,
154 };
155
156 static const uint16_t codes5[81] = {
157 0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
158 0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
159 0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
160 0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
161 0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
162 0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
163 0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
164 0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
165 0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
166 0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
167 0x1ffe,
168 };
169
170 static const uint8_t bits5[81] = {
171 13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10, 9, 8, 9, 10,
172 11, 12, 12, 10, 9, 8, 7, 8, 9, 10, 11, 11, 9, 8, 5, 4,
173 5, 8, 9, 11, 10, 8, 7, 4, 1, 4, 7, 8, 11, 11, 9, 8,
174 5, 4, 5, 8, 9, 11, 11, 10, 9, 8, 7, 8, 9, 10, 11, 12,
175 11, 10, 9, 8, 9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
176 13,
177 };
178
179 static const uint16_t codes6[81] = {
180 0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
181 0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
182 0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
183 0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
184 0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
185 0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
186 0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
187 0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
188 0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
189 0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
190 0x7fc,
191 };
192
193 static const uint8_t bits6[81] = {
194 11, 10, 9, 9, 9, 9, 9, 10, 11, 10, 9, 8, 7, 7, 7, 8,
195 9, 10, 9, 8, 6, 6, 6, 6, 6, 8, 9, 9, 7, 6, 4, 4,
196 4, 6, 7, 9, 9, 7, 6, 4, 4, 4, 6, 7, 9, 9, 7, 6,
197 4, 4, 4, 6, 7, 9, 9, 8, 6, 6, 6, 6, 6, 8, 9, 10,
198 9, 8, 7, 7, 7, 7, 8, 10, 11, 10, 9, 9, 9, 9, 9, 10,
199 11,
200 };
201
202 static const uint16_t codes7[64] = {
203 0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
204 0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
205 0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
206 0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
207 0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
208 0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
209 0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
210 0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
211 };
212
213 static const uint8_t bits7[64] = {
214 1, 3, 6, 7, 8, 9, 10, 11, 3, 4, 6, 7, 8, 8, 9, 9,
215 6, 6, 7, 8, 8, 9, 9, 10, 7, 7, 8, 8, 9, 9, 10, 10,
216 8, 8, 9, 9, 10, 10, 10, 11, 9, 8, 9, 9, 10, 10, 11, 11,
217 10, 9, 9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
218 };
219
220 static const uint16_t codes8[64] = {
221 0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
222 0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
223 0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
224 0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
225 0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
226 0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
227 0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
228 0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
229 };
230
231 static const uint8_t bits8[64] = {
232 5, 4, 5, 6, 7, 8, 9, 10, 4, 3, 4, 5, 6, 7, 7, 8,
233 5, 4, 4, 5, 6, 7, 7, 8, 6, 5, 5, 6, 6, 7, 8, 8,
234 7, 6, 6, 6, 7, 7, 8, 9, 8, 7, 6, 7, 7, 8, 8, 10,
235 9, 7, 7, 8, 8, 8, 9, 9, 10, 8, 8, 8, 9, 9, 9, 10,
236 };
237
238 static const uint16_t codes9[169] = {
239 0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
240 0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
241 0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
242 0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
243 0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
244 0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
245 0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
246 0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
247 0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
248 0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
249 0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
250 0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
251 0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
252 0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
253 0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
254 0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
255 0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
256 0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
257 0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
258 0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
259 0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
260 0x7fff,
261 };
262
263 static const uint8_t bits9[169] = {
264 1, 3, 6, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6,
265 7, 8, 8, 9, 10, 10, 10, 11, 12, 12, 6, 6, 7, 8, 8, 9,
266 10, 10, 10, 11, 12, 12, 12, 8, 7, 8, 9, 9, 10, 10, 11, 11,
267 11, 12, 12, 13, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12,
268 13, 10, 9, 9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11, 9,
269 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
270 12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
271 13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
272 14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
273 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
274 13, 13, 13, 13, 14, 14, 14, 14, 15,
275 };
276
277 static const uint16_t codes10[169] = {
278 0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
279 0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
280 0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
281 0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
282 0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
283 0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
284 0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
285 0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
286 0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
287 0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
288 0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
289 0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
290 0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
291 0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
292 0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
293 0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
294 0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
295 0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
296 0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
297 0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
298 0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
299 0xfff,
300 };
301
302 static const uint8_t bits10[169] = {
303 6, 5, 6, 6, 7, 8, 9, 10, 10, 10, 11, 11, 12, 5, 4, 4,
304 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 6, 4, 5, 5, 6, 6,
305 7, 8, 8, 9, 9, 10, 10, 6, 5, 5, 5, 6, 7, 7, 8, 8,
306 9, 9, 10, 10, 7, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10,
307 10, 8, 7, 6, 7, 7, 7, 8, 8, 8, 9, 10, 10, 11, 9, 7,
308 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 9, 8, 8, 8, 8,
309 8, 9, 9, 9, 10, 10, 11, 11, 9, 8, 8, 8, 8, 8, 9, 9,
310 10, 10, 10, 11, 11, 10, 9, 9, 9, 9, 9, 9, 10, 10, 10, 11,
311 11, 12, 10, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
312 10, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
313 10, 10, 10, 11, 11, 12, 12, 12, 12,
314 };
315
316 static const uint16_t codes11[289] = {
317 0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
318 0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
319 0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
320 0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
321 0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
322 0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
323 0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
324 0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
325 0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
326 0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
327 0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
328 0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
329 0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
330 0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
331 0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
332 0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
333 0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
334 0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
335 0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
336 0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
337 0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
338 0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
339 0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
340 0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
341 0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
342 0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
343 0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
344 0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
345 0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
346 0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
347 0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
348 0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
349 0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
350 0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
351 0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
352 0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
353 0x004,
354 };
355
356 static const uint8_t bits11[289] = {
357 4, 5, 6, 7, 8, 8, 9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
358 10, 5, 4, 5, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10,
359 11, 8, 6, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10,
360 10, 10, 8, 7, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10,
361 10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
362 10, 10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9,
363 9, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9,
364 9, 10, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9,
365 9, 10, 10, 10, 10, 10, 10, 8, 10, 9, 8, 8, 9, 9, 9, 9,
366 9, 10, 10, 10, 10, 10, 10, 11, 8, 10, 9, 9, 9, 9, 9, 9,
367 9, 10, 10, 10, 10, 10, 10, 11, 11, 8, 11, 9, 9, 9, 9, 9,
368 9, 10, 10, 10, 10, 10, 11, 10, 11, 11, 8, 11, 10, 9, 9, 10,
369 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11, 10, 10, 10,
370 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 9, 11, 10, 9,
371 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 11, 10,
372 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 12,
373 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 9,
374 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
375 5,
376 };
377
378 const uint16_t *ff_aac_spectral_codes[11] = {
379 codes1, codes2, codes3, codes4, codes5, codes6, codes7, codes8,
380 codes9, codes10, codes11,
381 };
382
383 const uint8_t *ff_aac_spectral_bits[11] = {
384 bits1, bits2, bits3, bits4, bits5, bits6, bits7, bits8,
385 bits9, bits10, bits11,
386 };
387
388 const uint16_t ff_aac_spectral_sizes[11] = {
389 81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
390 };
391
392 static const int8_t codebook_vector0[324] = {
393 -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, -1, -1, 0, -1,
394 -1, -1, 0, 0, -1, -1, 0, 1, -1, -1, 1, -1, -1, -1, 1, 0,
395 -1, -1, 1, 1, -1, 0, -1, -1, -1, 0, -1, 0, -1, 0, -1, 1,
396 -1, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 1, -1, 0, 1, -1,
397 -1, 0, 1, 0, -1, 0, 1, 1, -1, 1, -1, -1, -1, 1, -1, 0,
398 -1, 1, -1, 1, -1, 1, 0, -1, -1, 1, 0, 0, -1, 1, 0, 1,
399 -1, 1, 1, -1, -1, 1, 1, 0, -1, 1, 1, 1, 0, -1, -1, -1,
400 0, -1, -1, 0, 0, -1, -1, 1, 0, -1, 0, -1, 0, -1, 0, 0,
401 0, -1, 0, 1, 0, -1, 1, -1, 0, -1, 1, 0, 0, -1, 1, 1,
402 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1,
403 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, 0, 0, 1, 0,
404 0, 0, 1, 1, 0, 1, -1, -1, 0, 1, -1, 0, 0, 1, -1, 1,
405 0, 1, 0, -1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, -1,
406 0, 1, 1, 0, 0, 1, 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, 1, 0, -1, -1,
409 1, 0, -1, 0, 1, 0, -1, 1, 1, 0, 0, -1, 1, 0, 0, 0,
410 1, 0, 0, 1, 1, 0, 1, -1, 1, 0, 1, 0, 1, 0, 1, 1,
411 1, 1, -1, -1, 1, 1, -1, 0, 1, 1, -1, 1, 1, 1, 0, -1,
412 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, -1, 1, 1, 1, 0,
413 1, 1, 1, 1,
414 };
415
416 static const int8_t codebook_vector2[324] = {
417 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 1, 0,
418 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 0, 0, 0, 2, 1,
419 0, 0, 2, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 2,
420 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 2, 0, 1, 2, 0,
421 0, 1, 2, 1, 0, 1, 2, 2, 0, 2, 0, 0, 0, 2, 0, 1,
422 0, 2, 0, 2, 0, 2, 1, 0, 0, 2, 1, 1, 0, 2, 1, 2,
423 0, 2, 2, 0, 0, 2, 2, 1, 0, 2, 2, 2, 1, 0, 0, 0,
424 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 1, 0, 1, 0, 1, 1,
425 1, 0, 1, 2, 1, 0, 2, 0, 1, 0, 2, 1, 1, 0, 2, 2,
426 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 2, 1, 1, 1, 0,
427 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 0, 1, 1, 2, 1,
428 1, 1, 2, 2, 1, 2, 0, 0, 1, 2, 0, 1, 1, 2, 0, 2,
429 1, 2, 1, 0, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 2, 0,
430 1, 2, 2, 1, 1, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 1,
431 2, 0, 0, 2, 2, 0, 1, 0, 2, 0, 1, 1, 2, 0, 1, 2,
432 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 2, 2, 1, 0, 0,
433 2, 1, 0, 1, 2, 1, 0, 2, 2, 1, 1, 0, 2, 1, 1, 1,
434 2, 1, 1, 2, 2, 1, 2, 0, 2, 1, 2, 1, 2, 1, 2, 2,
435 2, 2, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, 2, 2, 1, 0,
436 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 0, 2, 2, 2, 1,
437 2, 2, 2, 2,
438 };
439
440 static const int8_t codebook_vector4[162] = {
441 -4, -4, -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 2, -4, 3,
442 -4, 4, -3, -4, -3, -3, -3, -2, -3, -1, -3, 0, -3, 1, -3, 2,
443 -3, 3, -3, 4, -2, -4, -2, -3, -2, -2, -2, -1, -2, 0, -2, 1,
444 -2, 2, -2, 3, -2, 4, -1, -4, -1, -3, -1, -2, -1, -1, -1, 0,
445 -1, 1, -1, 2, -1, 3, -1, 4, 0, -4, 0, -3, 0, -2, 0, -1,
446 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 1, -4, 1, -3, 1, -2,
447 1, -1, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 2, -4, 2, -3,
448 2, -2, 2, -1, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 3, -4,
449 3, -3, 3, -2, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4,
450 4, -4, 4, -3, 4, -2, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3,
451 4, 4,
452 };
453
454 static const int8_t codebook_vector6[128] = {
455 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7,
456 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7,
457 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7,
458 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7,
459 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7,
460 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7,
461 6, 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7,
462 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7,
463 };
464
465 static const int8_t codebook_vector8[338] = {
466 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7,
467 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 1, 0, 1, 1, 1, 2,
468 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10,
469 1, 11, 1, 12, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5,
470 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 3, 0,
471 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8,
472 3, 9, 3, 10, 3, 11, 3, 12, 4, 0, 4, 1, 4, 2, 4, 3,
473 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11,
474 4, 12, 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6,
475 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 5, 12, 6, 0, 6, 1,
476 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9,
477 6, 10, 6, 11, 6, 12, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4,
478 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12,
479 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7,
480 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 9, 0, 9, 1, 9, 2,
481 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10,
482 9, 11, 9, 12, 10, 0, 10, 1, 10, 2, 10, 3, 10, 4, 10, 5,
483 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 11, 0,
484 11, 1, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8,
485 11, 9, 11, 10, 11, 11, 11, 12, 12, 0, 12, 1, 12, 2, 12, 3,
486 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11,
487 12, 12,
488 };
489
490 static const int8_t codebook_vector10[578] = {
491 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7,
492 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15,
493 0, 16, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6,
494 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14,
495 1, 15, 1, 16, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5,
496 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13,
497 2, 14, 2, 15, 2, 16, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4,
498 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12,
499 3, 13, 3, 14, 3, 15, 3, 16, 4, 0, 4, 1, 4, 2, 4, 3,
500 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11,
501 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 5, 0, 5, 1, 5, 2,
502 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10,
503 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 5, 16, 6, 0, 6, 1,
504 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9,
505 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 7, 0,
506 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8,
507 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16,
508 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7,
509 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15,
510 8, 16, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, 6,
511 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14,
512 9, 15, 9, 16, 10, 0, 10, 1, 10, 2, 10, 3, 10, 4, 10, 5,
513 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 10, 13,
514 10, 14, 10, 15, 10, 16, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4,
515 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, 12,
516 11, 13, 11, 14, 11, 15, 11, 16, 12, 0, 12, 1, 12, 2, 12, 3,
517 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11,
518 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 13, 0, 13, 1, 13, 2,
519 13, 3, 13, 4, 13, 5, 13, 6, 13, 7, 13, 8, 13, 9, 13, 10,
520 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 14, 0, 14, 1,
521 14, 2, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, 14, 9,
522 14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 15, 0,
523 15, 1, 15, 2, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8,
524 15, 9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16,
525 16, 0, 16, 1, 16, 2, 16, 3, 16, 4, 16, 5, 16, 6, 16, 7,
526 16, 8, 16, 9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15,
527 16, 16,
528 };
529
530 const int8_t *ff_aac_codebook_vectors[] = {
531 codebook_vector0, codebook_vector0, codebook_vector2,
532 codebook_vector2, codebook_vector4, codebook_vector4,
533 codebook_vector6, codebook_vector6, codebook_vector8,
534 codebook_vector8, codebook_vector10,
535 };
536
537 #ifdef CONFIG_HARDCODED_TABLES
538
539 const float ff_aac_ivquant_tab[IVQUANT_SIZE] = {
540 -4085.3368071, -4074.6805676, -4064.0312908, -4053.3889857,
541 -4042.7536614, -4032.1253271, -4021.5039921, -4010.8896656,
542 -4000.2823568, -3989.6820750, -3979.0888296, -3968.5026299,
543 -3957.9234854, -3947.3514054, -3936.7863993, -3926.2284768,
544 -3915.6776473, -3905.1339203, -3894.5973054, -3884.0678123,
545 -3873.5454506, -3863.0302299, -3852.5221601, -3842.0212507,
546 -3831.5275117, -3821.0409528, -3810.5615838, -3800.0894147,
547 -3789.6244554, -3779.1667157, -3768.7162058, -3758.2729355,
548 -3747.8369150, -3737.4081544, -3726.9866637, -3716.5724532,
549 -3706.1655329, -3695.7659132, -3685.3736044, -3674.9886166,
550 -3664.6109603, -3654.2406458, -3643.8776835, -3633.5220839,
551 -3623.1738574, -3612.8330147, -3602.4995662, -3592.1735225,
552 -3581.8548943, -3571.5436923, -3561.2399271, -3550.9436095,
553 -3540.6547503, -3530.3733604, -3520.0994506, -3509.8330317,
554 -3499.5741148, -3489.3227109, -3479.0788309, -3468.8424860,
555 -3458.6136872, -3448.3924458, -3438.1787728, -3427.9726795,
556 -3417.7741773, -3407.5832773, -3397.3999911, -3387.2243299,
557 -3377.0563052, -3366.8959286, -3356.7432115, -3346.5981655,
558 -3336.4608022, -3326.3311334, -3316.2091706, -3306.0949257,
559 -3295.9884105, -3285.8896367, -3275.7986164, -3265.7153613,
560 -3255.6398836, -3245.5721951, -3235.5123081, -3225.4602346,
561 -3215.4159867, -3205.3795768, -3195.3510169, -3185.3303196,
562 -3175.3174970, -3165.3125617, -3155.3155261, -3145.3264026,
563 -3135.3452039, -3125.3719425, -3115.4066312, -3105.4492825,
564 -3095.4999092, -3085.5585243, -3075.6251404, -3065.6997706,
565 -3055.7824278, -3045.8731250, -3035.9718753, -3026.0786917,
566 -3016.1935876, -3006.3165760, -2996.4476703, -2986.5868839,
567 -2976.7342300, -2966.8897222, -2957.0533740, -2947.2251989,
568 -2937.4052106, -2927.5934226, -2917.7898488, -2907.9945030,
569 -2898.2073989, -2888.4285505, -2878.6579717, -2868.8956767,
570 -2859.1416793, -2849.3959939, -2839.6586345, -2829.9296156,
571 -2820.2089512, -2810.4966560, -2800.7927443, -2791.0972306,
572 -2781.4101295, -2771.7314556, -2762.0612237, -2752.3994485,
573 -2742.7461448, -2733.1013276, -2723.4650117, -2713.8372123,
574 -2704.2179443, -2694.6072231, -2685.0050637, -2675.4114815,
575 -2665.8264919, -2656.2501103, -2646.6823521, -2637.1232331,
576 -2627.5727687, -2618.0309748, -2608.4978671, -2598.9734614,
577 -2589.4577738, -2579.9508201, -2570.4526166, -2560.9631792,
578 -2551.4825244, -2542.0106682, -2532.5476273, -2523.0934179,
579 -2513.6480566, -2504.2115601, -2494.7839450, -2485.3652281,
580 -2475.9554262, -2466.5545562, -2457.1626352, -2447.7796803,
581 -2438.4057086, -2429.0407373, -2419.6847838, -2410.3378655,
582 -2401.0000000, -2391.6712048, -2382.3514975, -2373.0408959,
583 -2363.7394180, -2354.4470815, -2345.1639046, -2335.8899054,
584 -2326.6251019, -2317.3695127, -2308.1231559, -2298.8860501,
585 -2289.6582139, -2280.4396659, -2271.2304249, -2262.0305097,
586 -2252.8399393, -2243.6587327, -2234.4869090, -2225.3244875,
587 -2216.1714876, -2207.0279286, -2197.8938301, -2188.7692117,
588 -2179.6540933, -2170.5484945, -2161.4524354, -2152.3659360,
589 -2143.2890165, -2134.2216972, -2125.1639983, -2116.1159404,
590 -2107.0775442, -2098.0488302, -2089.0298192, -2080.0205323,
591 -2071.0209905, -2062.0312148, -2053.0512267, -2044.0810473,
592 -2035.1206983, -2026.1702013, -2017.2295780, -2008.2988502,
593 -1999.3780400, -1990.4671694, -1981.5662607, -1972.6753362,
594 -1963.7944183, -1954.9235298, -1946.0626932, -1937.2119316,
595 -1928.3712678, -1919.5407249, -1910.7203263, -1901.9100954,
596 -1893.1100555, -1884.3202305, -1875.5406441, -1866.7713202,
597 -1858.0122829, -1849.2635565, -1840.5251653, -1831.7971337,
598 -1823.0794865, -1814.3722485, -1805.6754445, -1796.9890997,
599 -1788.3132394, -1779.6478889, -1770.9930739, -1762.3488199,
600 -1753.7151529, -1745.0920989, -1736.4796841, -1727.8779349,
601 -1719.2868777, -1710.7065393, -1702.1369465, -1693.5781262,
602 -1685.0301058, -1676.4929125, -1667.9665739, -1659.4511177,
603 -1650.9465718, -1642.4529642, -1633.9703232, -1625.4986772,
604 -1617.0380549, -1608.5884850, -1600.1499965, -1591.7226186,
605 -1583.3063807, -1574.9013124, -1566.5074433, -1558.1248036,
606 -1549.7534233, -1541.3933328, -1533.0445627, -1524.7071438,
607 -1516.3811070, -1508.0664836, -1499.7633050, -1491.4716029,
608 -1483.1914090, -1474.9227555, -1466.6656746, -1458.4201990,
609 -1450.1863613, -1441.9641946, -1433.7537320, -1425.5550071,
610 -1417.3680536, -1409.1929053, -1401.0295965, -1392.8781617,
611 -1384.7386355, -1376.6110529, -1368.4954490, -1360.3918594,
612 -1352.3003198, -1344.2208661, -1336.1535347, -1328.0983621,
613 -1320.0553851, -1312.0246407, -1304.0061665, -1296.0000000,
614 -1288.0061792, -1280.0247424, -1272.0557280, -1264.0991750,
615 -1256.1551226, -1248.2236101, -1240.3046773, -1232.3983645,
616 -1224.5047118, -1216.6237602, -1208.7555507, -1200.9001246,
617 -1193.0575238, -1185.2277903, -1177.4109665, -1169.6070953,
618 -1161.8162197, -1154.0383833, -1146.2736299, -1138.5220038,
619 -1130.7835495, -1123.0583122, -1115.3463371, -1107.6476700,
620 -1099.9623571, -1092.2904450, -1084.6319806, -1076.9870114,
621 -1069.3555851, -1061.7377500, -1054.1335548, -1046.5430486,
622 -1038.9662809, -1031.4033017, -1023.8541615, -1016.3189112,
623 -1008.7976022, -1001.2902864, -993.7970162, -986.3178444,
624 -978.8528243, -971.4020099, -963.9654554, -956.5432158,
625 -949.1353466, -941.7419036, -934.3629435, -926.9985233,
626 -919.6487005, -912.3135336, -904.9930812, -897.6874027,
627 -890.3965581, -883.1206081, -875.8596139, -868.6136373,
628 -861.3827409, -854.1669878, -846.9664418, -839.7811675,
629 -832.6112300, -825.4566953, -818.3176299, -811.1941012,
630 -804.0861773, -796.9939269, -789.9174197, -782.8567260,
631 -775.8119169, -768.7830645, -761.7702415, -754.7735215,
632 -747.7929790, -740.8286894, -733.8807287, -726.9491743,
633 -720.0341040, -713.1355968, -706.2537328, -699.3885927,
634 -692.5402584, -685.7088129, -678.8943400, -672.0969248,
635 -665.3166532, -658.5536125, -651.8078908, -645.0795775,
636 -638.3687633, -631.6755398, -625.0000000, -618.3422381,
637 -611.7023495, -605.0804310, -598.4765806, -591.8908978,
638 -585.3234834, -578.7744395, -572.2438698, -565.7318795,
639 -559.2385751, -552.7640648, -546.3084584, -539.8718672,
640 -533.4544042, -527.0561843, -520.6773237, -514.3179408,
641 -507.9781556, -501.6580901, -495.3578679, -489.0776150,
642 -482.8174592, -476.5775303, -470.3579603, -464.1588834,
643 -457.9804359, -451.8227566, -445.6859865, -439.5702691,
644 -433.4757504, -427.4025787, -421.3509053, -415.3208841,
645 -409.3126715, -403.3264272, -397.3623135, -391.4204959,
646 -385.5011431, -379.6044268, -373.7305221, -367.8796078,
647 -362.0518657, -356.2474818, -350.4666456, -344.7095504,
648 -338.9763937, -333.2673772, -327.5827066, -321.9225924,
649 -316.2872495, -310.6768976, -305.0917613, -299.5320705,
650 -293.9980602, -288.4899710, -283.0080491, -277.5525469,
651 -272.1237227, -266.7218414, -261.3471743, -256.0000000,
652 -250.6806041, -245.3892798, -240.1263282, -234.8920585,
653 -229.6867885, -224.5108452, -219.3645645, -214.2482925,
654 -209.1623853, -204.1072101, -199.0831450, -194.0905802,
655 -189.1299182, -184.2015749, -179.3059798, -174.4435769,
656 -169.6148258, -164.8202021, -160.0601987, -155.3353268,
657 -150.6461166, -145.9931191, -141.3769069, -136.7980757,
658 -132.2572463, -127.7550655, -123.2922085, -118.8693810,
659 -114.4873209, -110.1468012, -105.8486329, -101.5936673,
660 -97.3828002, -93.2169752, -89.0971879, -85.0244912,
661 -81.0000000, -77.0248978, -73.1004435, -69.2279794,
662 -65.4089405, -61.6448653, -57.9374077, -54.2883523,
663 -50.6996313, -47.1733451, -43.7117870, -40.3174736,
664 -36.9931811, -33.7419917, -30.5673509, -27.4731418,
665 -24.4637810, -21.5443469, -18.7207544, -16.0000000,
666 -13.3905183, -10.9027236, -8.5498797, -6.3496042,
667 -4.3267487, -2.5198421, -1.0000000, 0.0000000,
668 1.0000000, 2.5198421, 4.3267487, 6.3496042,
669 8.5498797, 10.9027236, 13.3905183, 16.0000000,
670 18.7207544, 21.5443469, 24.4637810, 27.4731418,
671 30.5673509, 33.7419917, 36.9931811, 40.3174736,
672 43.7117870, 47.1733451, 50.6996313, 54.2883523,
673 57.9374077, 61.6448653, 65.4089405, 69.2279794,
674 73.1004435, 77.0248978, 81.0000000, 85.0244912,
675 89.0971879, 93.2169752, 97.3828002, 101.5936673,
676 105.8486329, 110.1468012, 114.4873209, 118.8693810,
677 123.2922085, 127.7550655, 132.2572463, 136.7980757,
678 141.3769069, 145.9931191, 150.6461166, 155.3353268,
679 160.0601987, 164.8202021, 169.6148258, 174.4435769,
680 179.3059798, 184.2015749, 189.1299182, 194.0905802,
681 199.0831450, 204.1072101, 209.1623853, 214.2482925,
682 219.3645645, 224.5108452, 229.6867885, 234.8920585,
683 240.1263282, 245.3892798, 250.6806041, 256.0000000,
684 261.3471743, 266.7218414, 272.1237227, 277.5525469,
685 283.0080491, 288.4899710, 293.9980602, 299.5320705,
686 305.0917613, 310.6768976, 316.2872495, 321.9225924,
687 327.5827066, 333.2673772, 338.9763937, 344.7095504,
688 350.4666456, 356.2474818, 362.0518657, 367.8796078,
689 373.7305221, 379.6044268, 385.5011431, 391.4204959,
690 397.3623135, 403.3264272, 409.3126715, 415.3208841,
691 421.3509053, 427.4025787, 433.4757504, 439.5702691,
692 445.6859865, 451.8227566, 457.9804359, 464.1588834,
693 470.3579603, 476.5775303, 482.8174592, 489.0776150,
694 495.3578679, 501.6580901, 507.9781556, 514.3179408,
695 520.6773237, 527.0561843, 533.4544042, 539.8718672,
696 546.3084584, 552.7640648, 559.2385751, 565.7318795,
697 572.2438698, 578.7744395, 585.3234834, 591.8908978,
698 598.4765806, 605.0804310, 611.7023495, 618.3422381,
699 625.0000000, 631.6755398, 638.3687633, 645.0795775,
700 651.8078908, 658.5536125, 665.3166532, 672.0969248,
701 678.8943400, 685.7088129, 692.5402584, 699.3885927,
702 706.2537328, 713.1355968, 720.0341040, 726.9491743,
703 733.8807287, 740.8286894, 747.7929790, 754.7735215,
704 761.7702415, 768.7830645, 775.8119169, 782.8567260,
705 789.9174197, 796.9939269, 804.0861773, 811.1941012,
706 818.3176299, 825.4566953, 832.6112300, 839.7811675,
707 846.9664418, 854.1669878, 861.3827409, 868.6136373,
708 875.8596139, 883.1206081, 890.3965581, 897.6874027,
709 904.9930812, 912.3135336, 919.6487005, 926.9985233,
710 934.3629435, 941.7419036, 949.1353466, 956.5432158,
711 963.9654554, 971.4020099, 978.8528243, 986.3178444,
712 993.7970162, 1001.2902864, 1008.7976022, 1016.3189112,
713 1023.8541615, 1031.4033017, 1038.9662809, 1046.5430486,
714 1054.1335548, 1061.7377500, 1069.3555851, 1076.9870114,
715 1084.6319806, 1092.2904450, 1099.9623571, 1107.6476700,
716 1115.3463371, 1123.0583122, 1130.7835495, 1138.5220038,
717 1146.2736299, 1154.0383833, 1161.8162197, 1169.6070953,
718 1177.4109665, 1185.2277903, 1193.0575238, 1200.9001246,
719 1208.7555507, 1216.6237602, 1224.5047118, 1232.3983645,
720 1240.3046773, 1248.2236101, 1256.1551226, 1264.0991750,
721 1272.0557280, 1280.0247424, 1288.0061792, 1296.0000000,
722 1304.0061665, 1312.0246407, 1320.0553851, 1328.0983621,
723 1336.1535347, 1344.2208661, 1352.3003198, 1360.3918594,
724 1368.4954490, 1376.6110529, 1384.7386355, 1392.8781617,
725 1401.0295965, 1409.1929053, 1417.3680536, 1425.5550071,
726 1433.7537320, 1441.9641946, 1450.1863613, 1458.4201990,
727 1466.6656746, 1474.9227555, 1483.1914090, 1491.4716029,
728 1499.7633050, 1508.0664836, 1516.3811070, 1524.7071438,
729 1533.0445627, 1541.3933328, 1549.7534233, 1558.1248036,
730 1566.5074433, 1574.9013124, 1583.3063807, 1591.7226186,
731 1600.1499965, 1608.5884850, 1617.0380549, 1625.4986772,
732 1633.9703232, 1642.4529642, 1650.9465718, 1659.4511177,
733 1667.9665739, 1676.4929125, 1685.0301058, 1693.5781262,
734 1702.1369465, 1710.7065393, 1719.2868777, 1727.8779349,
735 1736.4796841, 1745.0920989, 1753.7151529, 1762.3488199,
736 1770.9930739, 1779.6478889, 1788.3132394, 1796.9890997,
737 1805.6754445, 1814.3722485, 1823.0794865, 1831.7971337,
738 1840.5251653, 1849.2635565, 1858.0122829, 1866.7713202,
739 1875.5406441, 1884.3202305, 1893.1100555, 1901.9100954,
740 1910.7203263, 1919.5407249, 1928.3712678, 1937.2119316,
741 1946.0626932, 1954.9235298, 1963.7944183, 1972.6753362,
742 1981.5662607, 1990.4671694, 1999.3780400, 2008.2988502,
743 2017.2295780, 2026.1702013, 2035.1206983, 2044.0810473,
744 2053.0512267, 2062.0312148, 2071.0209905, 2080.0205323,
745 2089.0298192, 2098.0488302, 2107.0775442, 2116.1159404,
746 2125.1639983, 2134.2216972, 2143.2890165, 2152.3659360,
747 2161.4524354, 2170.5484945, 2179.6540933, 2188.7692117,
748 2197.8938301, 2207.0279286, 2216.1714876, 2225.3244875,
749 2234.4869090, 2243.6587327, 2252.8399393, 2262.0305097,
750 2271.2304249, 2280.4396659, 2289.6582139, 2298.8860501,
751 2308.1231559, 2317.3695127, 2326.6251019, 2335.8899054,
752 2345.1639046, 2354.4470815, 2363.7394180, 2373.0408959,
753 2382.3514975, 2391.6712048, 2401.0000000, 2410.3378655,
754 2419.6847838, 2429.0407373, 2438.4057086, 2447.7796803,
755 2457.1626352, 2466.5545562, 2475.9554262, 2485.3652281,
756 2494.7839450, 2504.2115601, 2513.6480566, 2523.0934179,
757 2532.5476273, 2542.0106682, 2551.4825244, 2560.9631792,
758 2570.4526166, 2579.9508201, 2589.4577738, 2598.9734614,
759 2608.4978671, 2618.0309748, 2627.5727687, 2637.1232331,
760 2646.6823521, 2656.2501103, 2665.8264919, 2675.4114815,
761 2685.0050637, 2694.6072231, 2704.2179443, 2713.8372123,
762 2723.4650117, 2733.1013276, 2742.7461448, 2752.3994485,
763 2762.0612237, 2771.7314556, 2781.4101295, 2791.0972306,
764 2800.7927443, 2810.4966560, 2820.2089512, 2829.9296156,
765 2839.6586345, 2849.3959939, 2859.1416793, 2868.8956767,
766 2878.6579717, 2888.4285505, 2898.2073989, 2907.9945030,
767 2917.7898488, 2927.5934226, 2937.4052106, 2947.2251989,
768 2957.0533740, 2966.8897222, 2976.7342300, 2986.5868839,
769 2996.4476703, 3006.3165760, 3016.1935876, 3026.0786917,
770 3035.9718753, 3045.8731250, 3055.7824278, 3065.6997706,
771 3075.6251404, 3085.5585243, 3095.4999092, 3105.4492825,
772 3115.4066312, 3125.3719425, 3135.3452039, 3145.3264026,
773 3155.3155261, 3165.3125617, 3175.3174970, 3185.3303196,
774 3195.3510169, 3205.3795768, 3215.4159867, 3225.4602346,
775 3235.5123081, 3245.5721951, 3255.6398836, 3265.7153613,
776 3275.7986164, 3285.8896367, 3295.9884105, 3306.0949257,
777 3316.2091706, 3326.3311334, 3336.4608022, 3346.5981655,
778 3356.7432115, 3366.8959286, 3377.0563052, 3387.2243299,
779 3397.3999911, 3407.5832773, 3417.7741773, 3427.9726795,
780 3438.1787728, 3448.3924458, 3458.6136872, 3468.8424860,
781 3479.0788309, 3489.3227109, 3499.5741148, 3509.8330317,
782 3520.0994506, 3530.3733604, 3540.6547503, 3550.9436095,
783 3561.2399271, 3571.5436923, 3581.8548943, 3592.1735225,
784 3602.4995662, 3612.8330147, 3623.1738574, 3633.5220839,
785 3643.8776835, 3654.2406458, 3664.6109603, 3674.9886166,
786 3685.3736044, 3695.7659132, 3706.1655329, 3716.5724532,
787 3726.9866637, 3737.4081544, 3747.8369150, 3758.2729355,
788 3768.7162058, 3779.1667157, 3789.6244554, 3800.0894147,
789 3810.5615838, 3821.0409528, 3831.5275117, 3842.0212507,
790 3852.5221601, 3863.0302299, 3873.5454506, 3884.0678123,
791 3894.5973054, 3905.1339203, 3915.6776473, 3926.2284768,
792 3936.7863993, 3947.3514054, 3957.9234854, 3968.5026299,
793 3979.0888296, 3989.6820750, 4000.2823568, 4010.8896656,
794 4021.5039921, 4032.1253271, 4042.7536614, 4053.3889857,
795 4064.0312908, 4074.6805676, 4085.3368071, 4096.0000000,
796 };
797
798 #endif /* CONFIG_HARDCODED_TABLES */