FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
aactab.c
Go to the documentation of this file.
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
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 #include "aac_tablegen.h"
33 
34 #include <stdint.h>
35 
38 
40  41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
41 };
42 
44  12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
45 };
46 
48  33, 33, 38, 40, 40, 40, 41, 41, 37, 37, 37, 34, 34
49 };
50 
51 const uint32_t ff_aac_scalefactor_code[121] = {
52  0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
53  0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
54  0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
55  0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
56  0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
57  0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
58  0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
59  0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
60  0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
61  0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
62  0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
63  0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
64  0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
65  0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
66  0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
67  0x7fff3,
68 };
69 
71  18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
72  19, 19, 19, 18, 19, 18, 17, 17, 16, 17, 16, 16, 16, 16, 15, 15,
73  14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, 12, 11, 10, 10,
74  10, 9, 9, 8, 8, 8, 7, 6, 6, 5, 4, 3, 1, 4, 4, 5,
75  6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12,
76  12, 13, 13, 13, 14, 14, 16, 15, 16, 15, 18, 19, 19, 19, 19, 19,
77  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
78  19, 19, 19, 19, 19, 19, 19, 19, 19,
79 };
80 
81 static const uint16_t codes1[81] = {
82  0x7f8, 0x1f1, 0x7fd, 0x3f5, 0x068, 0x3f0, 0x7f7, 0x1ec,
83  0x7f5, 0x3f1, 0x072, 0x3f4, 0x074, 0x011, 0x076, 0x1eb,
84  0x06c, 0x3f6, 0x7fc, 0x1e1, 0x7f1, 0x1f0, 0x061, 0x1f6,
85  0x7f2, 0x1ea, 0x7fb, 0x1f2, 0x069, 0x1ed, 0x077, 0x017,
86  0x06f, 0x1e6, 0x064, 0x1e5, 0x067, 0x015, 0x062, 0x012,
87  0x000, 0x014, 0x065, 0x016, 0x06d, 0x1e9, 0x063, 0x1e4,
88  0x06b, 0x013, 0x071, 0x1e3, 0x070, 0x1f3, 0x7fe, 0x1e7,
89  0x7f3, 0x1ef, 0x060, 0x1ee, 0x7f0, 0x1e2, 0x7fa, 0x3f3,
90  0x06a, 0x1e8, 0x075, 0x010, 0x073, 0x1f4, 0x06e, 0x3f7,
91  0x7f6, 0x1e0, 0x7f9, 0x3f2, 0x066, 0x1f5, 0x7ff, 0x1f7,
92  0x7f4,
93 };
94 
95 static const uint8_t bits1[81] = {
96  11, 9, 11, 10, 7, 10, 11, 9, 11, 10, 7, 10, 7, 5, 7, 9,
97  7, 10, 11, 9, 11, 9, 7, 9, 11, 9, 11, 9, 7, 9, 7, 5,
98  7, 9, 7, 9, 7, 5, 7, 5, 1, 5, 7, 5, 7, 9, 7, 9,
99  7, 5, 7, 9, 7, 9, 11, 9, 11, 9, 7, 9, 11, 9, 11, 10,
100  7, 9, 7, 5, 7, 9, 7, 10, 11, 9, 11, 10, 7, 9, 11, 9,
101  11,
102 };
103 
104 static const uint16_t codes2[81] = {
105  0x1f3, 0x06f, 0x1fd, 0x0eb, 0x023, 0x0ea, 0x1f7, 0x0e8,
106  0x1fa, 0x0f2, 0x02d, 0x070, 0x020, 0x006, 0x02b, 0x06e,
107  0x028, 0x0e9, 0x1f9, 0x066, 0x0f8, 0x0e7, 0x01b, 0x0f1,
108  0x1f4, 0x06b, 0x1f5, 0x0ec, 0x02a, 0x06c, 0x02c, 0x00a,
109  0x027, 0x067, 0x01a, 0x0f5, 0x024, 0x008, 0x01f, 0x009,
110  0x000, 0x007, 0x01d, 0x00b, 0x030, 0x0ef, 0x01c, 0x064,
111  0x01e, 0x00c, 0x029, 0x0f3, 0x02f, 0x0f0, 0x1fc, 0x071,
112  0x1f2, 0x0f4, 0x021, 0x0e6, 0x0f7, 0x068, 0x1f8, 0x0ee,
113  0x022, 0x065, 0x031, 0x002, 0x026, 0x0ed, 0x025, 0x06a,
114  0x1fb, 0x072, 0x1fe, 0x069, 0x02e, 0x0f6, 0x1ff, 0x06d,
115  0x1f6,
116 };
117 
118 static const uint8_t bits2[81] = {
119  9, 7, 9, 8, 6, 8, 9, 8, 9, 8, 6, 7, 6, 5, 6, 7,
120  6, 8, 9, 7, 8, 8, 6, 8, 9, 7, 9, 8, 6, 7, 6, 5,
121  6, 7, 6, 8, 6, 5, 6, 5, 3, 5, 6, 5, 6, 8, 6, 7,
122  6, 5, 6, 8, 6, 8, 9, 7, 9, 8, 6, 8, 8, 7, 9, 8,
123  6, 7, 6, 4, 6, 8, 6, 7, 9, 7, 9, 7, 6, 8, 9, 7,
124  9,
125 };
126 
127 static const uint16_t codes3[81] = {
128  0x0000, 0x0009, 0x00ef, 0x000b, 0x0019, 0x00f0, 0x01eb, 0x01e6,
129  0x03f2, 0x000a, 0x0035, 0x01ef, 0x0034, 0x0037, 0x01e9, 0x01ed,
130  0x01e7, 0x03f3, 0x01ee, 0x03ed, 0x1ffa, 0x01ec, 0x01f2, 0x07f9,
131  0x07f8, 0x03f8, 0x0ff8, 0x0008, 0x0038, 0x03f6, 0x0036, 0x0075,
132  0x03f1, 0x03eb, 0x03ec, 0x0ff4, 0x0018, 0x0076, 0x07f4, 0x0039,
133  0x0074, 0x03ef, 0x01f3, 0x01f4, 0x07f6, 0x01e8, 0x03ea, 0x1ffc,
134  0x00f2, 0x01f1, 0x0ffb, 0x03f5, 0x07f3, 0x0ffc, 0x00ee, 0x03f7,
135  0x7ffe, 0x01f0, 0x07f5, 0x7ffd, 0x1ffb, 0x3ffa, 0xffff, 0x00f1,
136  0x03f0, 0x3ffc, 0x01ea, 0x03ee, 0x3ffb, 0x0ff6, 0x0ffa, 0x7ffc,
137  0x07f2, 0x0ff5, 0xfffe, 0x03f4, 0x07f7, 0x7ffb, 0x0ff7, 0x0ff9,
138  0x7ffa,
139 };
140 
141 static const uint8_t bits3[81] = {
142  1, 4, 8, 4, 5, 8, 9, 9, 10, 4, 6, 9, 6, 6, 9, 9,
143  9, 10, 9, 10, 13, 9, 9, 11, 11, 10, 12, 4, 6, 10, 6, 7,
144  10, 10, 10, 12, 5, 7, 11, 6, 7, 10, 9, 9, 11, 9, 10, 13,
145  8, 9, 12, 10, 11, 12, 8, 10, 15, 9, 11, 15, 13, 14, 16, 8,
146  10, 14, 9, 10, 14, 12, 12, 15, 11, 12, 16, 10, 11, 15, 12, 12,
147  15,
148 };
149 
150 static const uint16_t codes4[81] = {
151  0x007, 0x016, 0x0f6, 0x018, 0x008, 0x0ef, 0x1ef, 0x0f3,
152  0x7f8, 0x019, 0x017, 0x0ed, 0x015, 0x001, 0x0e2, 0x0f0,
153  0x070, 0x3f0, 0x1ee, 0x0f1, 0x7fa, 0x0ee, 0x0e4, 0x3f2,
154  0x7f6, 0x3ef, 0x7fd, 0x005, 0x014, 0x0f2, 0x009, 0x004,
155  0x0e5, 0x0f4, 0x0e8, 0x3f4, 0x006, 0x002, 0x0e7, 0x003,
156  0x000, 0x06b, 0x0e3, 0x069, 0x1f3, 0x0eb, 0x0e6, 0x3f6,
157  0x06e, 0x06a, 0x1f4, 0x3ec, 0x1f0, 0x3f9, 0x0f5, 0x0ec,
158  0x7fb, 0x0ea, 0x06f, 0x3f7, 0x7f9, 0x3f3, 0xfff, 0x0e9,
159  0x06d, 0x3f8, 0x06c, 0x068, 0x1f5, 0x3ee, 0x1f2, 0x7f4,
160  0x7f7, 0x3f1, 0xffe, 0x3ed, 0x1f1, 0x7f5, 0x7fe, 0x3f5,
161  0x7fc,
162 };
163 
164 static const uint8_t bits4[81] = {
165  4, 5, 8, 5, 4, 8, 9, 8, 11, 5, 5, 8, 5, 4, 8, 8,
166  7, 10, 9, 8, 11, 8, 8, 10, 11, 10, 11, 4, 5, 8, 4, 4,
167  8, 8, 8, 10, 4, 4, 8, 4, 4, 7, 8, 7, 9, 8, 8, 10,
168  7, 7, 9, 10, 9, 10, 8, 8, 11, 8, 7, 10, 11, 10, 12, 8,
169  7, 10, 7, 7, 9, 10, 9, 11, 11, 10, 12, 10, 9, 11, 11, 10,
170  11,
171 };
172 
173 static const uint16_t codes5[81] = {
174  0x1fff, 0x0ff7, 0x07f4, 0x07e8, 0x03f1, 0x07ee, 0x07f9, 0x0ff8,
175  0x1ffd, 0x0ffd, 0x07f1, 0x03e8, 0x01e8, 0x00f0, 0x01ec, 0x03ee,
176  0x07f2, 0x0ffa, 0x0ff4, 0x03ef, 0x01f2, 0x00e8, 0x0070, 0x00ec,
177  0x01f0, 0x03ea, 0x07f3, 0x07eb, 0x01eb, 0x00ea, 0x001a, 0x0008,
178  0x0019, 0x00ee, 0x01ef, 0x07ed, 0x03f0, 0x00f2, 0x0073, 0x000b,
179  0x0000, 0x000a, 0x0071, 0x00f3, 0x07e9, 0x07ef, 0x01ee, 0x00ef,
180  0x0018, 0x0009, 0x001b, 0x00eb, 0x01e9, 0x07ec, 0x07f6, 0x03eb,
181  0x01f3, 0x00ed, 0x0072, 0x00e9, 0x01f1, 0x03ed, 0x07f7, 0x0ff6,
182  0x07f0, 0x03e9, 0x01ed, 0x00f1, 0x01ea, 0x03ec, 0x07f8, 0x0ff9,
183  0x1ffc, 0x0ffc, 0x0ff5, 0x07ea, 0x03f3, 0x03f2, 0x07f5, 0x0ffb,
184  0x1ffe,
185 };
186 
187 static const uint8_t bits5[81] = {
188  13, 12, 11, 11, 10, 11, 11, 12, 13, 12, 11, 10, 9, 8, 9, 10,
189  11, 12, 12, 10, 9, 8, 7, 8, 9, 10, 11, 11, 9, 8, 5, 4,
190  5, 8, 9, 11, 10, 8, 7, 4, 1, 4, 7, 8, 11, 11, 9, 8,
191  5, 4, 5, 8, 9, 11, 11, 10, 9, 8, 7, 8, 9, 10, 11, 12,
192  11, 10, 9, 8, 9, 10, 11, 12, 13, 12, 12, 11, 10, 10, 11, 12,
193  13,
194 };
195 
196 static const uint16_t codes6[81] = {
197  0x7fe, 0x3fd, 0x1f1, 0x1eb, 0x1f4, 0x1ea, 0x1f0, 0x3fc,
198  0x7fd, 0x3f6, 0x1e5, 0x0ea, 0x06c, 0x071, 0x068, 0x0f0,
199  0x1e6, 0x3f7, 0x1f3, 0x0ef, 0x032, 0x027, 0x028, 0x026,
200  0x031, 0x0eb, 0x1f7, 0x1e8, 0x06f, 0x02e, 0x008, 0x004,
201  0x006, 0x029, 0x06b, 0x1ee, 0x1ef, 0x072, 0x02d, 0x002,
202  0x000, 0x003, 0x02f, 0x073, 0x1fa, 0x1e7, 0x06e, 0x02b,
203  0x007, 0x001, 0x005, 0x02c, 0x06d, 0x1ec, 0x1f9, 0x0ee,
204  0x030, 0x024, 0x02a, 0x025, 0x033, 0x0ec, 0x1f2, 0x3f8,
205  0x1e4, 0x0ed, 0x06a, 0x070, 0x069, 0x074, 0x0f1, 0x3fa,
206  0x7ff, 0x3f9, 0x1f6, 0x1ed, 0x1f8, 0x1e9, 0x1f5, 0x3fb,
207  0x7fc,
208 };
209 
210 static const uint8_t bits6[81] = {
211  11, 10, 9, 9, 9, 9, 9, 10, 11, 10, 9, 8, 7, 7, 7, 8,
212  9, 10, 9, 8, 6, 6, 6, 6, 6, 8, 9, 9, 7, 6, 4, 4,
213  4, 6, 7, 9, 9, 7, 6, 4, 4, 4, 6, 7, 9, 9, 7, 6,
214  4, 4, 4, 6, 7, 9, 9, 8, 6, 6, 6, 6, 6, 8, 9, 10,
215  9, 8, 7, 7, 7, 7, 8, 10, 11, 10, 9, 9, 9, 9, 9, 10,
216  11,
217 };
218 
219 static const uint16_t codes7[64] = {
220  0x000, 0x005, 0x037, 0x074, 0x0f2, 0x1eb, 0x3ed, 0x7f7,
221  0x004, 0x00c, 0x035, 0x071, 0x0ec, 0x0ee, 0x1ee, 0x1f5,
222  0x036, 0x034, 0x072, 0x0ea, 0x0f1, 0x1e9, 0x1f3, 0x3f5,
223  0x073, 0x070, 0x0eb, 0x0f0, 0x1f1, 0x1f0, 0x3ec, 0x3fa,
224  0x0f3, 0x0ed, 0x1e8, 0x1ef, 0x3ef, 0x3f1, 0x3f9, 0x7fb,
225  0x1ed, 0x0ef, 0x1ea, 0x1f2, 0x3f3, 0x3f8, 0x7f9, 0x7fc,
226  0x3ee, 0x1ec, 0x1f4, 0x3f4, 0x3f7, 0x7f8, 0xffd, 0xffe,
227  0x7f6, 0x3f0, 0x3f2, 0x3f6, 0x7fa, 0x7fd, 0xffc, 0xfff,
228 };
229 
230 static const uint8_t bits7[64] = {
231  1, 3, 6, 7, 8, 9, 10, 11, 3, 4, 6, 7, 8, 8, 9, 9,
232  6, 6, 7, 8, 8, 9, 9, 10, 7, 7, 8, 8, 9, 9, 10, 10,
233  8, 8, 9, 9, 10, 10, 10, 11, 9, 8, 9, 9, 10, 10, 11, 11,
234  10, 9, 9, 10, 10, 11, 12, 12, 11, 10, 10, 10, 11, 11, 12, 12,
235 };
236 
237 static const uint16_t codes8[64] = {
238  0x00e, 0x005, 0x010, 0x030, 0x06f, 0x0f1, 0x1fa, 0x3fe,
239  0x003, 0x000, 0x004, 0x012, 0x02c, 0x06a, 0x075, 0x0f8,
240  0x00f, 0x002, 0x006, 0x014, 0x02e, 0x069, 0x072, 0x0f5,
241  0x02f, 0x011, 0x013, 0x02a, 0x032, 0x06c, 0x0ec, 0x0fa,
242  0x071, 0x02b, 0x02d, 0x031, 0x06d, 0x070, 0x0f2, 0x1f9,
243  0x0ef, 0x068, 0x033, 0x06b, 0x06e, 0x0ee, 0x0f9, 0x3fc,
244  0x1f8, 0x074, 0x073, 0x0ed, 0x0f0, 0x0f6, 0x1f6, 0x1fd,
245  0x3fd, 0x0f3, 0x0f4, 0x0f7, 0x1f7, 0x1fb, 0x1fc, 0x3ff,
246 };
247 
248 static const uint8_t bits8[64] = {
249  5, 4, 5, 6, 7, 8, 9, 10, 4, 3, 4, 5, 6, 7, 7, 8,
250  5, 4, 4, 5, 6, 7, 7, 8, 6, 5, 5, 6, 6, 7, 8, 8,
251  7, 6, 6, 6, 7, 7, 8, 9, 8, 7, 6, 7, 7, 8, 8, 10,
252  9, 7, 7, 8, 8, 8, 9, 9, 10, 8, 8, 8, 9, 9, 9, 10,
253 };
254 
255 static const uint16_t codes9[169] = {
256  0x0000, 0x0005, 0x0037, 0x00e7, 0x01de, 0x03ce, 0x03d9, 0x07c8,
257  0x07cd, 0x0fc8, 0x0fdd, 0x1fe4, 0x1fec, 0x0004, 0x000c, 0x0035,
258  0x0072, 0x00ea, 0x00ed, 0x01e2, 0x03d1, 0x03d3, 0x03e0, 0x07d8,
259  0x0fcf, 0x0fd5, 0x0036, 0x0034, 0x0071, 0x00e8, 0x00ec, 0x01e1,
260  0x03cf, 0x03dd, 0x03db, 0x07d0, 0x0fc7, 0x0fd4, 0x0fe4, 0x00e6,
261  0x0070, 0x00e9, 0x01dd, 0x01e3, 0x03d2, 0x03dc, 0x07cc, 0x07ca,
262  0x07de, 0x0fd8, 0x0fea, 0x1fdb, 0x01df, 0x00eb, 0x01dc, 0x01e6,
263  0x03d5, 0x03de, 0x07cb, 0x07dd, 0x07dc, 0x0fcd, 0x0fe2, 0x0fe7,
264  0x1fe1, 0x03d0, 0x01e0, 0x01e4, 0x03d6, 0x07c5, 0x07d1, 0x07db,
265  0x0fd2, 0x07e0, 0x0fd9, 0x0feb, 0x1fe3, 0x1fe9, 0x07c4, 0x01e5,
266  0x03d7, 0x07c6, 0x07cf, 0x07da, 0x0fcb, 0x0fda, 0x0fe3, 0x0fe9,
267  0x1fe6, 0x1ff3, 0x1ff7, 0x07d3, 0x03d8, 0x03e1, 0x07d4, 0x07d9,
268  0x0fd3, 0x0fde, 0x1fdd, 0x1fd9, 0x1fe2, 0x1fea, 0x1ff1, 0x1ff6,
269  0x07d2, 0x03d4, 0x03da, 0x07c7, 0x07d7, 0x07e2, 0x0fce, 0x0fdb,
270  0x1fd8, 0x1fee, 0x3ff0, 0x1ff4, 0x3ff2, 0x07e1, 0x03df, 0x07c9,
271  0x07d6, 0x0fca, 0x0fd0, 0x0fe5, 0x0fe6, 0x1feb, 0x1fef, 0x3ff3,
272  0x3ff4, 0x3ff5, 0x0fe0, 0x07ce, 0x07d5, 0x0fc6, 0x0fd1, 0x0fe1,
273  0x1fe0, 0x1fe8, 0x1ff0, 0x3ff1, 0x3ff8, 0x3ff6, 0x7ffc, 0x0fe8,
274  0x07df, 0x0fc9, 0x0fd7, 0x0fdc, 0x1fdc, 0x1fdf, 0x1fed, 0x1ff5,
275  0x3ff9, 0x3ffb, 0x7ffd, 0x7ffe, 0x1fe7, 0x0fcc, 0x0fd6, 0x0fdf,
276  0x1fde, 0x1fda, 0x1fe5, 0x1ff2, 0x3ffa, 0x3ff7, 0x3ffc, 0x3ffd,
277  0x7fff,
278 };
279 
280 static const uint8_t bits9[169] = {
281  1, 3, 6, 8, 9, 10, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6,
282  7, 8, 8, 9, 10, 10, 10, 11, 12, 12, 6, 6, 7, 8, 8, 9,
283  10, 10, 10, 11, 12, 12, 12, 8, 7, 8, 9, 9, 10, 10, 11, 11,
284  11, 12, 12, 13, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12,
285  13, 10, 9, 9, 10, 11, 11, 11, 12, 11, 12, 12, 13, 13, 11, 9,
286  10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 11, 10, 10, 11, 11,
287  12, 12, 13, 13, 13, 13, 13, 13, 11, 10, 10, 11, 11, 11, 12, 12,
288  13, 13, 14, 13, 14, 11, 10, 11, 11, 12, 12, 12, 12, 13, 13, 14,
289  14, 14, 12, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 12,
290  11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 15, 15, 13, 12, 12, 12,
291  13, 13, 13, 13, 14, 14, 14, 14, 15,
292 };
293 
294 static const uint16_t codes10[169] = {
295  0x022, 0x008, 0x01d, 0x026, 0x05f, 0x0d3, 0x1cf, 0x3d0,
296  0x3d7, 0x3ed, 0x7f0, 0x7f6, 0xffd, 0x007, 0x000, 0x001,
297  0x009, 0x020, 0x054, 0x060, 0x0d5, 0x0dc, 0x1d4, 0x3cd,
298  0x3de, 0x7e7, 0x01c, 0x002, 0x006, 0x00c, 0x01e, 0x028,
299  0x05b, 0x0cd, 0x0d9, 0x1ce, 0x1dc, 0x3d9, 0x3f1, 0x025,
300  0x00b, 0x00a, 0x00d, 0x024, 0x057, 0x061, 0x0cc, 0x0dd,
301  0x1cc, 0x1de, 0x3d3, 0x3e7, 0x05d, 0x021, 0x01f, 0x023,
302  0x027, 0x059, 0x064, 0x0d8, 0x0df, 0x1d2, 0x1e2, 0x3dd,
303  0x3ee, 0x0d1, 0x055, 0x029, 0x056, 0x058, 0x062, 0x0ce,
304  0x0e0, 0x0e2, 0x1da, 0x3d4, 0x3e3, 0x7eb, 0x1c9, 0x05e,
305  0x05a, 0x05c, 0x063, 0x0ca, 0x0da, 0x1c7, 0x1ca, 0x1e0,
306  0x3db, 0x3e8, 0x7ec, 0x1e3, 0x0d2, 0x0cb, 0x0d0, 0x0d7,
307  0x0db, 0x1c6, 0x1d5, 0x1d8, 0x3ca, 0x3da, 0x7ea, 0x7f1,
308  0x1e1, 0x0d4, 0x0cf, 0x0d6, 0x0de, 0x0e1, 0x1d0, 0x1d6,
309  0x3d1, 0x3d5, 0x3f2, 0x7ee, 0x7fb, 0x3e9, 0x1cd, 0x1c8,
310  0x1cb, 0x1d1, 0x1d7, 0x1df, 0x3cf, 0x3e0, 0x3ef, 0x7e6,
311  0x7f8, 0xffa, 0x3eb, 0x1dd, 0x1d3, 0x1d9, 0x1db, 0x3d2,
312  0x3cc, 0x3dc, 0x3ea, 0x7ed, 0x7f3, 0x7f9, 0xff9, 0x7f2,
313  0x3ce, 0x1e4, 0x3cb, 0x3d8, 0x3d6, 0x3e2, 0x3e5, 0x7e8,
314  0x7f4, 0x7f5, 0x7f7, 0xffb, 0x7fa, 0x3ec, 0x3df, 0x3e1,
315  0x3e4, 0x3e6, 0x3f0, 0x7e9, 0x7ef, 0xff8, 0xffe, 0xffc,
316  0xfff,
317 };
318 
319 static const uint8_t bits10[169] = {
320  6, 5, 6, 6, 7, 8, 9, 10, 10, 10, 11, 11, 12, 5, 4, 4,
321  5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 6, 4, 5, 5, 6, 6,
322  7, 8, 8, 9, 9, 10, 10, 6, 5, 5, 5, 6, 7, 7, 8, 8,
323  9, 9, 10, 10, 7, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10,
324  10, 8, 7, 6, 7, 7, 7, 8, 8, 8, 9, 10, 10, 11, 9, 7,
325  7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 9, 8, 8, 8, 8,
326  8, 9, 9, 9, 10, 10, 11, 11, 9, 8, 8, 8, 8, 8, 9, 9,
327  10, 10, 10, 11, 11, 10, 9, 9, 9, 9, 9, 9, 10, 10, 10, 11,
328  11, 12, 10, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 11,
329  10, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 10, 10, 10,
330  10, 10, 10, 11, 11, 12, 12, 12, 12,
331 };
332 
333 static const uint16_t codes11[289] = {
334  0x000, 0x006, 0x019, 0x03d, 0x09c, 0x0c6, 0x1a7, 0x390,
335  0x3c2, 0x3df, 0x7e6, 0x7f3, 0xffb, 0x7ec, 0xffa, 0xffe,
336  0x38e, 0x005, 0x001, 0x008, 0x014, 0x037, 0x042, 0x092,
337  0x0af, 0x191, 0x1a5, 0x1b5, 0x39e, 0x3c0, 0x3a2, 0x3cd,
338  0x7d6, 0x0ae, 0x017, 0x007, 0x009, 0x018, 0x039, 0x040,
339  0x08e, 0x0a3, 0x0b8, 0x199, 0x1ac, 0x1c1, 0x3b1, 0x396,
340  0x3be, 0x3ca, 0x09d, 0x03c, 0x015, 0x016, 0x01a, 0x03b,
341  0x044, 0x091, 0x0a5, 0x0be, 0x196, 0x1ae, 0x1b9, 0x3a1,
342  0x391, 0x3a5, 0x3d5, 0x094, 0x09a, 0x036, 0x038, 0x03a,
343  0x041, 0x08c, 0x09b, 0x0b0, 0x0c3, 0x19e, 0x1ab, 0x1bc,
344  0x39f, 0x38f, 0x3a9, 0x3cf, 0x093, 0x0bf, 0x03e, 0x03f,
345  0x043, 0x045, 0x09e, 0x0a7, 0x0b9, 0x194, 0x1a2, 0x1ba,
346  0x1c3, 0x3a6, 0x3a7, 0x3bb, 0x3d4, 0x09f, 0x1a0, 0x08f,
347  0x08d, 0x090, 0x098, 0x0a6, 0x0b6, 0x0c4, 0x19f, 0x1af,
348  0x1bf, 0x399, 0x3bf, 0x3b4, 0x3c9, 0x3e7, 0x0a8, 0x1b6,
349  0x0ab, 0x0a4, 0x0aa, 0x0b2, 0x0c2, 0x0c5, 0x198, 0x1a4,
350  0x1b8, 0x38c, 0x3a4, 0x3c4, 0x3c6, 0x3dd, 0x3e8, 0x0ad,
351  0x3af, 0x192, 0x0bd, 0x0bc, 0x18e, 0x197, 0x19a, 0x1a3,
352  0x1b1, 0x38d, 0x398, 0x3b7, 0x3d3, 0x3d1, 0x3db, 0x7dd,
353  0x0b4, 0x3de, 0x1a9, 0x19b, 0x19c, 0x1a1, 0x1aa, 0x1ad,
354  0x1b3, 0x38b, 0x3b2, 0x3b8, 0x3ce, 0x3e1, 0x3e0, 0x7d2,
355  0x7e5, 0x0b7, 0x7e3, 0x1bb, 0x1a8, 0x1a6, 0x1b0, 0x1b2,
356  0x1b7, 0x39b, 0x39a, 0x3ba, 0x3b5, 0x3d6, 0x7d7, 0x3e4,
357  0x7d8, 0x7ea, 0x0ba, 0x7e8, 0x3a0, 0x1bd, 0x1b4, 0x38a,
358  0x1c4, 0x392, 0x3aa, 0x3b0, 0x3bc, 0x3d7, 0x7d4, 0x7dc,
359  0x7db, 0x7d5, 0x7f0, 0x0c1, 0x7fb, 0x3c8, 0x3a3, 0x395,
360  0x39d, 0x3ac, 0x3ae, 0x3c5, 0x3d8, 0x3e2, 0x3e6, 0x7e4,
361  0x7e7, 0x7e0, 0x7e9, 0x7f7, 0x190, 0x7f2, 0x393, 0x1be,
362  0x1c0, 0x394, 0x397, 0x3ad, 0x3c3, 0x3c1, 0x3d2, 0x7da,
363  0x7d9, 0x7df, 0x7eb, 0x7f4, 0x7fa, 0x195, 0x7f8, 0x3bd,
364  0x39c, 0x3ab, 0x3a8, 0x3b3, 0x3b9, 0x3d0, 0x3e3, 0x3e5,
365  0x7e2, 0x7de, 0x7ed, 0x7f1, 0x7f9, 0x7fc, 0x193, 0xffd,
366  0x3dc, 0x3b6, 0x3c7, 0x3cc, 0x3cb, 0x3d9, 0x3da, 0x7d3,
367  0x7e1, 0x7ee, 0x7ef, 0x7f5, 0x7f6, 0xffc, 0xfff, 0x19d,
368  0x1c2, 0x0b5, 0x0a1, 0x096, 0x097, 0x095, 0x099, 0x0a0,
369  0x0a2, 0x0ac, 0x0a9, 0x0b1, 0x0b3, 0x0bb, 0x0c0, 0x18f,
370  0x004,
371 };
372 
373 static const uint8_t bits11[289] = {
374  4, 5, 6, 7, 8, 8, 9, 10, 10, 10, 11, 11, 12, 11, 12, 12,
375  10, 5, 4, 5, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10,
376  11, 8, 6, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10,
377  10, 10, 8, 7, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10,
378  10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
379  10, 10, 10, 10, 8, 8, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9,
380  9, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9,
381  9, 10, 10, 10, 10, 10, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9,
382  9, 10, 10, 10, 10, 10, 10, 8, 10, 9, 8, 8, 9, 9, 9, 9,
383  9, 10, 10, 10, 10, 10, 10, 11, 8, 10, 9, 9, 9, 9, 9, 9,
384  9, 10, 10, 10, 10, 10, 10, 11, 11, 8, 11, 9, 9, 9, 9, 9,
385  9, 10, 10, 10, 10, 10, 11, 10, 11, 11, 8, 11, 10, 9, 9, 10,
386  9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11, 10, 10, 10,
387  10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 9, 11, 10, 9,
388  9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 11, 10,
389  10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 9, 12,
390  10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 9,
391  9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
392  5,
393 };
394 
395 const uint16_t * const ff_aac_spectral_codes[11] = {
398 };
399 
400 const uint8_t * const ff_aac_spectral_bits[11] = {
402  bits9, bits10, bits11,
403 };
404 
405 const uint16_t ff_aac_spectral_sizes[11] = {
406  81, 81, 81, 81, 81, 81, 64, 64, 169, 169, 289,
407 };
408 
409 /* NOTE:
410  * 64.0f is a special value indicating the existence of an escape code in the
411  * bitstream.
412  */
413 static const DECLARE_ALIGNED(16, float, codebook_vector0)[324] = {
414  -1.0000000, -1.0000000, -1.0000000, -1.0000000,
415  -1.0000000, -1.0000000, -1.0000000, 0.0000000,
416  -1.0000000, -1.0000000, -1.0000000, 1.0000000,
417  -1.0000000, -1.0000000, 0.0000000, -1.0000000,
418  -1.0000000, -1.0000000, 0.0000000, 0.0000000,
419  -1.0000000, -1.0000000, 0.0000000, 1.0000000,
420  -1.0000000, -1.0000000, 1.0000000, -1.0000000,
421  -1.0000000, -1.0000000, 1.0000000, 0.0000000,
422  -1.0000000, -1.0000000, 1.0000000, 1.0000000,
423  -1.0000000, 0.0000000, -1.0000000, -1.0000000,
424  -1.0000000, 0.0000000, -1.0000000, 0.0000000,
425  -1.0000000, 0.0000000, -1.0000000, 1.0000000,
426  -1.0000000, 0.0000000, 0.0000000, -1.0000000,
427  -1.0000000, 0.0000000, 0.0000000, 0.0000000,
428  -1.0000000, 0.0000000, 0.0000000, 1.0000000,
429  -1.0000000, 0.0000000, 1.0000000, -1.0000000,
430  -1.0000000, 0.0000000, 1.0000000, 0.0000000,
431  -1.0000000, 0.0000000, 1.0000000, 1.0000000,
432  -1.0000000, 1.0000000, -1.0000000, -1.0000000,
433  -1.0000000, 1.0000000, -1.0000000, 0.0000000,
434  -1.0000000, 1.0000000, -1.0000000, 1.0000000,
435  -1.0000000, 1.0000000, 0.0000000, -1.0000000,
436  -1.0000000, 1.0000000, 0.0000000, 0.0000000,
437  -1.0000000, 1.0000000, 0.0000000, 1.0000000,
438  -1.0000000, 1.0000000, 1.0000000, -1.0000000,
439  -1.0000000, 1.0000000, 1.0000000, 0.0000000,
440  -1.0000000, 1.0000000, 1.0000000, 1.0000000,
441  0.0000000, -1.0000000, -1.0000000, -1.0000000,
442  0.0000000, -1.0000000, -1.0000000, 0.0000000,
443  0.0000000, -1.0000000, -1.0000000, 1.0000000,
444  0.0000000, -1.0000000, 0.0000000, -1.0000000,
445  0.0000000, -1.0000000, 0.0000000, 0.0000000,
446  0.0000000, -1.0000000, 0.0000000, 1.0000000,
447  0.0000000, -1.0000000, 1.0000000, -1.0000000,
448  0.0000000, -1.0000000, 1.0000000, 0.0000000,
449  0.0000000, -1.0000000, 1.0000000, 1.0000000,
450  0.0000000, 0.0000000, -1.0000000, -1.0000000,
451  0.0000000, 0.0000000, -1.0000000, 0.0000000,
452  0.0000000, 0.0000000, -1.0000000, 1.0000000,
453  0.0000000, 0.0000000, 0.0000000, -1.0000000,
454  0.0000000, 0.0000000, 0.0000000, 0.0000000,
455  0.0000000, 0.0000000, 0.0000000, 1.0000000,
456  0.0000000, 0.0000000, 1.0000000, -1.0000000,
457  0.0000000, 0.0000000, 1.0000000, 0.0000000,
458  0.0000000, 0.0000000, 1.0000000, 1.0000000,
459  0.0000000, 1.0000000, -1.0000000, -1.0000000,
460  0.0000000, 1.0000000, -1.0000000, 0.0000000,
461  0.0000000, 1.0000000, -1.0000000, 1.0000000,
462  0.0000000, 1.0000000, 0.0000000, -1.0000000,
463  0.0000000, 1.0000000, 0.0000000, 0.0000000,
464  0.0000000, 1.0000000, 0.0000000, 1.0000000,
465  0.0000000, 1.0000000, 1.0000000, -1.0000000,
466  0.0000000, 1.0000000, 1.0000000, 0.0000000,
467  0.0000000, 1.0000000, 1.0000000, 1.0000000,
468  1.0000000, -1.0000000, -1.0000000, -1.0000000,
469  1.0000000, -1.0000000, -1.0000000, 0.0000000,
470  1.0000000, -1.0000000, -1.0000000, 1.0000000,
471  1.0000000, -1.0000000, 0.0000000, -1.0000000,
472  1.0000000, -1.0000000, 0.0000000, 0.0000000,
473  1.0000000, -1.0000000, 0.0000000, 1.0000000,
474  1.0000000, -1.0000000, 1.0000000, -1.0000000,
475  1.0000000, -1.0000000, 1.0000000, 0.0000000,
476  1.0000000, -1.0000000, 1.0000000, 1.0000000,
477  1.0000000, 0.0000000, -1.0000000, -1.0000000,
478  1.0000000, 0.0000000, -1.0000000, 0.0000000,
479  1.0000000, 0.0000000, -1.0000000, 1.0000000,
480  1.0000000, 0.0000000, 0.0000000, -1.0000000,
481  1.0000000, 0.0000000, 0.0000000, 0.0000000,
482  1.0000000, 0.0000000, 0.0000000, 1.0000000,
483  1.0000000, 0.0000000, 1.0000000, -1.0000000,
484  1.0000000, 0.0000000, 1.0000000, 0.0000000,
485  1.0000000, 0.0000000, 1.0000000, 1.0000000,
486  1.0000000, 1.0000000, -1.0000000, -1.0000000,
487  1.0000000, 1.0000000, -1.0000000, 0.0000000,
488  1.0000000, 1.0000000, -1.0000000, 1.0000000,
489  1.0000000, 1.0000000, 0.0000000, -1.0000000,
490  1.0000000, 1.0000000, 0.0000000, 0.0000000,
491  1.0000000, 1.0000000, 0.0000000, 1.0000000,
492  1.0000000, 1.0000000, 1.0000000, -1.0000000,
493  1.0000000, 1.0000000, 1.0000000, 0.0000000,
494  1.0000000, 1.0000000, 1.0000000, 1.0000000,
495 };
496 
497 static const DECLARE_ALIGNED(16, float, codebook_vector2)[324] = {
498  0.0000000, 0.0000000, 0.0000000, 0.0000000,
499  0.0000000, 0.0000000, 0.0000000, 1.0000000,
500  0.0000000, 0.0000000, 0.0000000, 2.5198421,
501  0.0000000, 0.0000000, 1.0000000, 0.0000000,
502  0.0000000, 0.0000000, 1.0000000, 1.0000000,
503  0.0000000, 0.0000000, 1.0000000, 2.5198421,
504  0.0000000, 0.0000000, 2.5198421, 0.0000000,
505  0.0000000, 0.0000000, 2.5198421, 1.0000000,
506  0.0000000, 0.0000000, 2.5198421, 2.5198421,
507  0.0000000, 1.0000000, 0.0000000, 0.0000000,
508  0.0000000, 1.0000000, 0.0000000, 1.0000000,
509  0.0000000, 1.0000000, 0.0000000, 2.5198421,
510  0.0000000, 1.0000000, 1.0000000, 0.0000000,
511  0.0000000, 1.0000000, 1.0000000, 1.0000000,
512  0.0000000, 1.0000000, 1.0000000, 2.5198421,
513  0.0000000, 1.0000000, 2.5198421, 0.0000000,
514  0.0000000, 1.0000000, 2.5198421, 1.0000000,
515  0.0000000, 1.0000000, 2.5198421, 2.5198421,
516  0.0000000, 2.5198421, 0.0000000, 0.0000000,
517  0.0000000, 2.5198421, 0.0000000, 1.0000000,
518  0.0000000, 2.5198421, 0.0000000, 2.5198421,
519  0.0000000, 2.5198421, 1.0000000, 0.0000000,
520  0.0000000, 2.5198421, 1.0000000, 1.0000000,
521  0.0000000, 2.5198421, 1.0000000, 2.5198421,
522  0.0000000, 2.5198421, 2.5198421, 0.0000000,
523  0.0000000, 2.5198421, 2.5198421, 1.0000000,
524  0.0000000, 2.5198421, 2.5198421, 2.5198421,
525  1.0000000, 0.0000000, 0.0000000, 0.0000000,
526  1.0000000, 0.0000000, 0.0000000, 1.0000000,
527  1.0000000, 0.0000000, 0.0000000, 2.5198421,
528  1.0000000, 0.0000000, 1.0000000, 0.0000000,
529  1.0000000, 0.0000000, 1.0000000, 1.0000000,
530  1.0000000, 0.0000000, 1.0000000, 2.5198421,
531  1.0000000, 0.0000000, 2.5198421, 0.0000000,
532  1.0000000, 0.0000000, 2.5198421, 1.0000000,
533  1.0000000, 0.0000000, 2.5198421, 2.5198421,
534  1.0000000, 1.0000000, 0.0000000, 0.0000000,
535  1.0000000, 1.0000000, 0.0000000, 1.0000000,
536  1.0000000, 1.0000000, 0.0000000, 2.5198421,
537  1.0000000, 1.0000000, 1.0000000, 0.0000000,
538  1.0000000, 1.0000000, 1.0000000, 1.0000000,
539  1.0000000, 1.0000000, 1.0000000, 2.5198421,
540  1.0000000, 1.0000000, 2.5198421, 0.0000000,
541  1.0000000, 1.0000000, 2.5198421, 1.0000000,
542  1.0000000, 1.0000000, 2.5198421, 2.5198421,
543  1.0000000, 2.5198421, 0.0000000, 0.0000000,
544  1.0000000, 2.5198421, 0.0000000, 1.0000000,
545  1.0000000, 2.5198421, 0.0000000, 2.5198421,
546  1.0000000, 2.5198421, 1.0000000, 0.0000000,
547  1.0000000, 2.5198421, 1.0000000, 1.0000000,
548  1.0000000, 2.5198421, 1.0000000, 2.5198421,
549  1.0000000, 2.5198421, 2.5198421, 0.0000000,
550  1.0000000, 2.5198421, 2.5198421, 1.0000000,
551  1.0000000, 2.5198421, 2.5198421, 2.5198421,
552  2.5198421, 0.0000000, 0.0000000, 0.0000000,
553  2.5198421, 0.0000000, 0.0000000, 1.0000000,
554  2.5198421, 0.0000000, 0.0000000, 2.5198421,
555  2.5198421, 0.0000000, 1.0000000, 0.0000000,
556  2.5198421, 0.0000000, 1.0000000, 1.0000000,
557  2.5198421, 0.0000000, 1.0000000, 2.5198421,
558  2.5198421, 0.0000000, 2.5198421, 0.0000000,
559  2.5198421, 0.0000000, 2.5198421, 1.0000000,
560  2.5198421, 0.0000000, 2.5198421, 2.5198421,
561  2.5198421, 1.0000000, 0.0000000, 0.0000000,
562  2.5198421, 1.0000000, 0.0000000, 1.0000000,
563  2.5198421, 1.0000000, 0.0000000, 2.5198421,
564  2.5198421, 1.0000000, 1.0000000, 0.0000000,
565  2.5198421, 1.0000000, 1.0000000, 1.0000000,
566  2.5198421, 1.0000000, 1.0000000, 2.5198421,
567  2.5198421, 1.0000000, 2.5198421, 0.0000000,
568  2.5198421, 1.0000000, 2.5198421, 1.0000000,
569  2.5198421, 1.0000000, 2.5198421, 2.5198421,
570  2.5198421, 2.5198421, 0.0000000, 0.0000000,
571  2.5198421, 2.5198421, 0.0000000, 1.0000000,
572  2.5198421, 2.5198421, 0.0000000, 2.5198421,
573  2.5198421, 2.5198421, 1.0000000, 0.0000000,
574  2.5198421, 2.5198421, 1.0000000, 1.0000000,
575  2.5198421, 2.5198421, 1.0000000, 2.5198421,
576  2.5198421, 2.5198421, 2.5198421, 0.0000000,
577  2.5198421, 2.5198421, 2.5198421, 1.0000000,
578  2.5198421, 2.5198421, 2.5198421, 2.5198421,
579 };
580 
581 static const DECLARE_ALIGNED(16, float, codebook_vector4)[162] = {
582  -6.3496042, -6.3496042, -6.3496042, -4.3267487,
583  -6.3496042, -2.5198421, -6.3496042, -1.0000000,
584  -6.3496042, 0.0000000, -6.3496042, 1.0000000,
585  -6.3496042, 2.5198421, -6.3496042, 4.3267487,
586  -6.3496042, 6.3496042, -4.3267487, -6.3496042,
587  -4.3267487, -4.3267487, -4.3267487, -2.5198421,
588  -4.3267487, -1.0000000, -4.3267487, 0.0000000,
589  -4.3267487, 1.0000000, -4.3267487, 2.5198421,
590  -4.3267487, 4.3267487, -4.3267487, 6.3496042,
591  -2.5198421, -6.3496042, -2.5198421, -4.3267487,
592  -2.5198421, -2.5198421, -2.5198421, -1.0000000,
593  -2.5198421, 0.0000000, -2.5198421, 1.0000000,
594  -2.5198421, 2.5198421, -2.5198421, 4.3267487,
595  -2.5198421, 6.3496042, -1.0000000, -6.3496042,
596  -1.0000000, -4.3267487, -1.0000000, -2.5198421,
597  -1.0000000, -1.0000000, -1.0000000, 0.0000000,
598  -1.0000000, 1.0000000, -1.0000000, 2.5198421,
599  -1.0000000, 4.3267487, -1.0000000, 6.3496042,
600  0.0000000, -6.3496042, 0.0000000, -4.3267487,
601  0.0000000, -2.5198421, 0.0000000, -1.0000000,
602  0.0000000, 0.0000000, 0.0000000, 1.0000000,
603  0.0000000, 2.5198421, 0.0000000, 4.3267487,
604  0.0000000, 6.3496042, 1.0000000, -6.3496042,
605  1.0000000, -4.3267487, 1.0000000, -2.5198421,
606  1.0000000, -1.0000000, 1.0000000, 0.0000000,
607  1.0000000, 1.0000000, 1.0000000, 2.5198421,
608  1.0000000, 4.3267487, 1.0000000, 6.3496042,
609  2.5198421, -6.3496042, 2.5198421, -4.3267487,
610  2.5198421, -2.5198421, 2.5198421, -1.0000000,
611  2.5198421, 0.0000000, 2.5198421, 1.0000000,
612  2.5198421, 2.5198421, 2.5198421, 4.3267487,
613  2.5198421, 6.3496042, 4.3267487, -6.3496042,
614  4.3267487, -4.3267487, 4.3267487, -2.5198421,
615  4.3267487, -1.0000000, 4.3267487, 0.0000000,
616  4.3267487, 1.0000000, 4.3267487, 2.5198421,
617  4.3267487, 4.3267487, 4.3267487, 6.3496042,
618  6.3496042, -6.3496042, 6.3496042, -4.3267487,
619  6.3496042, -2.5198421, 6.3496042, -1.0000000,
620  6.3496042, 0.0000000, 6.3496042, 1.0000000,
621  6.3496042, 2.5198421, 6.3496042, 4.3267487,
622  6.3496042, 6.3496042,
623 };
624 
625 static const DECLARE_ALIGNED(16, float, codebook_vector6)[128] = {
626  0.0000000, 0.0000000, 0.0000000, 1.0000000,
627  0.0000000, 2.5198421, 0.0000000, 4.3267487,
628  0.0000000, 6.3496042, 0.0000000, 8.5498797,
629  0.0000000, 10.9027236, 0.0000000, 13.3905183,
630  1.0000000, 0.0000000, 1.0000000, 1.0000000,
631  1.0000000, 2.5198421, 1.0000000, 4.3267487,
632  1.0000000, 6.3496042, 1.0000000, 8.5498797,
633  1.0000000, 10.9027236, 1.0000000, 13.3905183,
634  2.5198421, 0.0000000, 2.5198421, 1.0000000,
635  2.5198421, 2.5198421, 2.5198421, 4.3267487,
636  2.5198421, 6.3496042, 2.5198421, 8.5498797,
637  2.5198421, 10.9027236, 2.5198421, 13.3905183,
638  4.3267487, 0.0000000, 4.3267487, 1.0000000,
639  4.3267487, 2.5198421, 4.3267487, 4.3267487,
640  4.3267487, 6.3496042, 4.3267487, 8.5498797,
641  4.3267487, 10.9027236, 4.3267487, 13.3905183,
642  6.3496042, 0.0000000, 6.3496042, 1.0000000,
643  6.3496042, 2.5198421, 6.3496042, 4.3267487,
644  6.3496042, 6.3496042, 6.3496042, 8.5498797,
645  6.3496042, 10.9027236, 6.3496042, 13.3905183,
646  8.5498797, 0.0000000, 8.5498797, 1.0000000,
647  8.5498797, 2.5198421, 8.5498797, 4.3267487,
648  8.5498797, 6.3496042, 8.5498797, 8.5498797,
649  8.5498797, 10.9027236, 8.5498797, 13.3905183,
650  10.9027236, 0.0000000, 10.9027236, 1.0000000,
651  10.9027236, 2.5198421, 10.9027236, 4.3267487,
652  10.9027236, 6.3496042, 10.9027236, 8.5498797,
653  10.9027236, 10.9027236, 10.9027236, 13.3905183,
654  13.3905183, 0.0000000, 13.3905183, 1.0000000,
655  13.3905183, 2.5198421, 13.3905183, 4.3267487,
656  13.3905183, 6.3496042, 13.3905183, 8.5498797,
657  13.3905183, 10.9027236, 13.3905183, 13.3905183,
658 };
659 
660 static const DECLARE_ALIGNED(16, float, codebook_vector8)[338] = {
661  0.0000000, 0.0000000, 0.0000000, 1.0000000,
662  0.0000000, 2.5198421, 0.0000000, 4.3267487,
663  0.0000000, 6.3496042, 0.0000000, 8.5498797,
664  0.0000000, 10.9027236, 0.0000000, 13.3905183,
665  0.0000000, 16.0000000, 0.0000000, 18.7207544,
666  0.0000000, 21.5443469, 0.0000000, 24.4637810,
667  0.0000000, 27.4731418, 1.0000000, 0.0000000,
668  1.0000000, 1.0000000, 1.0000000, 2.5198421,
669  1.0000000, 4.3267487, 1.0000000, 6.3496042,
670  1.0000000, 8.5498797, 1.0000000, 10.9027236,
671  1.0000000, 13.3905183, 1.0000000, 16.0000000,
672  1.0000000, 18.7207544, 1.0000000, 21.5443469,
673  1.0000000, 24.4637810, 1.0000000, 27.4731418,
674  2.5198421, 0.0000000, 2.5198421, 1.0000000,
675  2.5198421, 2.5198421, 2.5198421, 4.3267487,
676  2.5198421, 6.3496042, 2.5198421, 8.5498797,
677  2.5198421, 10.9027236, 2.5198421, 13.3905183,
678  2.5198421, 16.0000000, 2.5198421, 18.7207544,
679  2.5198421, 21.5443469, 2.5198421, 24.4637810,
680  2.5198421, 27.4731418, 4.3267487, 0.0000000,
681  4.3267487, 1.0000000, 4.3267487, 2.5198421,
682  4.3267487, 4.3267487, 4.3267487, 6.3496042,
683  4.3267487, 8.5498797, 4.3267487, 10.9027236,
684  4.3267487, 13.3905183, 4.3267487, 16.0000000,
685  4.3267487, 18.7207544, 4.3267487, 21.5443469,
686  4.3267487, 24.4637810, 4.3267487, 27.4731418,
687  6.3496042, 0.0000000, 6.3496042, 1.0000000,
688  6.3496042, 2.5198421, 6.3496042, 4.3267487,
689  6.3496042, 6.3496042, 6.3496042, 8.5498797,
690  6.3496042, 10.9027236, 6.3496042, 13.3905183,
691  6.3496042, 16.0000000, 6.3496042, 18.7207544,
692  6.3496042, 21.5443469, 6.3496042, 24.4637810,
693  6.3496042, 27.4731418, 8.5498797, 0.0000000,
694  8.5498797, 1.0000000, 8.5498797, 2.5198421,
695  8.5498797, 4.3267487, 8.5498797, 6.3496042,
696  8.5498797, 8.5498797, 8.5498797, 10.9027236,
697  8.5498797, 13.3905183, 8.5498797, 16.0000000,
698  8.5498797, 18.7207544, 8.5498797, 21.5443469,
699  8.5498797, 24.4637810, 8.5498797, 27.4731418,
700  10.9027236, 0.0000000, 10.9027236, 1.0000000,
701  10.9027236, 2.5198421, 10.9027236, 4.3267487,
702  10.9027236, 6.3496042, 10.9027236, 8.5498797,
703  10.9027236, 10.9027236, 10.9027236, 13.3905183,
704  10.9027236, 16.0000000, 10.9027236, 18.7207544,
705  10.9027236, 21.5443469, 10.9027236, 24.4637810,
706  10.9027236, 27.4731418, 13.3905183, 0.0000000,
707  13.3905183, 1.0000000, 13.3905183, 2.5198421,
708  13.3905183, 4.3267487, 13.3905183, 6.3496042,
709  13.3905183, 8.5498797, 13.3905183, 10.9027236,
710  13.3905183, 13.3905183, 13.3905183, 16.0000000,
711  13.3905183, 18.7207544, 13.3905183, 21.5443469,
712  13.3905183, 24.4637810, 13.3905183, 27.4731418,
713  16.0000000, 0.0000000, 16.0000000, 1.0000000,
714  16.0000000, 2.5198421, 16.0000000, 4.3267487,
715  16.0000000, 6.3496042, 16.0000000, 8.5498797,
716  16.0000000, 10.9027236, 16.0000000, 13.3905183,
717  16.0000000, 16.0000000, 16.0000000, 18.7207544,
718  16.0000000, 21.5443469, 16.0000000, 24.4637810,
719  16.0000000, 27.4731418, 18.7207544, 0.0000000,
720  18.7207544, 1.0000000, 18.7207544, 2.5198421,
721  18.7207544, 4.3267487, 18.7207544, 6.3496042,
722  18.7207544, 8.5498797, 18.7207544, 10.9027236,
723  18.7207544, 13.3905183, 18.7207544, 16.0000000,
724  18.7207544, 18.7207544, 18.7207544, 21.5443469,
725  18.7207544, 24.4637810, 18.7207544, 27.4731418,
726  21.5443469, 0.0000000, 21.5443469, 1.0000000,
727  21.5443469, 2.5198421, 21.5443469, 4.3267487,
728  21.5443469, 6.3496042, 21.5443469, 8.5498797,
729  21.5443469, 10.9027236, 21.5443469, 13.3905183,
730  21.5443469, 16.0000000, 21.5443469, 18.7207544,
731  21.5443469, 21.5443469, 21.5443469, 24.4637810,
732  21.5443469, 27.4731418, 24.4637810, 0.0000000,
733  24.4637810, 1.0000000, 24.4637810, 2.5198421,
734  24.4637810, 4.3267487, 24.4637810, 6.3496042,
735  24.4637810, 8.5498797, 24.4637810, 10.9027236,
736  24.4637810, 13.3905183, 24.4637810, 16.0000000,
737  24.4637810, 18.7207544, 24.4637810, 21.5443469,
738  24.4637810, 24.4637810, 24.4637810, 27.4731418,
739  27.4731418, 0.0000000, 27.4731418, 1.0000000,
740  27.4731418, 2.5198421, 27.4731418, 4.3267487,
741  27.4731418, 6.3496042, 27.4731418, 8.5498797,
742  27.4731418, 10.9027236, 27.4731418, 13.3905183,
743  27.4731418, 16.0000000, 27.4731418, 18.7207544,
744  27.4731418, 21.5443469, 27.4731418, 24.4637810,
745  27.4731418, 27.4731418,
746 };
747 
748 static const DECLARE_ALIGNED(16, float, codebook_vector10)[578] = {
749  0.0000000, 0.0000000, 0.0000000, 1.0000000,
750  0.0000000, 2.5198421, 0.0000000, 4.3267487,
751  0.0000000, 6.3496042, 0.0000000, 8.5498797,
752  0.0000000, 10.9027236, 0.0000000, 13.3905183,
753  0.0000000, 16.0000000, 0.0000000, 18.7207544,
754  0.0000000, 21.5443469, 0.0000000, 24.4637810,
755  0.0000000, 27.4731418, 0.0000000, 30.5673509,
756  0.0000000, 33.7419917, 0.0000000, 36.9931811,
757  0.0000000, 64.0f, 1.0000000, 0.0000000,
758  1.0000000, 1.0000000, 1.0000000, 2.5198421,
759  1.0000000, 4.3267487, 1.0000000, 6.3496042,
760  1.0000000, 8.5498797, 1.0000000, 10.9027236,
761  1.0000000, 13.3905183, 1.0000000, 16.0000000,
762  1.0000000, 18.7207544, 1.0000000, 21.5443469,
763  1.0000000, 24.4637810, 1.0000000, 27.4731418,
764  1.0000000, 30.5673509, 1.0000000, 33.7419917,
765  1.0000000, 36.9931811, 1.0000000, 64.0f,
766  2.5198421, 0.0000000, 2.5198421, 1.0000000,
767  2.5198421, 2.5198421, 2.5198421, 4.3267487,
768  2.5198421, 6.3496042, 2.5198421, 8.5498797,
769  2.5198421, 10.9027236, 2.5198421, 13.3905183,
770  2.5198421, 16.0000000, 2.5198421, 18.7207544,
771  2.5198421, 21.5443469, 2.5198421, 24.4637810,
772  2.5198421, 27.4731418, 2.5198421, 30.5673509,
773  2.5198421, 33.7419917, 2.5198421, 36.9931811,
774  2.5198421, 64.0f, 4.3267487, 0.0000000,
775  4.3267487, 1.0000000, 4.3267487, 2.5198421,
776  4.3267487, 4.3267487, 4.3267487, 6.3496042,
777  4.3267487, 8.5498797, 4.3267487, 10.9027236,
778  4.3267487, 13.3905183, 4.3267487, 16.0000000,
779  4.3267487, 18.7207544, 4.3267487, 21.5443469,
780  4.3267487, 24.4637810, 4.3267487, 27.4731418,
781  4.3267487, 30.5673509, 4.3267487, 33.7419917,
782  4.3267487, 36.9931811, 4.3267487, 64.0f,
783  6.3496042, 0.0000000, 6.3496042, 1.0000000,
784  6.3496042, 2.5198421, 6.3496042, 4.3267487,
785  6.3496042, 6.3496042, 6.3496042, 8.5498797,
786  6.3496042, 10.9027236, 6.3496042, 13.3905183,
787  6.3496042, 16.0000000, 6.3496042, 18.7207544,
788  6.3496042, 21.5443469, 6.3496042, 24.4637810,
789  6.3496042, 27.4731418, 6.3496042, 30.5673509,
790  6.3496042, 33.7419917, 6.3496042, 36.9931811,
791  6.3496042, 64.0f, 8.5498797, 0.0000000,
792  8.5498797, 1.0000000, 8.5498797, 2.5198421,
793  8.5498797, 4.3267487, 8.5498797, 6.3496042,
794  8.5498797, 8.5498797, 8.5498797, 10.9027236,
795  8.5498797, 13.3905183, 8.5498797, 16.0000000,
796  8.5498797, 18.7207544, 8.5498797, 21.5443469,
797  8.5498797, 24.4637810, 8.5498797, 27.4731418,
798  8.5498797, 30.5673509, 8.5498797, 33.7419917,
799  8.5498797, 36.9931811, 8.5498797, 64.0f,
800  10.9027236, 0.0000000, 10.9027236, 1.0000000,
801  10.9027236, 2.5198421, 10.9027236, 4.3267487,
802  10.9027236, 6.3496042, 10.9027236, 8.5498797,
803  10.9027236, 10.9027236, 10.9027236, 13.3905183,
804  10.9027236, 16.0000000, 10.9027236, 18.7207544,
805  10.9027236, 21.5443469, 10.9027236, 24.4637810,
806  10.9027236, 27.4731418, 10.9027236, 30.5673509,
807  10.9027236, 33.7419917, 10.9027236, 36.9931811,
808  10.9027236, 64.0f, 13.3905183, 0.0000000,
809  13.3905183, 1.0000000, 13.3905183, 2.5198421,
810  13.3905183, 4.3267487, 13.3905183, 6.3496042,
811  13.3905183, 8.5498797, 13.3905183, 10.9027236,
812  13.3905183, 13.3905183, 13.3905183, 16.0000000,
813  13.3905183, 18.7207544, 13.3905183, 21.5443469,
814  13.3905183, 24.4637810, 13.3905183, 27.4731418,
815  13.3905183, 30.5673509, 13.3905183, 33.7419917,
816  13.3905183, 36.9931811, 13.3905183, 64.0f,
817  16.0000000, 0.0000000, 16.0000000, 1.0000000,
818  16.0000000, 2.5198421, 16.0000000, 4.3267487,
819  16.0000000, 6.3496042, 16.0000000, 8.5498797,
820  16.0000000, 10.9027236, 16.0000000, 13.3905183,
821  16.0000000, 16.0000000, 16.0000000, 18.7207544,
822  16.0000000, 21.5443469, 16.0000000, 24.4637810,
823  16.0000000, 27.4731418, 16.0000000, 30.5673509,
824  16.0000000, 33.7419917, 16.0000000, 36.9931811,
825  16.0000000, 64.0f, 18.7207544, 0.0000000,
826  18.7207544, 1.0000000, 18.7207544, 2.5198421,
827  18.7207544, 4.3267487, 18.7207544, 6.3496042,
828  18.7207544, 8.5498797, 18.7207544, 10.9027236,
829  18.7207544, 13.3905183, 18.7207544, 16.0000000,
830  18.7207544, 18.7207544, 18.7207544, 21.5443469,
831  18.7207544, 24.4637810, 18.7207544, 27.4731418,
832  18.7207544, 30.5673509, 18.7207544, 33.7419917,
833  18.7207544, 36.9931811, 18.7207544, 64.0f,
834  21.5443469, 0.0000000, 21.5443469, 1.0000000,
835  21.5443469, 2.5198421, 21.5443469, 4.3267487,
836  21.5443469, 6.3496042, 21.5443469, 8.5498797,
837  21.5443469, 10.9027236, 21.5443469, 13.3905183,
838  21.5443469, 16.0000000, 21.5443469, 18.7207544,
839  21.5443469, 21.5443469, 21.5443469, 24.4637810,
840  21.5443469, 27.4731418, 21.5443469, 30.5673509,
841  21.5443469, 33.7419917, 21.5443469, 36.9931811,
842  21.5443469, 64.0f, 24.4637810, 0.0000000,
843  24.4637810, 1.0000000, 24.4637810, 2.5198421,
844  24.4637810, 4.3267487, 24.4637810, 6.3496042,
845  24.4637810, 8.5498797, 24.4637810, 10.9027236,
846  24.4637810, 13.3905183, 24.4637810, 16.0000000,
847  24.4637810, 18.7207544, 24.4637810, 21.5443469,
848  24.4637810, 24.4637810, 24.4637810, 27.4731418,
849  24.4637810, 30.5673509, 24.4637810, 33.7419917,
850  24.4637810, 36.9931811, 24.4637810, 64.0f,
851  27.4731418, 0.0000000, 27.4731418, 1.0000000,
852  27.4731418, 2.5198421, 27.4731418, 4.3267487,
853  27.4731418, 6.3496042, 27.4731418, 8.5498797,
854  27.4731418, 10.9027236, 27.4731418, 13.3905183,
855  27.4731418, 16.0000000, 27.4731418, 18.7207544,
856  27.4731418, 21.5443469, 27.4731418, 24.4637810,
857  27.4731418, 27.4731418, 27.4731418, 30.5673509,
858  27.4731418, 33.7419917, 27.4731418, 36.9931811,
859  27.4731418, 64.0f, 30.5673509, 0.0000000,
860  30.5673509, 1.0000000, 30.5673509, 2.5198421,
861  30.5673509, 4.3267487, 30.5673509, 6.3496042,
862  30.5673509, 8.5498797, 30.5673509, 10.9027236,
863  30.5673509, 13.3905183, 30.5673509, 16.0000000,
864  30.5673509, 18.7207544, 30.5673509, 21.5443469,
865  30.5673509, 24.4637810, 30.5673509, 27.4731418,
866  30.5673509, 30.5673509, 30.5673509, 33.7419917,
867  30.5673509, 36.9931811, 30.5673509, 64.0f,
868  33.7419917, 0.0000000, 33.7419917, 1.0000000,
869  33.7419917, 2.5198421, 33.7419917, 4.3267487,
870  33.7419917, 6.3496042, 33.7419917, 8.5498797,
871  33.7419917, 10.9027236, 33.7419917, 13.3905183,
872  33.7419917, 16.0000000, 33.7419917, 18.7207544,
873  33.7419917, 21.5443469, 33.7419917, 24.4637810,
874  33.7419917, 27.4731418, 33.7419917, 30.5673509,
875  33.7419917, 33.7419917, 33.7419917, 36.9931811,
876  33.7419917, 64.0f, 36.9931811, 0.0000000,
877  36.9931811, 1.0000000, 36.9931811, 2.5198421,
878  36.9931811, 4.3267487, 36.9931811, 6.3496042,
879  36.9931811, 8.5498797, 36.9931811, 10.9027236,
880  36.9931811, 13.3905183, 36.9931811, 16.0000000,
881  36.9931811, 18.7207544, 36.9931811, 21.5443469,
882  36.9931811, 24.4637810, 36.9931811, 27.4731418,
883  36.9931811, 30.5673509, 36.9931811, 33.7419917,
884  36.9931811, 36.9931811, 36.9931811, 64.0f,
885  64.0f, 0.0000000, 64.0f, 1.0000000,
886  64.0f, 2.5198421, 64.0f, 4.3267487,
887  64.0f, 6.3496042, 64.0f, 8.5498797,
888  64.0f, 10.9027236, 64.0f, 13.3905183,
889  64.0f, 16.0000000, 64.0f, 18.7207544,
890  64.0f, 21.5443469, 64.0f, 24.4637810,
891  64.0f, 27.4731418, 64.0f, 30.5673509,
892  64.0f, 33.7419917, 64.0f, 36.9931811,
893  64.0f, 64.0f,
894 };
895 
896 const float * const ff_aac_codebook_vectors[] = {
901 };
902 
903 static const float codebook_vector0_vals[] = {
904  -1.0000000, 0.0000000, 1.0000000
905 };
906 
907 /*
908  * bits 0:1, 2:3, 4:5, 6:7 index into _vals array
909  * 8:11 number of non-zero values
910  * 12:15 bit mask of non-zero values
911  */
912 static const uint16_t codebook_vector02_idx[] = {
913  0x0000, 0x8140, 0x8180, 0x4110, 0xc250, 0xc290, 0x4120, 0xc260, 0xc2a0,
914  0x2104, 0xa244, 0xa284, 0x6214, 0xe354, 0xe394, 0x6224, 0xe364, 0xe3a4,
915  0x2108, 0xa248, 0xa288, 0x6218, 0xe358, 0xe398, 0x6228, 0xe368, 0xe3a8,
916  0x1101, 0x9241, 0x9281, 0x5211, 0xd351, 0xd391, 0x5221, 0xd361, 0xd3a1,
917  0x3205, 0xb345, 0xb385, 0x7315, 0xf455, 0xf495, 0x7325, 0xf465, 0xf4a5,
918  0x3209, 0xb349, 0xb389, 0x7319, 0xf459, 0xf499, 0x7329, 0xf469, 0xf4a9,
919  0x1102, 0x9242, 0x9282, 0x5212, 0xd352, 0xd392, 0x5222, 0xd362, 0xd3a2,
920  0x3206, 0xb346, 0xb386, 0x7316, 0xf456, 0xf496, 0x7326, 0xf466, 0xf4a6,
921  0x320a, 0xb34a, 0xb38a, 0x731a, 0xf45a, 0xf49a, 0x732a, 0xf46a, 0xf4aa,
922 };
923 
924 static const float codebook_vector4_vals[] = {
925  -6.3496042, -4.3267487,
926  -2.5198421, -1.0000000,
927  0.0000000, 1.0000000,
928  2.5198421, 4.3267487,
929  6.3496042,
930 };
931 
932 /*
933  * bits 0:3, 4:7 index into _vals array
934  */
935 static const uint16_t codebook_vector4_idx[] = {
936  0x0000, 0x0010, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x0070, 0x0080,
937  0x0001, 0x0011, 0x0021, 0x0031, 0x0041, 0x0051, 0x0061, 0x0071, 0x0081,
938  0x0002, 0x0012, 0x0022, 0x0032, 0x0042, 0x0052, 0x0062, 0x0072, 0x0082,
939  0x0003, 0x0013, 0x0023, 0x0033, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083,
940  0x0004, 0x0014, 0x0024, 0x0034, 0x0044, 0x0054, 0x0064, 0x0074, 0x0084,
941  0x0005, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075, 0x0085,
942  0x0006, 0x0016, 0x0026, 0x0036, 0x0046, 0x0056, 0x0066, 0x0076, 0x0086,
943  0x0007, 0x0017, 0x0027, 0x0037, 0x0047, 0x0057, 0x0067, 0x0077, 0x0087,
944  0x0008, 0x0018, 0x0028, 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088,
945 };
946 
947 /*
948  * bits 0:3, 4:7 index into _vals array
949  * 8:11 number of non-zero values
950  * 12:15 1: only second value non-zero
951  * 0: other cases
952  */
953 static const uint16_t codebook_vector6_idx[] = {
954  0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
955  0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261, 0x0271,
956  0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262, 0x0272,
957  0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263, 0x0273,
958  0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264, 0x0274,
959  0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265, 0x0275,
960  0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266, 0x0276,
961  0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267, 0x0277,
962 };
963 
964 /*
965  * bits 0:3, 4:7 index into _vals array
966  * 8:11 number of non-zero values
967  * 12:15 1: only second value non-zero
968  * 0: other cases
969  */
970 static const uint16_t codebook_vector8_idx[] = {
971  0x0000, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
972  0x0170, 0x0180, 0x0190, 0x01a0, 0x01b0, 0x01c0,
973  0x1101, 0x0211, 0x0221, 0x0231, 0x0241, 0x0251, 0x0261,
974  0x0271, 0x0281, 0x0291, 0x02a1, 0x02b1, 0x02c1,
975  0x1102, 0x0212, 0x0222, 0x0232, 0x0242, 0x0252, 0x0262,
976  0x0272, 0x0282, 0x0292, 0x02a2, 0x02b2, 0x02c2,
977  0x1103, 0x0213, 0x0223, 0x0233, 0x0243, 0x0253, 0x0263,
978  0x0273, 0x0283, 0x0293, 0x02a3, 0x02b3, 0x02c3,
979  0x1104, 0x0214, 0x0224, 0x0234, 0x0244, 0x0254, 0x0264,
980  0x0274, 0x0284, 0x0294, 0x02a4, 0x02b4, 0x02c4,
981  0x1105, 0x0215, 0x0225, 0x0235, 0x0245, 0x0255, 0x0265,
982  0x0275, 0x0285, 0x0295, 0x02a5, 0x02b5, 0x02c5,
983  0x1106, 0x0216, 0x0226, 0x0236, 0x0246, 0x0256, 0x0266,
984  0x0276, 0x0286, 0x0296, 0x02a6, 0x02b6, 0x02c6,
985  0x1107, 0x0217, 0x0227, 0x0237, 0x0247, 0x0257, 0x0267,
986  0x0277, 0x0287, 0x0297, 0x02a7, 0x02b7, 0x02c7,
987  0x1108, 0x0218, 0x0228, 0x0238, 0x0248, 0x0258, 0x0268,
988  0x0278, 0x0288, 0x0298, 0x02a8, 0x02b8, 0x02c8,
989  0x1109, 0x0219, 0x0229, 0x0239, 0x0249, 0x0259, 0x0269,
990  0x0279, 0x0289, 0x0299, 0x02a9, 0x02b9, 0x02c9,
991  0x110a, 0x021a, 0x022a, 0x023a, 0x024a, 0x025a, 0x026a,
992  0x027a, 0x028a, 0x029a, 0x02aa, 0x02ba, 0x02ca,
993  0x110b, 0x021b, 0x022b, 0x023b, 0x024b, 0x025b, 0x026b,
994  0x027b, 0x028b, 0x029b, 0x02ab, 0x02bb, 0x02cb,
995  0x110c, 0x021c, 0x022c, 0x023c, 0x024c, 0x025c, 0x026c,
996  0x027c, 0x028c, 0x029c, 0x02ac, 0x02bc, 0x02cc,
997 };
998 
999 static const float codebook_vector10_vals[] = {
1000  0.0000000, 1.0000000,
1001  2.5198421, 4.3267487,
1002  6.3496042, 8.5498797,
1003  10.9027236, 13.3905183,
1004  16.0000000, 18.7207544,
1005  21.5443469, 24.4637810,
1006  27.4731418, 30.5673509,
1007  33.7419917, 36.9931811,
1008 };
1009 
1010 /*
1011  * bits 0:3, 4:7 index into _vals array
1012  * 8:9 bit mask of escape-coded entries
1013  * 12:15 number of non-zero values
1014  */
1015 static const uint16_t codebook_vector10_idx[] = {
1016  0x0000, 0x1010, 0x1020, 0x1030, 0x1040, 0x1050, 0x1060, 0x1070,
1017  0x1080, 0x1090, 0x10a0, 0x10b0, 0x10c0, 0x10d0, 0x10e0, 0x10f0, 0x1200,
1018  0x1001, 0x2011, 0x2021, 0x2031, 0x2041, 0x2051, 0x2061, 0x2071,
1019  0x2081, 0x2091, 0x20a1, 0x20b1, 0x20c1, 0x20d1, 0x20e1, 0x20f1, 0x2201,
1020  0x1002, 0x2012, 0x2022, 0x2032, 0x2042, 0x2052, 0x2062, 0x2072,
1021  0x2082, 0x2092, 0x20a2, 0x20b2, 0x20c2, 0x20d2, 0x20e2, 0x20f2, 0x2202,
1022  0x1003, 0x2013, 0x2023, 0x2033, 0x2043, 0x2053, 0x2063, 0x2073,
1023  0x2083, 0x2093, 0x20a3, 0x20b3, 0x20c3, 0x20d3, 0x20e3, 0x20f3, 0x2203,
1024  0x1004, 0x2014, 0x2024, 0x2034, 0x2044, 0x2054, 0x2064, 0x2074,
1025  0x2084, 0x2094, 0x20a4, 0x20b4, 0x20c4, 0x20d4, 0x20e4, 0x20f4, 0x2204,
1026  0x1005, 0x2015, 0x2025, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
1027  0x2085, 0x2095, 0x20a5, 0x20b5, 0x20c5, 0x20d5, 0x20e5, 0x20f5, 0x2205,
1028  0x1006, 0x2016, 0x2026, 0x2036, 0x2046, 0x2056, 0x2066, 0x2076,
1029  0x2086, 0x2096, 0x20a6, 0x20b6, 0x20c6, 0x20d6, 0x20e6, 0x20f6, 0x2206,
1030  0x1007, 0x2017, 0x2027, 0x2037, 0x2047, 0x2057, 0x2067, 0x2077,
1031  0x2087, 0x2097, 0x20a7, 0x20b7, 0x20c7, 0x20d7, 0x20e7, 0x20f7, 0x2207,
1032  0x1008, 0x2018, 0x2028, 0x2038, 0x2048, 0x2058, 0x2068, 0x2078,
1033  0x2088, 0x2098, 0x20a8, 0x20b8, 0x20c8, 0x20d8, 0x20e8, 0x20f8, 0x2208,
1034  0x1009, 0x2019, 0x2029, 0x2039, 0x2049, 0x2059, 0x2069, 0x2079,
1035  0x2089, 0x2099, 0x20a9, 0x20b9, 0x20c9, 0x20d9, 0x20e9, 0x20f9, 0x2209,
1036  0x100a, 0x201a, 0x202a, 0x203a, 0x204a, 0x205a, 0x206a, 0x207a,
1037  0x208a, 0x209a, 0x20aa, 0x20ba, 0x20ca, 0x20da, 0x20ea, 0x20fa, 0x220a,
1038  0x100b, 0x201b, 0x202b, 0x203b, 0x204b, 0x205b, 0x206b, 0x207b,
1039  0x208b, 0x209b, 0x20ab, 0x20bb, 0x20cb, 0x20db, 0x20eb, 0x20fb, 0x220b,
1040  0x100c, 0x201c, 0x202c, 0x203c, 0x204c, 0x205c, 0x206c, 0x207c,
1041  0x208c, 0x209c, 0x20ac, 0x20bc, 0x20cc, 0x20dc, 0x20ec, 0x20fc, 0x220c,
1042  0x100d, 0x201d, 0x202d, 0x203d, 0x204d, 0x205d, 0x206d, 0x207d,
1043  0x208d, 0x209d, 0x20ad, 0x20bd, 0x20cd, 0x20dd, 0x20ed, 0x20fd, 0x220d,
1044  0x100e, 0x201e, 0x202e, 0x203e, 0x204e, 0x205e, 0x206e, 0x207e,
1045  0x208e, 0x209e, 0x20ae, 0x20be, 0x20ce, 0x20de, 0x20ee, 0x20fe, 0x220e,
1046  0x100f, 0x201f, 0x202f, 0x203f, 0x204f, 0x205f, 0x206f, 0x207f,
1047  0x208f, 0x209f, 0x20af, 0x20bf, 0x20cf, 0x20df, 0x20ef, 0x20ff, 0x220f,
1048  0x1100, 0x2110, 0x2120, 0x2130, 0x2140, 0x2150, 0x2160, 0x2170,
1049  0x2180, 0x2190, 0x21a0, 0x21b0, 0x21c0, 0x21d0, 0x21e0, 0x21f0, 0x2300,
1050 };
1051 
1052 const float *const ff_aac_codebook_vector_vals[] = {
1059 };
1060 
1061 const uint16_t *const ff_aac_codebook_vector_idx[] = {
1068 };
1069 
1070 /* @name swb_offsets
1071  * Sample offset into the window indicating the beginning of a scalefactor
1072  * window band
1073  *
1074  * scalefactor window band - term for scalefactor bands within a window,
1075  * given in Table 4.110 to Table 4.128.
1076  *
1077  * scalefactor band - a set of spectral coefficients which are scaled by one
1078  * scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
1079  * may contain several scalefactor window bands of corresponding frequency. For
1080  * all other window_sequences scalefactor bands and scalefactor window bands are
1081  * identical.
1082  * @{
1083  */
1084 
1085 static const uint16_t swb_offset_1024_96[] = {
1086  0, 4, 8, 12, 16, 20, 24, 28,
1087  32, 36, 40, 44, 48, 52, 56, 64,
1088  72, 80, 88, 96, 108, 120, 132, 144,
1089  156, 172, 188, 212, 240, 276, 320, 384,
1090  448, 512, 576, 640, 704, 768, 832, 896,
1091  960, 1024
1092 };
1093 
1094 static const uint16_t swb_offset_128_96[] = {
1095  0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
1096 };
1097 
1098 static const uint16_t swb_offset_1024_64[] = {
1099  0, 4, 8, 12, 16, 20, 24, 28,
1100  32, 36, 40, 44, 48, 52, 56, 64,
1101  72, 80, 88, 100, 112, 124, 140, 156,
1102  172, 192, 216, 240, 268, 304, 344, 384,
1103  424, 464, 504, 544, 584, 624, 664, 704,
1104  744, 784, 824, 864, 904, 944, 984, 1024
1105 };
1106 
1107 static const uint16_t swb_offset_1024_48[] = {
1108  0, 4, 8, 12, 16, 20, 24, 28,
1109  32, 36, 40, 48, 56, 64, 72, 80,
1110  88, 96, 108, 120, 132, 144, 160, 176,
1111  196, 216, 240, 264, 292, 320, 352, 384,
1112  416, 448, 480, 512, 544, 576, 608, 640,
1113  672, 704, 736, 768, 800, 832, 864, 896,
1114  928, 1024
1115 };
1116 
1117 static const uint16_t swb_offset_128_48[] = {
1118  0, 4, 8, 12, 16, 20, 28, 36,
1119  44, 56, 68, 80, 96, 112, 128
1120 };
1121 
1122 static const uint16_t swb_offset_1024_32[] = {
1123  0, 4, 8, 12, 16, 20, 24, 28,
1124  32, 36, 40, 48, 56, 64, 72, 80,
1125  88, 96, 108, 120, 132, 144, 160, 176,
1126  196, 216, 240, 264, 292, 320, 352, 384,
1127  416, 448, 480, 512, 544, 576, 608, 640,
1128  672, 704, 736, 768, 800, 832, 864, 896,
1129  928, 960, 992, 1024
1130 };
1131 
1132 static const uint16_t swb_offset_1024_24[] = {
1133  0, 4, 8, 12, 16, 20, 24, 28,
1134  32, 36, 40, 44, 52, 60, 68, 76,
1135  84, 92, 100, 108, 116, 124, 136, 148,
1136  160, 172, 188, 204, 220, 240, 260, 284,
1137  308, 336, 364, 396, 432, 468, 508, 552,
1138  600, 652, 704, 768, 832, 896, 960, 1024
1139 };
1140 
1141 static const uint16_t swb_offset_128_24[] = {
1142  0, 4, 8, 12, 16, 20, 24, 28,
1143  36, 44, 52, 64, 76, 92, 108, 128
1144 };
1145 
1146 static const uint16_t swb_offset_1024_16[] = {
1147  0, 8, 16, 24, 32, 40, 48, 56,
1148  64, 72, 80, 88, 100, 112, 124, 136,
1149  148, 160, 172, 184, 196, 212, 228, 244,
1150  260, 280, 300, 320, 344, 368, 396, 424,
1151  456, 492, 532, 572, 616, 664, 716, 772,
1152  832, 896, 960, 1024
1153 };
1154 
1155 static const uint16_t swb_offset_128_16[] = {
1156  0, 4, 8, 12, 16, 20, 24, 28,
1157  32, 40, 48, 60, 72, 88, 108, 128
1158 };
1159 
1160 static const uint16_t swb_offset_1024_8[] = {
1161  0, 12, 24, 36, 48, 60, 72, 84,
1162  96, 108, 120, 132, 144, 156, 172, 188,
1163  204, 220, 236, 252, 268, 288, 308, 328,
1164  348, 372, 396, 420, 448, 476, 508, 544,
1165  580, 620, 664, 712, 764, 820, 880, 944,
1166  1024
1167 };
1168 
1169 static const uint16_t swb_offset_128_8[] = {
1170  0, 4, 8, 12, 16, 20, 24, 28,
1171  36, 44, 52, 60, 72, 88, 108, 128
1172 };
1173 
1174 const uint16_t * const ff_swb_offset_1024[] = {
1179  swb_offset_1024_8
1180 };
1181 
1182 const uint16_t * const ff_swb_offset_128[] = {
1183  /* The last entry on the following row is swb_offset_128_64 but is a
1184  duplicate of swb_offset_128_96. */
1189  swb_offset_128_8
1190 };
1191 
1192 // @}
1193 
1194 /* @name ff_tns_max_bands
1195  * The maximum number of scalefactor bands on which TNS can operate for the long
1196  * and short transforms respectively. The index to these tables is related to
1197  * the sample rate of the audio.
1198  * @{
1199  */
1201  31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1202 };
1203 
1205  9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1206 };
1207 // @}