Statistics
| Branch: | Revision:

ffmpeg / libavcodec / aactab.c @ 2912e87a

History | View | Annotate | Download (54.2 KB)

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 Libav.
7
 *
8
 * Libav 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
 * Libav 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 Libav; 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

    
36
DECLARE_ALIGNED(16, float,  ff_aac_kbd_long_1024)[1024];
37
DECLARE_ALIGNED(16, float,  ff_aac_kbd_short_128)[128];
38

    
39
const uint8_t ff_aac_num_swb_1024[] = {
40
    41, 41, 47, 49, 49, 51, 47, 47, 43, 43, 43, 40, 40
41
};
42

    
43
const uint8_t ff_aac_num_swb_128[] = {
44
    12, 12, 12, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15
45
};
46

    
47
const uint8_t ff_aac_pred_sfb_max[] = {
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

    
70
const uint8_t ff_aac_scalefactor_bits[121] = {
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] = {
396
    codes1,  codes2,  codes3, codes4, codes5, codes6, codes7, codes8,
397
    codes9, codes10, codes11,
398
};
399

    
400
const uint8_t * const ff_aac_spectral_bits[11] = {
401
    bits1,  bits2,  bits3, bits4, bits5, bits6, bits7, bits8,
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[] = {
897
    codebook_vector0, codebook_vector0, codebook_vector2,
898
    codebook_vector2, codebook_vector4, codebook_vector4,
899
    codebook_vector6, codebook_vector6, codebook_vector8,
900
    codebook_vector8, codebook_vector10,
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[] = {
1053
    codebook_vector0_vals,  codebook_vector0_vals,
1054
    codebook_vector10_vals, codebook_vector10_vals,
1055
    codebook_vector4_vals,  codebook_vector4_vals,
1056
    codebook_vector10_vals, codebook_vector10_vals,
1057
    codebook_vector10_vals, codebook_vector10_vals,
1058
    codebook_vector10_vals,
1059
};
1060

    
1061
const uint16_t *const ff_aac_codebook_vector_idx[] = {
1062
    codebook_vector02_idx, codebook_vector02_idx,
1063
    codebook_vector02_idx, codebook_vector02_idx,
1064
    codebook_vector4_idx,  codebook_vector4_idx,
1065
    codebook_vector6_idx,  codebook_vector6_idx,
1066
    codebook_vector8_idx,  codebook_vector8_idx,
1067
    codebook_vector10_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[] = {
1175
    swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
1176
    swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
1177
    swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
1178
    swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
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. */
1185
    swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
1186
    swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
1187
    swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
1188
    swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
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
 */
1200
const uint8_t ff_tns_max_bands_1024[] = {
1201
    31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
1202
};
1203

    
1204
const uint8_t ff_tns_max_bands_128[] = {
1205
    9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
1206
};
1207
// @}