Tag Parser 12.3.1
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
Loading...
Searching...
No Matches
aaccodebook.cpp
Go to the documentation of this file.
1#include "./aaccodebook.h"
2
8namespace TagParser {
9
11
12// clang-format off
13const AacHcb *const aacHcbTable[] = {
14 nullptr, aacHcb1Step1, aacHcb2Step1, nullptr, aacHcb4Step1, nullptr, aacHcb6Step1, nullptr, aacHcb8Step1, nullptr, aacHcb10Step1, aacHcb11Step1
15};
16
17const AacHcb2Pair *const aacHcb2PairTable[] = {
18 nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aacHcb6Step2, nullptr, aacHcb8Step2, nullptr, aacHcb10Step2, aacHcb11Step2
19};
20
21const AacHcb2Quad *const aacHcb2QuadTable[] = {
22 nullptr, aacHcb1Step2, aacHcb2Step2, nullptr, aacHcb4Step2, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr
23};
24
25const AacHcbBinPair *const aacHcbBinTable[] = {
26 nullptr, nullptr, nullptr, nullptr, nullptr, aacHcb5, nullptr, aacHcb7, nullptr, aacHcb9, nullptr, nullptr
27};
28
29const std::uint8_t aacHcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 };
30
31//const std::uint8_t unsignedCb[] = { 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
32// /* codebook 16 to 31 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
33//};
34
35const int aacHcb2QuadTableSize[] = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 };
36const int aacHcb2PairTableSize[] = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 };
37const int aacHcbBinTableSize[] = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 };
38
39const AacHcb aacHcb1Step1[] = {
40 { /* 00000 */ 0, 0 },
41 { /* */ 0, 0 },
42 { /* */ 0, 0 },
43 { /* */ 0, 0 },
44 { /* */ 0, 0 },
45 { /* */ 0, 0 },
46 { /* */ 0, 0 },
47 { /* */ 0, 0 },
48 { /* */ 0, 0 },
49 { /* */ 0, 0 },
50 { /* */ 0, 0 },
51 { /* */ 0, 0 },
52 { /* */ 0, 0 },
53 { /* */ 0, 0 },
54 { /* */ 0, 0 },
55 { /* */ 0, 0 },
56 { /* 10000 */ 1, 0 },
57 { /* 10001 */ 2, 0 },
58 { /* 10010 */ 3, 0 },
59 { /* 10011 */ 4, 0 },
60 { /* 10100 */ 5, 0 },
61 { /* 10101 */ 6, 0 },
62 { /* 10110 */ 7, 0 },
63 { /* 10111 */ 8, 0 },
64
65 // 7 bit codewords
66 { /* 11000 */ 9, 2 },
67 { /* 11001 */ 13, 2 },
68 { /* 11010 */ 17, 2 },
69 { /* 11011 */ 21, 2 },
70 { /* 11100 */ 25, 2 },
71 { /* 11101 */ 29, 2 },
72
73 // 9 bit codewords
74 { /* 11110 */ 33, 4 },
75
76 // 9/10/11 bit codewords
77 { /* 11111 */ 49, 6 }
78};
79
80const AacHcb2Quad aacHcb1Step2[] = {
81 // 1 bit codeword
82 { 1, 0, 0, 0, 0 },
83
84 // 5 bit codewords
85 { 5, 1, 0, 0, 0 },
86 { 5, -1, 0, 0, 0 },
87 { 5, 0, 0, 0, -1 },
88 { 5, 0, 1, 0, 0 },
89 { 5, 0, 0, 0, 1 },
90 { 5, 0, 0, -1, 0 },
91 { 5, 0, 0, 1, 0 },
92 { 5, 0, -1, 0, 0 },
93
94 // 7 bit codewords
95 // first 5 bits: 11000
96 { 7, 1, -1, 0, 0 },
97 { 7, -1, 1, 0, 0 },
98 { 7, 0, 0, -1, 1 },
99 { 7, 0, 1, -1, 0 },
100 // first 5 bits: 11001
101 { 7, 0, -1, 1, 0 },
102 { 7, 0, 0, 1, -1 },
103 { 7, 1, 1, 0, 0 },
104 { 7, 0, 0, -1, -1 },
105 // first 5 bits: 11010
106 { 7, -1, -1, 0, 0 },
107 { 7, 0, -1, -1, 0 },
108 { 7, 1, 0, -1, 0 },
109 { 7, 0, 1, 0, -1 },
110 // first 5 bits: 11011
111 { 7, -1, 0, 1, 0 },
112 { 7, 0, 0, 1, 1 },
113 { 7, 1, 0, 1, 0 },
114 { 7, 0, -1, 0, 1 },
115 // first 5 bits: 11100
116 { 7, 0, 1, 1, 0 },
117 { 7, 0, 1, 0, 1 },
118 { 7, -1, 0, -1, 0 },
119 { 7, 1, 0, 0, 1 },
120 // first 5 bits: 11101
121 { 7, -1, 0, 0, -1 },
122 { 7, 1, 0, 0, -1 },
123 { 7, -1, 0, 0, 1 },
124 { 7, 0, -1, 0, -1 },
125
126 // 9 bit codeword
127 // first 5 bits: 11110
128 { 9, 1, 1, -1, 0 },
129 { 9, -1, 1, -1, 0 },
130 { 9, 1, -1, 1, 0 },
131 { 9, 0, 1, 1, -1 },
132 { 9, 0, 1, -1, 1 },
133 { 9, 0, -1, 1, 1 },
134 { 9, 0, -1, 1, -1 },
135 { 9, 1, -1, -1, 0 },
136 { 9, 1, 0, -1, 1 },
137 { 9, 0, 1, -1, -1 },
138 { 9, -1, 1, 1, 0 },
139 { 9, -1, 0, 1, -1 },
140 { 9, -1, -1, 1, 0 },
141 { 9, 0, -1, -1, 1 },
142 { 9, 1, -1, 0, 1 },
143 { 9, 1, -1, 0, -1 },
144
145 // 9/10/11 bit codewords
146 // first 5 bits: 11111
147 // 9 bit: reading 11 bits -> 2 too much so 4 entries for each codeword
148 { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 }, { 9, -1, 1, 0, -1 },
149 { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 }, { 9, -1, -1, -1, 0 },
150 { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 }, { 9, 0, -1, -1, -1 },
151 { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 }, { 9, 0, 1, 1, 1 },
152 { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 }, { 9, 1, 0, 1, -1 },
153 { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 }, { 9, 1, 1, 0, 1 },
154 { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 }, { 9, -1, 1, 0, 1 },
155 { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 }, { 9, 1, 1, 1, 0 },
156 // 10 bit: reading 11 bits -> 1 too much so 2 entries for each codeword
157 { 10, -1, -1, 0, 1 }, { 10, -1, -1, 0, 1 },
158 { 10, -1, 0, -1, -1 }, { 10, -1, 0, -1, -1 },
159 { 10, 1, 1, 0, -1 }, { 10, 1, 1, 0, -1 },
160 { 10, 1, 0, -1, -1 }, { 10, 1, 0, -1, -1 },
161 { 10, -1, 0, -1, 1 }, { 10, -1, 0, -1, 1 },
162 { 10, -1, -1, 0, -1 }, { 10, -1, -1, 0, -1 },
163 { 10, -1, 0, 1, 1 }, { 10, -1, 0, 1, 1 },
164 { 10, 1, 0, 1, 1 }, { 10, 1, 0, 1, 1 },
165 // 11 bit
166 { 11, 1, -1, 1, -1 },
167 { 11, -1, 1, -1, 1 },
168 { 11, -1, 1, 1, -1 },
169 { 11, 1, -1, -1, 1 },
170 { 11, 1, 1, 1, 1 },
171 { 11, -1, -1, 1, 1 },
172 { 11, 1, 1, -1, -1 },
173 { 11, -1, -1, 1, -1 },
174 { 11, -1, -1, -1, -1 },
175 { 11, 1, 1, -1, 1 },
176 { 11, 1, -1, 1, 1 },
177 { 11, -1, 1, 1, 1 },
178 { 11, -1, 1, -1, -1 },
179 { 11, -1, -1, -1, 1 },
180 { 11, 1, -1, -1, -1 },
181 { 11, 1, 1, 1, -1 }
182};
183
184const AacHcb aacHcb2Step1[] = {
185 { /* 00000 */ 0, 0 },
186 { /* */ 0, 0 },
187 { /* */ 0, 0 },
188 { /* */ 0, 0 },
189 { /* 00100 */ 1, 0 },
190 { /* */ 1, 0 },
191 { /* 00110 */ 2, 0 },
192 { /* 00111 */ 3, 0 },
193 { /* 01000 */ 4, 0 },
194 { /* 01001 */ 5, 0 },
195 { /* 01010 */ 6, 0 },
196 { /* 01011 */ 7, 0 },
197 { /* 01100 */ 8, 0 },
198
199 // 6 bit codewords
200 { /* 01101 */ 9, 1 },
201 { /* 01110 */ 11, 1 },
202 { /* 01111 */ 13, 1 },
203 { /* 10000 */ 15, 1 },
204 { /* 10001 */ 17, 1 },
205 { /* 10010 */ 19, 1 },
206 { /* 10011 */ 21, 1 },
207 { /* 10100 */ 23, 1 },
208 { /* 10101 */ 25, 1 },
209 { /* 10110 */ 27, 1 },
210 { /* 10111 */ 29, 1 },
211 { /* 11000 */ 31, 1 },
212
213 // 7 bit codewords
214 { /* 11001 */ 33, 2 },
215 { /* 11010 */ 37, 2 },
216 { /* 11011 */ 41, 2 },
217
218 // 7/8 bit codewords
219 { /* 11100 */ 45, 3 },
220
221 // 8 bit codewords
222 { /* 11101 */ 53, 3 },
223 { /* 11110 */ 61, 3 },
224
225 // 8/9 bit codewords
226 { /* 11111 */ 69, 4 }
227};
228
229const AacHcb2Quad aacHcb2Step2[] = {
230 // 3 bit codeword
231 { 3, 0, 0, 0, 0 },
232
233 // 4 bit codeword
234 { 4, 1, 0, 0, 0 },
235
236 // 5 bit codewords
237 { 5, -1, 0, 0, 0 },
238 { 5, 0, 0, 0, 1 },
239 { 5, 0, 0, -1, 0 },
240 { 5, 0, 0, 0, -1 },
241 { 5, 0, -1, 0, 0 },
242 { 5, 0, 0, 1, 0 },
243 { 5, 0, 1, 0, 0 },
244
245 // 6 bit codewords
246 { 6, 0, -1, 1, 0 },
247 { 6, -1, 1, 0, 0 },
248 { 6, 0, 1, -1, 0 },
249 { 6, 0, 0, 1, -1 },
250 { 6, 0, 1, 0, -1 },
251 { 6, 0, 0, -1, 1 },
252 { 6, -1, 0, 0, -1 },
253 { 6, 1, -1, 0, 0 },
254 { 6, 1, 0, -1, 0 },
255 { 6, -1, -1, 0, 0 },
256 { 6, 0, 0, -1, -1 },
257 { 6, 1, 0, 1, 0 },
258 { 6, 1, 0, 0, 1 },
259 { 6, 0, -1, 0, 1 },
260 { 6, -1, 0, 1, 0 },
261 { 6, 0, 1, 0, 1 },
262 { 6, 0, -1, -1, 0 },
263 { 6, -1, 0, 0, 1 },
264 { 6, 0, -1, 0, -1 },
265 { 6, -1, 0, -1, 0 },
266 { 6, 1, 1, 0, 0 },
267 { 6, 0, 1, 1, 0 },
268 { 6, 0, 0, 1, 1 },
269 { 6, 1, 0, 0, -1 },
270
271 // 7 bit codewords
272 { 7, 0, 1, -1, 1 },
273 { 7, 1, 0, -1, 1 },
274 { 7, -1, 1, -1, 0 },
275 { 7, 0, -1, 1, -1 },
276 { 7, 1, -1, 1, 0 },
277 { 7, 1, 1, 0, -1 },
278 { 7, 1, 0, 1, 1 },
279 { 7, -1, 1, 1, 0 },
280 { 7, 0, -1, -1, 1 },
281 { 7, 1, 1, 1, 0 },
282 { 7, -1, 0, 1, -1 },
283 { 7, -1, -1, -1, 0 },
284
285 // 7/8 bit codewords
286 { 7, -1, 0, -1, 1 }, { 7, -1, 0, -1, 1 },
287 { 7, 1, -1, -1, 0 }, { 7, 1, -1, -1, 0 },
288 { 7, 1, 1, -1, 0 }, { 7, 1, 1, -1, 0 },
289 { 8, 1, -1, 0, 1 },
290 { 8, -1, 1, 0, -1 },
291
292 // 8 bit codewords
293 { 8, -1, -1, 1, 0 },
294 { 8, -1, 0, 1, 1 },
295 { 8, -1, -1, 0, 1 },
296 { 8, -1, -1, 0, -1 },
297 { 8, 0, -1, -1, -1 },
298 { 8, 1, 0, 1, -1 },
299 { 8, 1, 0, -1, -1 },
300 { 8, 0, 1, -1, -1 },
301 { 8, 0, 1, 1, 1 },
302 { 8, -1, 1, 0, 1 },
303 { 8, -1, 0, -1, -1 },
304 { 8, 0, 1, 1, -1 },
305 { 8, 1, -1, 0, -1 },
306 { 8, 0, -1, 1, 1 },
307 { 8, 1, 1, 0, 1 },
308 { 8, 1, -1, 1, -1 },
309
310 // 8/9 bit codewords
311 { 8, -1, 1, -1, 1 }, { 8, -1, 1, -1, 1 },
312 { 9, 1, -1, -1, 1 },
313 { 9, -1, -1, -1, -1 },
314 { 9, -1, 1, 1, -1 },
315 { 9, -1, 1, 1, 1 },
316 { 9, 1, 1, 1, 1 },
317 { 9, -1, -1, 1, -1 },
318 { 9, 1, -1, 1, 1 },
319 { 9, -1, 1, -1, -1 },
320 { 9, -1, -1, 1, 1 },
321 { 9, 1, 1, -1, -1 },
322 { 9, 1, -1, -1, -1 },
323 { 9, -1, -1, -1, 1 },
324 { 9, 1, 1, -1, 1 },
325 { 9, 1, 1, 1, -1 }
326};
327
328const AacHcbBinQuad aacHcb3[] = {
329 { /* 0 */ 0, { 1, 2, 0, 0 } },
330 { /* 1 */ 1, { 0, 0, 0, 0 } }, // 0
331 { /* 2 */ 0, { 1, 2, 0, 0 } },
332 { /* 3 */ 0, { 2, 3, 0, 0 } },
333 { /* 4 */ 0, { 3, 4, 0, 0 } },
334 { /* 5 */ 0, { 4, 5, 0, 0 } },
335 { /* 6 */ 0, { 5, 6, 0, 0 } },
336 { /* 7 */ 0, { 6, 7, 0, 0 } },
337 { /* 8 */ 0, { 7, 8, 0, 0 } },
338 { /* 9 */ 1, { 1, 0, 0, 0 } }, // 1000
339 { /* 10 */ 1, { 0, 0, 0, 1 } }, // 1001
340 { /* 11 */ 1, { 0, 1, 0, 0 } }, // 1010
341 { /* 12 */ 1, { 0, 0, 1, 0 } }, // 1011
342 { /* 13 */ 0, { 4, 5, 0, 0 } },
343 { /* 14 */ 0, { 5, 6, 0, 0 } },
344 { /* 15 */ 0, { 6, 7, 0, 0 } },
345 { /* 16 */ 0, { 7, 8, 0, 0 } },
346 { /* 17 */ 1, { 1, 1, 0, 0 } },
347 { /* 18 */ 1, { 0, 0, 1, 1 } },
348 { /* 19 */ 0, { 6, 7, 0, 0 } },
349 { /* 20 */ 0, { 7, 8, 0, 0 } },
350 { /* 21 */ 0, { 8, 9, 0, 0 } },
351 { /* 22 */ 0, { 9, 10, 0, 0 } },
352 { /* 23 */ 0, { 10, 11, 0, 0 } },
353 { /* 24 */ 0, { 11, 12, 0, 0 } },
354 { /* 25 */ 1, { 0, 1, 1, 0 } }, // 110100
355 { /* 26 */ 1, { 0, 1, 0, 1 } }, // 110101
356 { /* 27 */ 1, { 1, 0, 1, 0 } }, // 110110
357 { /* 28 */ 1, { 0, 1, 1, 1 } }, // 110111
358 { /* 29 */ 1, { 1, 0, 0, 1 } }, // 111000
359 { /* 30 */ 1, { 1, 1, 1, 0 } }, // 111001
360 { /* 31 */ 0, { 6, 7, 0, 0 } },
361 { /* 32 */ 0, { 7, 8, 0, 0 } },
362 { /* 33 */ 0, { 8, 9, 0, 0 } },
363 { /* 34 */ 0, { 9, 10, 0, 0 } },
364 { /* 35 */ 0, { 10, 11, 0, 0 } },
365 { /* 36 */ 0, { 11, 12, 0, 0 } },
366 { /* 37 */ 1, { 1, 1, 1, 1 } }, // 1110100
367 { /* 38 */ 1, { 1, 0, 1, 1 } }, // 1110101
368 { /* 39 */ 1, { 1, 1, 0, 1 } }, // 1110110
369 { /* 40 */ 0, { 9, 10, 0, 0 } },
370 { /* 41 */ 0, { 10, 11, 0, 0 } },
371 { /* 42 */ 0, { 11, 12, 0, 0 } },
372 { /* 43 */ 0, { 12, 13, 0, 0 } },
373 { /* 44 */ 0, { 13, 14, 0, 0 } },
374 { /* 45 */ 0, { 14, 15, 0, 0 } },
375 { /* 46 */ 0, { 15, 16, 0, 0 } },
376 { /* 47 */ 0, { 16, 17, 0, 0 } },
377 { /* 48 */ 0, { 17, 18, 0, 0 } },
378 { /* 49 */ 1, { 2, 0, 0, 0 } }, // 11101110
379 { /* 50 */ 1, { 0, 0, 0, 2 } }, // 11101111
380 { /* 51 */ 1, { 0, 0, 1, 2 } }, // 11110000
381 { /* 52 */ 1, { 2, 1, 0, 0 } }, // 11110001
382 { /* 53 */ 1, { 1, 2, 1, 0 } }, // 11110010
383 { /* 54 */ 0, { 13, 14, 0, 0 } },
384 { /* 55 */ 0, { 14, 15, 0, 0 } },
385 { /* 56 */ 0, { 15, 16, 0, 0 } },
386 { /* 57 */ 0, { 16, 17, 0, 0 } },
387 { /* 58 */ 0, { 17, 18, 0, 0 } },
388 { /* 59 */ 0, { 18, 19, 0, 0 } },
389 { /* 60 */ 0, { 19, 20, 0, 0 } },
390 { /* 61 */ 0, { 20, 21, 0, 0 } },
391 { /* 62 */ 0, { 21, 22, 0, 0 } },
392 { /* 63 */ 0, { 22, 23, 0, 0 } },
393 { /* 64 */ 0, { 23, 24, 0, 0 } },
394 { /* 65 */ 0, { 24, 25, 0, 0 } },
395 { /* 66 */ 0, { 25, 26, 0, 0 } },
396 { /* 67 */ 1, { 0, 0, 2, 1 } },
397 { /* 68 */ 1, { 0, 1, 2, 1 } },
398 { /* 69 */ 1, { 1, 2, 0, 0 } },
399 { /* 70 */ 1, { 0, 1, 1, 2 } },
400 { /* 71 */ 1, { 2, 1, 1, 0 } },
401 { /* 72 */ 1, { 0, 0, 2, 0 } },
402 { /* 73 */ 1, { 0, 2, 1, 0 } },
403 { /* 74 */ 1, { 0, 1, 2, 0 } },
404 { /* 75 */ 1, { 0, 2, 0, 0 } },
405 { /* 76 */ 1, { 0, 1, 0, 2 } },
406 { /* 77 */ 1, { 2, 0, 1, 0 } },
407 { /* 78 */ 1, { 1, 2, 1, 1 } },
408 { /* 79 */ 1, { 0, 2, 1, 1 } },
409 { /* 80 */ 1, { 1, 1, 2, 0 } },
410 { /* 81 */ 1, { 1, 1, 2, 1 } },
411 { /* 82 */ 0, { 11, 12, 0, 0 } },
412 { /* 83 */ 0, { 12, 13, 0, 0 } },
413 { /* 84 */ 0, { 13, 14, 0, 0 } },
414 { /* 85 */ 0, { 14, 15, 0, 0 } },
415 { /* 86 */ 0, { 15, 16, 0, 0 } },
416 { /* 87 */ 0, { 16, 17, 0, 0 } },
417 { /* 88 */ 0, { 17, 18, 0, 0 } },
418 { /* 89 */ 0, { 18, 19, 0, 0 } },
419 { /* 90 */ 0, { 19, 20, 0, 0 } },
420 { /* 91 */ 0, { 20, 21, 0, 0 } },
421 { /* 92 */ 0, { 21, 22, 0, 0 } },
422 { /* 93 */ 1, { 1, 2, 0, 1 } }, // 1111101010
423 { /* 94 */ 1, { 1, 0, 2, 0 } }, // 1111101011
424 { /* 95 */ 1, { 1, 0, 2, 1 } }, // 1111101100
425 { /* 96 */ 1, { 0, 2, 0, 1 } }, // 1111101101
426 { /* 97 */ 1, { 2, 1, 1, 1 } }, // 1111101110
427 { /* 98 */ 1, { 1, 1, 1, 2 } }, // 1111101111
428 { /* 99 */ 1, { 2, 1, 0, 1 } }, // 1111110000
429 { /* 00 */ 1, { 1, 0, 1, 2 } }, // 1111110001
430 { /* 01 */ 1, { 0, 0, 2, 2 } }, // 1111110010
431 { /* 02 */ 1, { 0, 1, 2, 2 } }, // 1111110011
432 { /* 03 */ 1, { 2, 2, 1, 0 } }, // 1111110100
433 { /* 04 */ 1, { 1, 2, 2, 0 } }, // 1111110101
434 { /* 05 */ 1, { 1, 0, 0, 2 } }, // 1111110110
435 { /* 06 */ 1, { 2, 0, 0, 1 } }, // 1111110111
436 { /* 07 */ 1, { 0, 2, 2, 1 } }, // 1111111000
437 { /* 08 */ 0, { 7, 8, 0, 0 } },
438 { /* 09 */ 0, { 8, 9, 0, 0 } },
439 { /* 10 */ 0, { 9, 10, 0, 0 } },
440 { /* 11 */ 0, { 10, 11, 0, 0 } },
441 { /* 12 */ 0, { 11, 12, 0, 0 } },
442 { /* 13 */ 0, { 12, 13, 0, 0 } },
443 { /* 14 */ 0, { 13, 14, 0, 0 } },
444 { /* 15 */ 1, { 2, 2, 0, 0 } }, // 11111110010
445 { /* 16 */ 1, { 1, 2, 2, 1 } }, // 11111110011
446 { /* 17 */ 1, { 1, 1, 0, 2 } }, // 11111110100
447 { /* 18 */ 1, { 2, 0, 1, 1 } }, // 11111110101
448 { /* 19 */ 1, { 1, 1, 2, 2 } }, // 11111110110
449 { /* 20 */ 1, { 2, 2, 1, 1 } }, // 11111110111
450 { /* 21 */ 1, { 0, 2, 2, 0 } }, // 11111111000
451 { /* 22 */ 1, { 0, 2, 1, 2 } }, // 11111111001
452 { /* 23 */ 0, { 6, 7, 0, 0 } },
453 { /* 24 */ 0, { 7, 8, 0, 0 } },
454 { /* 25 */ 0, { 8, 9, 0, 0 } },
455 { /* 26 */ 0, { 9, 10, 0, 0 } },
456 { /* 27 */ 0, { 10, 11, 0, 0 } },
457 { /* 28 */ 0, { 11, 12, 0, 0 } },
458 { /* 29 */ 1, { 1, 0, 2, 2 } }, // 111111110100
459 { /* 30 */ 1, { 2, 2, 0, 1 } }, // 111111110101
460 { /* 31 */ 1, { 2, 1, 2, 0 } }, // 111111110110
461 { /* 32 */ 1, { 2, 2, 2, 0 } }, // 111111110111
462 { /* 33 */ 1, { 0, 2, 2, 2 } }, // 111111111000
463 { /* 34 */ 1, { 2, 2, 2, 1 } }, // 111111111001
464 { /* 35 */ 1, { 2, 1, 2, 1 } }, // 111111111010
465 { /* 36 */ 1, { 1, 2, 1, 2 } }, // 111111111011
466 { /* 37 */ 1, { 1, 2, 2, 2 } }, // 111111111100
467 { /* 38 */ 0, { 3, 4, 0, 0 } },
468 { /* 39 */ 0, { 4, 5, 0, 0 } },
469 { /* 40 */ 0, { 5, 6, 0, 0 } },
470 { /* 41 */ 1, { 0, 2, 0, 2 } }, // 1111111111010
471 { /* 42 */ 1, { 2, 0, 2, 0 } }, // 1111111111011
472 { /* 43 */ 1, { 1, 2, 0, 2 } }, // 1111111111100
473 { /* 44 */ 0, { 3, 4, 0, 0 } },
474 { /* 45 */ 0, { 4, 5, 0, 0 } },
475 { /* 46 */ 0, { 5, 6, 0, 0 } },
476 { /* 47 */ 1, { 2, 0, 2, 1 } }, // 11111111111010
477 { /* 48 */ 1, { 2, 1, 1, 2 } }, // 11111111111011
478 { /* 49 */ 1, { 2, 1, 0, 2 } }, // 11111111111100
479 { /* 50 */ 0, { 3, 4, 0, 0 } },
480 { /* 51 */ 0, { 4, 5, 0, 0 } },
481 { /* 52 */ 0, { 5, 6, 0, 0 } },
482 { /* 53 */ 1, { 2, 2, 2, 2 } }, // 111111111111010
483 { /* 54 */ 1, { 2, 2, 1, 2 } }, // 111111111111011
484 { /* 55 */ 1, { 2, 1, 2, 2 } }, // 111111111111100
485 { /* 56 */ 1, { 2, 0, 1, 2 } }, // 111111111111101
486 { /* 57 */ 1, { 2, 0, 0, 2 } }, // 111111111111110
487 { /* 58 */ 0, { 1, 2, 0, 0 } },
488 { /* 59 */ 1, { 2, 2, 0, 2 } }, // 1111111111111110
489 { /* 60 */ 1, { 2, 0, 2, 2 } } // 1111111111111111
490};
491
492const AacHcb aacHcb4Step1[] = {
493 // 4 bit codewords
494 { /* 00000 */ 0, 0 },
495 { /* */ 0, 0 },
496 { /* 00010 */ 1, 0 },
497 { /* */ 1, 0 },
498 { /* 00100 */ 2, 0 },
499 { /* */ 2, 0 },
500 { /* 00110 */ 3, 0 },
501 { /* */ 3, 0 },
502 { /* 01000 */ 4, 0 },
503 { /* */ 4, 0 },
504 { /* 01010 */ 5, 0 },
505 { /* */ 5, 0 },
506 { /* 01100 */ 6, 0 },
507 { /* */ 6, 0 },
508 { /* 01110 */ 7, 0 },
509 { /* */ 7, 0 },
510 { /* 10000 */ 8, 0 },
511 { /* */ 8, 0 },
512 { /* 10010 */ 9, 0 },
513 { /* */ 9, 0 },
514
515 // 5 bit codewords
516 { /* 10100 */ 10, 0 },
517 { /* 10101 */ 11, 0 },
518 { /* 10110 */ 12, 0 },
519 { /* 10111 */ 13, 0 },
520 { /* 11000 */ 14, 0 },
521 { /* 11001 */ 15, 0 },
522
523 // 7 bit codewords
524 { /* 11010 */ 16, 2 },
525 { /* 11011 */ 20, 2 },
526
527 // 7/8 bit codewords
528 { /* 11100 */ 24, 3 },
529
530 // 8 bit codewords
531 { /* 11101 */ 32, 3 },
532
533 // 8/9 bit codewords
534 { /* 11110 */ 40, 4 },
535
536 // 9/10/11/12 bit codewords
537 { /* 11111 */ 56, 7 }
538};
539
540const AacHcb2Quad aacHcb4Step2[] = {
541 // 4 bit codewords
542 { 4, 1, 1, 1, 1 },
543 { 4, 0, 1, 1, 1 },
544 { 4, 1, 1, 0, 1 },
545 { 4, 1, 1, 1, 0 },
546 { 4, 1, 0, 1, 1 },
547 { 4, 1, 0, 0, 0 },
548 { 4, 1, 1, 0, 0 },
549 { 4, 0, 0, 0, 0 },
550 { 4, 0, 0, 1, 1 },
551 { 4, 1, 0, 1, 0 },
552
553 // 5 bit codewords
554 { 5, 1, 0, 0, 1 },
555 { 5, 0, 1, 1, 0 },
556 { 5, 0, 0, 0, 1 },
557 { 5, 0, 1, 0, 1 },
558 { 5, 0, 0, 1, 0 },
559 { 5, 0, 1, 0, 0 },
560
561 // 7 bit codewords
562 // first 5 bits: 11010
563 { 7, 2, 1, 1, 1 },
564 { 7, 1, 1, 2, 1 },
565 { 7, 1, 2, 1, 1 },
566 { 7, 1, 1, 1, 2 },
567 // first 5 bits: 11011
568 { 7, 2, 1, 1, 0 },
569 { 7, 2, 1, 0, 1 },
570 { 7, 1, 2, 1, 0 },
571 { 7, 2, 0, 1, 1 },
572
573 // 7/8 bit codewords
574 // first 5 bits: 11100
575 { 7, 0, 1, 2, 1 }, { 7, 0, 1, 2, 1 },
576 { 8, 0, 1, 1, 2 },
577 { 8, 1, 1, 2, 0 },
578 { 8, 0, 2, 1, 1 },
579 { 8, 1, 0, 1, 2 },
580 { 8, 1, 2, 0, 1 },
581 { 8, 1, 1, 0, 2 },
582
583 // 8 bit codewords
584 { 8, 1, 0, 2, 1 },
585 { 8, 2, 1, 0, 0 },
586 { 8, 2, 0, 1, 0 },
587 { 8, 1, 2, 0, 0 },
588 { 8, 2, 0, 0, 1 },
589 { 8, 0, 1, 0, 2 },
590 { 8, 0, 2, 1, 0 },
591 { 8, 0, 0, 1, 2 },
592
593 // 8/9 bit codewords
594 { 8, 0, 1, 2, 0 }, { 8, 0, 1, 2, 0 },
595 { 8, 0, 2, 0, 1 }, { 8, 0, 2, 0, 1 },
596 { 8, 1, 0, 0, 2 }, { 8, 1, 0, 0, 2 },
597 { 8, 0, 0, 2, 1 }, { 8, 0, 0, 2, 1 },
598 { 8, 1, 0, 2, 0 }, { 8, 1, 0, 2, 0 },
599 { 8, 2, 0, 0, 0 }, { 8, 2, 0, 0, 0 },
600 { 8, 0, 0, 0, 2 }, { 8, 0, 0, 0, 2 },
601 { 9, 0, 2, 0, 0 },
602 { 9, 0, 0, 2, 0 },
603
604 // 9/10/11 bit codewords
605 // 9 bit codewords repeated 2^3 = 8 times
606 { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 },
607 { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 }, { 9, 1, 2, 2, 1 },
608 { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 },
609 { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 }, { 9, 2, 2, 1, 1 },
610 { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 },
611 { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 }, { 9, 2, 1, 2, 1 },
612 { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 },
613 { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 }, { 9, 1, 1, 2, 2 },
614 { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 },
615 { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 }, { 9, 1, 2, 1, 2 },
616 { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 },
617 { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 }, { 9, 2, 1, 1, 2 },
618 // 10 bit codewords repeated 2^2 = 4 times
619 { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 }, { 10, 1, 2, 2, 0 },
620 { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 }, { 10, 2, 2, 1, 0 },
621 { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 }, { 10, 2, 1, 2, 0 },
622 { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 }, { 10, 0, 2, 2, 1 },
623 { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 }, { 10, 0, 1, 2, 2 },
624 { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 }, { 10, 2, 2, 0, 1 },
625 { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 }, { 10, 0, 2, 1, 2 },
626 { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 }, { 10, 2, 0, 2, 1 },
627 { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 }, { 10, 1, 0, 2, 2 },
628 { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 }, { 10, 2, 2, 2, 1 },
629 { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 }, { 10, 1, 2, 0, 2 },
630 { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 }, { 10, 2, 0, 1, 2 },
631 { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 }, { 10, 2, 1, 0, 2 },
632 { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 }, { 10, 1, 2, 2, 2 },
633 // 11 bit codewords repeated 2^1 = 2 times
634 { 11, 2, 1, 2, 2 }, { 11, 2, 1, 2, 2 },
635 { 11, 2, 2, 1, 2 }, { 11, 2, 2, 1, 2 },
636 { 11, 0, 2, 2, 0 }, { 11, 0, 2, 2, 0 },
637 { 11, 2, 2, 0, 0 }, { 11, 2, 2, 0, 0 },
638 { 11, 0, 0, 2, 2 }, { 11, 0, 0, 2, 2 },
639 { 11, 2, 0, 2, 0 }, { 11, 2, 0, 2, 0 },
640 { 11, 0, 2, 0, 2 }, { 11, 0, 2, 0, 2 },
641 { 11, 2, 0, 0, 2 }, { 11, 2, 0, 0, 2 },
642 { 11, 2, 2, 2, 2 }, { 11, 2, 2, 2, 2 },
643 { 11, 0, 2, 2, 2 }, { 11, 0, 2, 2, 2 },
644 { 11, 2, 2, 2, 0 }, { 11, 2, 2, 2, 0 },
645 // 12 bit codewords
646 { 12, 2, 2, 0, 2 },
647 { 12, 2, 0, 2, 2 },
648};
649
650const AacHcbBinPair aacHcb5[] = {
651 { /* 0 */ 0, { 1, 2 } },
652 { /* 1 */ 1, { 0, 0 } }, // 0
653 { /* 2 */ 0, { 1, 2 } },
654 { /* 3 */ 0, { 2, 3 } },
655 { /* 4 */ 0, { 3, 4 } },
656 { /* 5 */ 0, { 4, 5 } },
657 { /* 6 */ 0, { 5, 6 } },
658 { /* 7 */ 0, { 6, 7 } },
659 { /* 8 */ 0, { 7, 8 } },
660 { /* 9 */ 1, { -1, 0 } }, // 1000
661 { /* 10 */ 1, { 1, 0 } }, // 1001
662 { /* 11 */ 1, { 0, 1 } }, // 1010
663 { /* 12 */ 1, { 0, -1 } }, // 1011
664 { /* 13 */ 0, { 4, 5 } },
665 { /* 14 */ 0, { 5, 6 } },
666 { /* 15 */ 0, { 6, 7 } },
667 { /* 16 */ 0, { 7, 8 } },
668 { /* 17 */ 1, { 1, -1 } },
669 { /* 18 */ 1, { -1, 1 } },
670 { /* 19 */ 1, { -1, -1 } },
671 { /* 20 */ 1, { 1, 1 } },
672 { /* 21 */ 0, { 4, 5 } },
673 { /* 22 */ 0, { 5, 6 } },
674 { /* 23 */ 0, { 6, 7 } },
675 { /* 24 */ 0, { 7, 8 } },
676 { /* 25 */ 0, { 8, 9 } },
677 { /* 26 */ 0, { 9, 10 } },
678 { /* 27 */ 0, { 10, 11 } },
679 { /* 28 */ 0, { 11, 12 } },
680 { /* 29 */ 0, { 12, 13 } },
681 { /* 30 */ 0, { 13, 14 } },
682 { /* 31 */ 0, { 14, 15 } },
683 { /* 32 */ 0, { 15, 16 } },
684 { /* 33 */ 1, { -2, 0 } },
685 { /* 34 */ 1, { 0, 2 } },
686 { /* 35 */ 1, { 2, 0 } },
687 { /* 36 */ 1, { 0, -2 } },
688 { /* 37 */ 0, { 12, 13 } },
689 { /* 38 */ 0, { 13, 14 } },
690 { /* 39 */ 0, { 14, 15 } },
691 { /* 40 */ 0, { 15, 16 } },
692 { /* 41 */ 0, { 16, 17 } },
693 { /* 42 */ 0, { 17, 18 } },
694 { /* 43 */ 0, { 18, 19 } },
695 { /* 44 */ 0, { 19, 20 } },
696 { /* 45 */ 0, { 20, 21 } },
697 { /* 46 */ 0, { 21, 22 } },
698 { /* 47 */ 0, { 22, 23 } },
699 { /* 48 */ 0, { 23, 24 } },
700 { /* 49 */ 1, { -2, -1 } },
701 { /* 50 */ 1, { 2, 1 } },
702 { /* 51 */ 1, { -1, -2 } },
703 { /* 52 */ 1, { 1, 2 } },
704 { /* 53 */ 1, { -2, 1 } },
705 { /* 54 */ 1, { 2, -1 } },
706 { /* 55 */ 1, { -1, 2 } },
707 { /* 56 */ 1, { 1, -2 } },
708 { /* 57 */ 1, { -3, 0 } },
709 { /* 58 */ 1, { 3, 0 } },
710 { /* 59 */ 1, { 0, -3 } },
711 { /* 60 */ 1, { 0, 3 } },
712 { /* 61 */ 0, { 12, 13 } },
713 { /* 62 */ 0, { 13, 14 } },
714 { /* 63 */ 0, { 14, 15 } },
715 { /* 64 */ 0, { 15, 16 } },
716 { /* 65 */ 0, { 16, 17 } },
717 { /* 66 */ 0, { 17, 18 } },
718 { /* 67 */ 0, { 18, 19 } },
719 { /* 68 */ 0, { 19, 20 } },
720 { /* 69 */ 0, { 20, 21 } },
721 { /* 70 */ 0, { 21, 22 } },
722 { /* 71 */ 0, { 22, 23 } },
723 { /* 72 */ 0, { 23, 24 } },
724 { /* 73 */ 1, { -3, -1 } },
725 { /* 74 */ 1, { 1, 3 } },
726 { /* 75 */ 1, { 3, 1 } },
727 { /* 76 */ 1, { -1, -3 } },
728 { /* 77 */ 1, { -3, 1 } },
729 { /* 78 */ 1, { 3, -1 } },
730 { /* 79 */ 1, { 1, -3 } },
731 { /* 80 */ 1, { -1, 3 } },
732 { /* 81 */ 1, { -2, 2 } },
733 { /* 82 */ 1, { 2, 2 } },
734 { /* 83 */ 1, { -2, -2 } },
735 { /* 84 */ 1, { 2, -2 } },
736 { /* 85 */ 0, { 12, 13 } },
737 { /* 86 */ 0, { 13, 14 } },
738 { /* 87 */ 0, { 14, 15 } },
739 { /* 88 */ 0, { 15, 16 } },
740 { /* 89 */ 0, { 16, 17 } },
741 { /* 90 */ 0, { 17, 18 } },
742 { /* 91 */ 0, { 18, 19 } },
743 { /* 92 */ 0, { 19, 20 } },
744 { /* 93 */ 0, { 20, 21 } },
745 { /* 94 */ 0, { 21, 22 } },
746 { /* 95 */ 0, { 22, 23 } },
747 { /* 96 */ 0, { 23, 24 } },
748 { /* 97 */ 1, { -3, -2 } },
749 { /* 98 */ 1, { 3, -2 } },
750 { /* 99 */ 1, { -2, 3 } },
751 { /* 00 */ 1, { 2, -3 } },
752 { /* 01 */ 1, { 3, 2 } },
753 { /* 02 */ 1, { 2, 3 } },
754 { /* 03 */ 1, { -3, 2 } },
755 { /* 04 */ 1, { -2, -3 } },
756 { /* 05 */ 1, { 0, -4 } },
757 { /* 06 */ 1, { -4, 0 } },
758 { /* 07 */ 1, { 4, 1 } },
759 { /* 08 */ 1, { 4, 0 } },
760 { /* 09 */ 0, { 12, 13 } },
761 { /* 10 */ 0, { 13, 14 } },
762 { /* 11 */ 0, { 14, 15 } },
763 { /* 12 */ 0, { 15, 16 } },
764 { /* 13 */ 0, { 16, 17 } },
765 { /* 14 */ 0, { 17, 18 } },
766 { /* 15 */ 0, { 18, 19 } },
767 { /* 16 */ 0, { 19, 20 } },
768 { /* 17 */ 0, { 20, 21 } },
769 { /* 18 */ 0, { 21, 22 } },
770 { /* 19 */ 0, { 22, 23 } },
771 { /* 20 */ 0, { 23, 24 } },
772 { /* 21 */ 1, { -4, -1 } },
773 { /* 22 */ 1, { 0, 4 } },
774 { /* 23 */ 1, { 4, -1 } },
775 { /* 24 */ 1, { -1, -4 } },
776 { /* 25 */ 1, { 1, 4 } },
777 { /* 26 */ 1, { -1, 4 } },
778 { /* 27 */ 1, { -4, 1 } },
779 { /* 28 */ 1, { 1, -4 } },
780 { /* 29 */ 1, { 3, -3 } },
781 { /* 30 */ 1, { -3, -3 } },
782 { /* 31 */ 1, { -3, 3 } },
783 { /* 32 */ 1, { -2, 4 } },
784 { /* 33 */ 1, { -4, -2 } },
785 { /* 34 */ 1, { 4, 2 } },
786 { /* 35 */ 1, { 2, -4 } },
787 { /* 36 */ 1, { 2, 4 } },
788 { /* 37 */ 1, { 3, 3 } },
789 { /* 38 */ 1, { -4, 2 } },
790 { /* 39 */ 0, { 6, 7 } },
791 { /* 40 */ 0, { 7, 8 } },
792 { /* 41 */ 0, { 8, 9 } },
793 { /* 42 */ 0, { 9, 10 } },
794 { /* 43 */ 0, { 10, 11 } },
795 { /* 44 */ 0, { 11, 12 } },
796 { /* 45 */ 1, { -2, -4 } },
797 { /* 46 */ 1, { 4, -2 } },
798 { /* 47 */ 1, { 3, -4 } },
799 { /* 48 */ 1, { -4, -3 } },
800 { /* 49 */ 1, { -4, 3 } },
801 { /* 50 */ 1, { 3, 4 } },
802 { /* 51 */ 1, { -3, 4 } },
803 { /* 52 */ 1, { 4, 3 } },
804 { /* 53 */ 1, { 4, -3 } },
805 { /* 54 */ 1, { -3, -4 } },
806 { /* 55 */ 0, { 2, 3 } },
807 { /* 56 */ 0, { 3, 4 } },
808 { /* 57 */ 1, { 4, -4 } },
809 { /* 58 */ 1, { -4, 4 } },
810 { /* 59 */ 1, { 4, 4 } },
811 { /* 60 */ 1, { -4, -4 } }
812};
813
814const AacHcb aacHcb6Step1[] = {
815 // 4 bit codewords
816 { /* 00000 */ 0, 0 },
817 { /* */ 0, 0 },
818 { /* 00010 */ 1, 0 },
819 { /* */ 1, 0 },
820 { /* 00100 */ 2, 0 },
821 { /* */ 2, 0 },
822 { /* 00110 */ 3, 0 },
823 { /* */ 3, 0 },
824 { /* 01000 */ 4, 0 },
825 { /* */ 4, 0 },
826 { /* 01010 */ 5, 0 },
827 { /* */ 5, 0 },
828 { /* 01100 */ 6, 0 },
829 { /* */ 6, 0 },
830 { /* 01110 */ 7, 0 },
831 { /* */ 7, 0 },
832 { /* 10000 */ 8, 0 },
833 { /* */ 8, 0 },
834
835 // 6 bit codewords
836 { /* 10010 */ 9, 1 },
837 { /* 10011 */ 11, 1 },
838 { /* 10100 */ 13, 1 },
839 { /* 10101 */ 15, 1 },
840 { /* 10110 */ 17, 1 },
841 { /* 10111 */ 19, 1 },
842 { /* 11000 */ 21, 1 },
843 { /* 11001 */ 23, 1 },
844
845 // 7 bit codewords
846 { /* 11010 */ 25, 2 },
847 { /* 11011 */ 29, 2 },
848 { /* 11100 */ 33, 2 },
849
850 // 7/8 bit codewords
851 { /* 11101 */ 37, 3 },
852
853 // 8/9 bit codewords
854 { /* 11110 */ 45, 4 },
855
856 // 9/10/11 bit codewords
857 { /* 11111 */ 61, 6 }
858};
859
860const AacHcb2Pair aacHcb6Step2[] = {
861 // 4 bit codewords
862 { 4, 0, 0 },
863 { 4, 1, 0 },
864 { 4, 0, -1 },
865 { 4, 0, 1 },
866 { 4, -1, 0 },
867 { 4, 1, 1 },
868 { 4, -1, 1 },
869 { 4, 1, -1 },
870 { 4, -1, -1 },
871
872 // 6 bit codewords
873 { 6, 2, -1 },
874 { 6, 2, 1 },
875 { 6, -2, 1 },
876 { 6, -2, -1 },
877 { 6, -2, 0 },
878 { 6, -1, 2 },
879 { 6, 2, 0 },
880 { 6, 1, -2 },
881 { 6, 1, 2 },
882 { 6, 0, -2 },
883 { 6, -1, -2 },
884 { 6, 0, 2 },
885 { 6, 2, -2 },
886 { 6, -2, 2 },
887 { 6, -2, -2 },
888 { 6, 2, 2 },
889
890 // 7 bit codewords
891 { 7, -3, 1 },
892 { 7, 3, 1 },
893 { 7, 3, -1 },
894 { 7, -1, 3 },
895 { 7, -3, -1 },
896 { 7, 1, 3 },
897 { 7, 1, -3 },
898 { 7, -1, -3 },
899 { 7, 3, 0 },
900 { 7, -3, 0 },
901 { 7, 0, -3 },
902 { 7, 0, 3 },
903
904 // 7/8 bit codewords
905 { 7, 3, 2 }, { 7, 3, 2 },
906 { 8, -3, -2 },
907 { 8, -2, 3 },
908 { 8, 2, 3 },
909 { 8, 3, -2 },
910 { 8, 2, -3 },
911 { 8, -2, -3 },
912
913 // 8 bit codewords
914 { 8, -3, 2 }, { 8, -3, 2 },
915 { 8, 3, 3 }, { 8, 3, 3 },
916 { 9, 3, -3 },
917 { 9, -3, -3 },
918 { 9, -3, 3 },
919 { 9, 1, -4 },
920 { 9, -1, -4 },
921 { 9, 4, 1 },
922 { 9, -4, 1 },
923 { 9, -4, -1 },
924 { 9, 1, 4 },
925 { 9, 4, -1 },
926 { 9, -1, 4 },
927 { 9, 0, -4 },
928
929 // 9/10/11 bit codewords
930 { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 }, { 9, -4, 2 },
931 { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 }, { 9, -4, -2 },
932 { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 }, { 9, 2, 4 },
933 { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 }, { 9, -2, -4 },
934 { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 }, { 9, -4, 0 },
935 { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 }, { 9, 4, 2 },
936 { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 }, { 9, 4, -2 },
937 { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 }, { 9, -2, 4 },
938 { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 }, { 9, 4, 0 },
939 { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 }, { 9, 2, -4 },
940 { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 }, { 9, 0, 4 },
941 { 10, -3, -4 }, { 10, -3, -4 },
942 { 10, -3, 4 }, { 10, -3, 4 },
943 { 10, 3, -4 }, { 10, 3, -4 },
944 { 10, 4, -3 }, { 10, 4, -3 },
945 { 10, 3, 4 }, { 10, 3, 4 },
946 { 10, 4, 3 }, { 10, 4, 3 },
947 { 10, -4, 3 }, { 10, -4, 3 },
948 { 10, -4, -3 }, { 10, -4, -3 },
949 { 11, 4, 4 },
950 { 11, -4, 4 },
951 { 11, -4, -4 },
952 { 11, 4, -4 }
953};
954
955const AacHcbBinPair aacHcb7[] = {
956 { /* 0 */ 0, { 1, 2 } },
957 { /* 1 */ 1, { 0, 0 } },
958 { /* 2 */ 0, { 1, 2 } },
959 { /* 3 */ 0, { 2, 3 } },
960 { /* 4 */ 0, { 3, 4 } },
961 { /* 5 */ 1, { 1, 0 } },
962 { /* 6 */ 1, { 0, 1 } },
963 { /* 7 */ 0, { 2, 3 } },
964 { /* 8 */ 0, { 3, 4 } },
965 { /* 9 */ 1, { 1, 1 } },
966 { /* 10 */ 0, { 3, 4 } },
967 { /* 11 */ 0, { 4, 5 } },
968 { /* 12 */ 0, { 5, 6 } },
969 { /* 13 */ 0, { 6, 7 } },
970 { /* 14 */ 0, { 7, 8 } },
971 { /* 15 */ 0, { 8, 9 } },
972 { /* 16 */ 0, { 9, 10 } },
973 { /* 17 */ 0, { 10, 11 } },
974 { /* 18 */ 0, { 11, 12 } },
975 { /* 19 */ 1, { 2, 1 } },
976 { /* 20 */ 1, { 1, 2 } },
977 { /* 21 */ 1, { 2, 0 } },
978 { /* 22 */ 1, { 0, 2 } },
979 { /* 23 */ 0, { 8, 9 } },
980 { /* 24 */ 0, { 9, 10 } },
981 { /* 25 */ 0, { 10, 11 } },
982 { /* 26 */ 0, { 11, 12 } },
983 { /* 27 */ 0, { 12, 13 } },
984 { /* 28 */ 0, { 13, 14 } },
985 { /* 29 */ 0, { 14, 15 } },
986 { /* 30 */ 0, { 15, 16 } },
987 { /* 31 */ 1, { 3, 1 } },
988 { /* 32 */ 1, { 1, 3 } },
989 { /* 33 */ 1, { 2, 2 } },
990 { /* 34 */ 1, { 3, 0 } },
991 { /* 35 */ 1, { 0, 3 } },
992 { /* 36 */ 0, { 11, 12 } },
993 { /* 37 */ 0, { 12, 13 } },
994 { /* 38 */ 0, { 13, 14 } },
995 { /* 39 */ 0, { 14, 15 } },
996 { /* 40 */ 0, { 15, 16 } },
997 { /* 41 */ 0, { 16, 17 } },
998 { /* 42 */ 0, { 17, 18 } },
999 { /* 43 */ 0, { 18, 19 } },
1000 { /* 44 */ 0, { 19, 20 } },
1001 { /* 45 */ 0, { 20, 21 } },
1002 { /* 46 */ 0, { 21, 22 } },
1003 { /* 47 */ 1, { 2, 3 } },
1004 { /* 48 */ 1, { 3, 2 } },
1005 { /* 49 */ 1, { 1, 4 } },
1006 { /* 50 */ 1, { 4, 1 } },
1007 { /* 51 */ 1, { 1, 5 } },
1008 { /* 52 */ 1, { 5, 1 } },
1009 { /* 53 */ 1, { 3, 3 } },
1010 { /* 54 */ 1, { 2, 4 } },
1011 { /* 55 */ 1, { 0, 4 } },
1012 { /* 56 */ 1, { 4, 0 } },
1013 { /* 57 */ 0, { 12, 13 } },
1014 { /* 58 */ 0, { 13, 14 } },
1015 { /* 59 */ 0, { 14, 15 } },
1016 { /* 60 */ 0, { 15, 16 } },
1017 { /* 61 */ 0, { 16, 17 } },
1018 { /* 62 */ 0, { 17, 18 } },
1019 { /* 63 */ 0, { 18, 19 } },
1020 { /* 64 */ 0, { 19, 20 } },
1021 { /* 65 */ 0, { 20, 21 } },
1022 { /* 66 */ 0, { 21, 22 } },
1023 { /* 67 */ 0, { 22, 23 } },
1024 { /* 68 */ 0, { 23, 24 } },
1025 { /* 69 */ 1, { 4, 2 } },
1026 { /* 70 */ 1, { 2, 5 } },
1027 { /* 71 */ 1, { 5, 2 } },
1028 { /* 72 */ 1, { 0, 5 } },
1029 { /* 73 */ 1, { 6, 1 } },
1030 { /* 74 */ 1, { 5, 0 } },
1031 { /* 75 */ 1, { 1, 6 } },
1032 { /* 76 */ 1, { 4, 3 } },
1033 { /* 77 */ 1, { 3, 5 } },
1034 { /* 78 */ 1, { 3, 4 } },
1035 { /* 79 */ 1, { 5, 3 } },
1036 { /* 80 */ 1, { 2, 6 } },
1037 { /* 81 */ 1, { 6, 2 } },
1038 { /* 82 */ 1, { 1, 7 } },
1039 { /* 83 */ 0, { 10, 11 } },
1040 { /* 84 */ 0, { 11, 12 } },
1041 { /* 85 */ 0, { 12, 13 } },
1042 { /* 86 */ 0, { 13, 14 } },
1043 { /* 87 */ 0, { 14, 15 } },
1044 { /* 88 */ 0, { 15, 16 } },
1045 { /* 89 */ 0, { 16, 17 } },
1046 { /* 90 */ 0, { 17, 18 } },
1047 { /* 91 */ 0, { 18, 19 } },
1048 { /* 92 */ 0, { 19, 20 } },
1049 { /* 93 */ 1, { 3, 6 } },
1050 { /* 94 */ 1, { 0, 6 } },
1051 { /* 95 */ 1, { 6, 0 } },
1052 { /* 96 */ 1, { 4, 4 } },
1053 { /* 97 */ 1, { 7, 1 } },
1054 { /* 98 */ 1, { 4, 5 } },
1055 { /* 99 */ 1, { 7, 2 } },
1056 { /* 00 */ 1, { 5, 4 } },
1057 { /* 01 */ 1, { 6, 3 } },
1058 { /* 02 */ 1, { 2, 7 } },
1059 { /* 03 */ 1, { 7, 3 } },
1060 { /* 04 */ 1, { 6, 4 } },
1061 { /* 05 */ 1, { 5, 5 } },
1062 { /* 06 */ 1, { 4, 6 } },
1063 { /* 07 */ 1, { 3, 7 } },
1064 { /* 08 */ 0, { 5, 6 } },
1065 { /* 09 */ 0, { 6, 7 } },
1066 { /* 10 */ 0, { 7, 8 } },
1067 { /* 11 */ 0, { 8, 9 } },
1068 { /* 12 */ 0, { 9, 10 } },
1069 { /* 13 */ 1, { 7, 0 } },
1070 { /* 14 */ 1, { 0, 7 } },
1071 { /* 15 */ 1, { 6, 5 } },
1072 { /* 16 */ 1, { 5, 6 } },
1073 { /* 17 */ 1, { 7, 4 } },
1074 { /* 18 */ 1, { 4, 7 } },
1075 { /* 19 */ 1, { 5, 7 } },
1076 { /* 20 */ 1, { 7, 5 } },
1077 { /* 21 */ 0, { 2, 3 } },
1078 { /* 22 */ 0, { 3, 4 } },
1079 { /* 23 */ 1, { 7, 6 } },
1080 { /* 24 */ 1, { 6, 6 } },
1081 { /* 25 */ 1, { 6, 7 } },
1082 { /* 26 */ 1, { 7, 7 } }
1083};
1084
1085const AacHcb aacHcb8Step1[] = {
1086 // 3 bit codeword
1087 { /* 00000 */ 0, 0 },
1088 { /* */ 0, 0 },
1089 { /* */ 0, 0 },
1090 { /* */ 0, 0 },
1091
1092 // 4 bit codewords
1093 { /* 00100 */ 1, 0 },
1094 { /* */ 1, 0 },
1095 { /* 00110 */ 2, 0 },
1096 { /* */ 2, 0 },
1097 { /* 01000 */ 3, 0 },
1098 { /* */ 3, 0 },
1099 { /* 01010 */ 4, 0 },
1100 { /* */ 4, 0 },
1101 { /* 01100 */ 5, 0 },
1102 { /* */ 5, 0 },
1103
1104 // 5 bit codewords
1105 { /* 01110 */ 6, 0 },
1106 { /* 01111 */ 7, 0 },
1107 { /* 10000 */ 8, 0 },
1108 { /* 10001 */ 9, 0 },
1109 { /* 10010 */ 10, 0 },
1110 { /* 10011 */ 11, 0 },
1111 { /* 10100 */ 12, 0 },
1112
1113 // 6 bit codewords
1114 { /* 10101 */ 13, 1 },
1115 { /* 10110 */ 15, 1 },
1116 { /* 10111 */ 17, 1 },
1117 { /* 11000 */ 19, 1 },
1118 { /* 11001 */ 21, 1 },
1119
1120 // 7 bit codewords
1121 { /* 11010 */ 23, 2 },
1122 { /* 11011 */ 27, 2 },
1123 { /* 11100 */ 31, 2 },
1124
1125 // 7/8 bit codewords
1126 { /* 11101 */ 35, 3 },
1127
1128 // 8 bit codewords
1129 { /* 11110 */ 43, 3 },
1130
1131 // 8/9/10 bit codewords
1132 { /* 11111 */ 51, 5 }
1133};
1134
1135const AacHcb2Pair aacHcb8Step2[] = {
1136 // 3 bit codeword
1137 { 3, 1, 1 },
1138
1139 // 4 bit codewords
1140 { 4, 2, 1 },
1141 { 4, 1, 0 },
1142 { 4, 1, 2 },
1143 { 4, 0, 1 },
1144 { 4, 2, 2 },
1145
1146 // 5 bit codewords
1147 { 5, 0, 0 },
1148 { 5, 2, 0 },
1149 { 5, 0, 2 },
1150 { 5, 3, 1 },
1151 { 5, 1, 3 },
1152 { 5, 3, 2 },
1153 { 5, 2, 3 },
1154
1155 // 6 bit codewords
1156 { 6, 3, 3 },
1157 { 6, 4, 1 },
1158 { 6, 1, 4 },
1159 { 6, 4, 2 },
1160 { 6, 2, 4 },
1161 { 6, 3, 0 },
1162 { 6, 0, 3 },
1163 { 6, 4, 3 },
1164 { 6, 3, 4 },
1165 { 6, 5, 2 },
1166
1167 // 7 bit codewords
1168 { 7, 5, 1 },
1169 { 7, 2, 5 },
1170 { 7, 1, 5 },
1171 { 7, 5, 3 },
1172 { 7, 3, 5 },
1173 { 7, 4, 4 },
1174 { 7, 5, 4 },
1175 { 7, 0, 4 },
1176 { 7, 4, 5 },
1177 { 7, 4, 0 },
1178 { 7, 2, 6 },
1179 { 7, 6, 2 },
1180
1181 // 7/8 bit codewords
1182 { 7, 6, 1 }, { 7, 6, 1 },
1183 { 7, 1, 6 }, { 7, 1, 6 },
1184 { 8, 3, 6 },
1185 { 8, 6, 3 },
1186 { 8, 5, 5 },
1187 { 8, 5, 0 },
1188
1189 // 8 bit codewords
1190 { 8, 6, 4 },
1191 { 8, 0, 5 },
1192 { 8, 4, 6 },
1193 { 8, 7, 1 },
1194 { 8, 7, 2 },
1195 { 8, 2, 7 },
1196 { 8, 6, 5 },
1197 { 8, 7, 3 },
1198
1199 // 8/9/10 bit codewords
1200 { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 }, { 8, 1, 7 },
1201 { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 }, { 8, 5, 6 },
1202 { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 }, { 8, 3, 7 },
1203 { 9, 6, 6 }, { 9, 6, 6 },
1204 { 9, 7, 4 }, { 9, 7, 4 },
1205 { 9, 6, 0 }, { 9, 6, 0 },
1206 { 9, 4, 7 }, { 9, 4, 7 },
1207 { 9, 0, 6 }, { 9, 0, 6 },
1208 { 9, 7, 5 }, { 9, 7, 5 },
1209 { 9, 7, 6 }, { 9, 7, 6 },
1210 { 9, 6, 7 }, { 9, 6, 7 },
1211 { 10, 5, 7 },
1212 { 10, 7, 0 },
1213 { 10, 0, 7 },
1214 { 10, 7, 7 }
1215};
1216
1217const AacHcbBinPair aacHcb9[] = {
1218 { /* 0 */ 0, { 1, 2 } },
1219 { /* 1 */ 1, { 0, 0 } },
1220 { /* 2 */ 0, { 1, 2 } },
1221 { /* 3 */ 0, { 2, 3 } },
1222 { /* 4 */ 0, { 3, 4 } },
1223 { /* 5 */ 1, { 1, 0 } },
1224 { /* 6 */ 1, { 0, 1 } },
1225 { /* 7 */ 0, { 2, 3 } },
1226 { /* 8 */ 0, { 3, 4 } },
1227 { /* 9 */ 1, { 1, 1 } },
1228 { /* 10 */ 0, { 3, 4 } },
1229 { /* 11 */ 0, { 4, 5 } },
1230 { /* 12 */ 0, { 5, 6 } },
1231 { /* 13 */ 0, { 6, 7 } },
1232 { /* 14 */ 0, { 7, 8 } },
1233 { /* 15 */ 0, { 8, 9 } },
1234 { /* 16 */ 0, { 9, 10 } },
1235 { /* 17 */ 0, { 10, 11 } },
1236 { /* 18 */ 0, { 11, 12 } },
1237 { /* 19 */ 1, { 2, 1 } },
1238 { /* 20 */ 1, { 1, 2 } },
1239 { /* 21 */ 1, { 2, 0 } },
1240 { /* 22 */ 1, { 0, 2 } },
1241 { /* 23 */ 0, { 8, 9 } },
1242 { /* 24 */ 0, { 9, 10 } },
1243 { /* 25 */ 0, { 10, 11 } },
1244 { /* 26 */ 0, { 11, 12 } },
1245 { /* 27 */ 0, { 12, 13 } },
1246 { /* 28 */ 0, { 13, 14 } },
1247 { /* 29 */ 0, { 14, 15 } },
1248 { /* 30 */ 0, { 15, 16 } },
1249 { /* 31 */ 1, { 3, 1 } },
1250 { /* 32 */ 1, { 2, 2 } },
1251 { /* 33 */ 1, { 1, 3 } },
1252 { /* 34 */ 0, { 13, 14 } },
1253 { /* 35 */ 0, { 14, 15 } },
1254 { /* 36 */ 0, { 15, 16 } },
1255 { /* 37 */ 0, { 16, 17 } },
1256 { /* 38 */ 0, { 17, 18 } },
1257 { /* 39 */ 0, { 18, 19 } },
1258 { /* 40 */ 0, { 19, 20 } },
1259 { /* 41 */ 0, { 20, 21 } },
1260 { /* 42 */ 0, { 21, 22 } },
1261 { /* 43 */ 0, { 22, 23 } },
1262 { /* 44 */ 0, { 23, 24 } },
1263 { /* 45 */ 0, { 24, 25 } },
1264 { /* 46 */ 0, { 25, 26 } },
1265 { /* 47 */ 1, { 3, 0 } },
1266 { /* 48 */ 1, { 0, 3 } },
1267 { /* 49 */ 1, { 2, 3 } },
1268 { /* 50 */ 1, { 3, 2 } },
1269 { /* 51 */ 1, { 1, 4 } },
1270 { /* 52 */ 1, { 4, 1 } },
1271 { /* 53 */ 1, { 2, 4 } },
1272 { /* 54 */ 1, { 1, 5 } },
1273 { /* 55 */ 0, { 18, 19 } },
1274 { /* 56 */ 0, { 19, 20 } },
1275 { /* 57 */ 0, { 20, 21 } },
1276 { /* 58 */ 0, { 21, 22 } },
1277 { /* 59 */ 0, { 22, 23 } },
1278 { /* 60 */ 0, { 23, 24 } },
1279 { /* 61 */ 0, { 24, 25 } },
1280 { /* 62 */ 0, { 25, 26 } },
1281 { /* 63 */ 0, { 26, 27 } },
1282 { /* 64 */ 0, { 27, 28 } },
1283 { /* 65 */ 0, { 28, 29 } },
1284 { /* 66 */ 0, { 29, 30 } },
1285 { /* 67 */ 0, { 30, 31 } },
1286 { /* 68 */ 0, { 31, 32 } },
1287 { /* 69 */ 0, { 32, 33 } },
1288 { /* 70 */ 0, { 33, 34 } },
1289 { /* 71 */ 0, { 34, 35 } },
1290 { /* 72 */ 0, { 35, 36 } },
1291 { /* 73 */ 1, { 4, 2 } },
1292 { /* 74 */ 1, { 3, 3 } },
1293 { /* 75 */ 1, { 0, 4 } },
1294 { /* 76 */ 1, { 4, 0 } },
1295 { /* 77 */ 1, { 5, 1 } },
1296 { /* 78 */ 1, { 2, 5 } },
1297 { /* 79 */ 1, { 1, 6 } },
1298 { /* 80 */ 1, { 3, 4 } },
1299 { /* 81 */ 1, { 5, 2 } },
1300 { /* 82 */ 1, { 6, 1 } },
1301 { /* 83 */ 1, { 4, 3 } },
1302 { /* 84 */ 0, { 25, 26 } },
1303 { /* 85 */ 0, { 26, 27 } },
1304 { /* 86 */ 0, { 27, 28 } },
1305 { /* 87 */ 0, { 28, 29 } },
1306 { /* 88 */ 0, { 29, 30 } },
1307 { /* 89 */ 0, { 30, 31 } },
1308 { /* 90 */ 0, { 31, 32 } },
1309 { /* 91 */ 0, { 32, 33 } },
1310 { /* 92 */ 0, { 33, 34 } },
1311 { /* 93 */ 0, { 34, 35 } },
1312 { /* 94 */ 0, { 35, 36 } },
1313 { /* 95 */ 0, { 36, 37 } },
1314 { /* 96 */ 0, { 37, 38 } },
1315 { /* 97 */ 0, { 38, 39 } },
1316 { /* 98 */ 0, { 39, 40 } },
1317 { /* 99 */ 0, { 40, 41 } },
1318 { /* 00 */ 0, { 41, 42 } },
1319 { /* 01 */ 0, { 42, 43 } },
1320 { /* 02 */ 0, { 43, 44 } },
1321 { /* 03 */ 0, { 44, 45 } },
1322 { /* 04 */ 0, { 45, 46 } },
1323 { /* 05 */ 0, { 46, 47 } },
1324 { /* 06 */ 0, { 47, 48 } },
1325 { /* 07 */ 0, { 48, 49 } },
1326 { /* 08 */ 0, { 49, 50 } },
1327 { /* 09 */ 1, { 0, 5 } },
1328 { /* 10 */ 1, { 2, 6 } },
1329 { /* 11 */ 1, { 5, 0 } },
1330 { /* 12 */ 1, { 1, 7 } },
1331 { /* 13 */ 1, { 3, 5 } },
1332 { /* 14 */ 1, { 1, 8 } },
1333 { /* 15 */ 1, { 8, 1 } },
1334 { /* 16 */ 1, { 4, 4 } },
1335 { /* 17 */ 1, { 5, 3 } },
1336 { /* 18 */ 1, { 6, 2 } },
1337 { /* 19 */ 1, { 7, 1 } },
1338 { /* 20 */ 1, { 0, 6 } },
1339 { /* 21 */ 1, { 8, 2 } },
1340 { /* 22 */ 1, { 2, 8 } },
1341 { /* 23 */ 1, { 3, 6 } },
1342 { /* 24 */ 1, { 2, 7 } },
1343 { /* 25 */ 1, { 4, 5 } },
1344 { /* 26 */ 1, { 9, 1 } },
1345 { /* 27 */ 1, { 1, 9 } },
1346 { /* 28 */ 1, { 7, 2 } },
1347 { /* 29 */ 0, { 30, 31 } },
1348 { /* 30 */ 0, { 31, 32 } },
1349 { /* 31 */ 0, { 32, 33 } },
1350 { /* 32 */ 0, { 33, 34 } },
1351 { /* 33 */ 0, { 34, 35 } },
1352 { /* 34 */ 0, { 35, 36 } },
1353 { /* 35 */ 0, { 36, 37 } },
1354 { /* 36 */ 0, { 37, 38 } },
1355 { /* 37 */ 0, { 38, 39 } },
1356 { /* 38 */ 0, { 39, 40 } },
1357 { /* 39 */ 0, { 40, 41 } },
1358 { /* 40 */ 0, { 41, 42 } },
1359 { /* 41 */ 0, { 42, 43 } },
1360 { /* 42 */ 0, { 43, 44 } },
1361 { /* 43 */ 0, { 44, 45 } },
1362 { /* 44 */ 0, { 45, 46 } },
1363 { /* 45 */ 0, { 46, 47 } },
1364 { /* 46 */ 0, { 47, 48 } },
1365 { /* 47 */ 0, { 48, 49 } },
1366 { /* 48 */ 0, { 49, 50 } },
1367 { /* 49 */ 0, { 50, 51 } },
1368 { /* 50 */ 0, { 51, 52 } },
1369 { /* 51 */ 0, { 52, 53 } },
1370 { /* 52 */ 0, { 53, 54 } },
1371 { /* 53 */ 0, { 54, 55 } },
1372 { /* 54 */ 0, { 55, 56 } },
1373 { /* 55 */ 0, { 56, 57 } },
1374 { /* 56 */ 0, { 57, 58 } },
1375 { /* 57 */ 0, { 58, 59 } },
1376 { /* 58 */ 0, { 59, 60 } },
1377 { /* 59 */ 1, { 6, 0 } },
1378 { /* 60 */ 1, { 5, 4 } },
1379 { /* 61 */ 1, { 6, 3 } },
1380 { /* 62 */ 1, { 8, 3 } },
1381 { /* 63 */ 1, { 0, 7 } },
1382 { /* 64 */ 1, { 9, 2 } },
1383 { /* 65 */ 1, { 3, 8 } },
1384 { /* 66 */ 1, { 4, 6 } },
1385 { /* 67 */ 1, { 3, 7 } },
1386 { /* 68 */ 1, { 0, 8 } },
1387 { /* 69 */ 1, { 10, 1 } },
1388 { /* 70 */ 1, { 6, 4 } },
1389 { /* 71 */ 1, { 2, 9 } },
1390 { /* 72 */ 1, { 5, 5 } },
1391 { /* 73 */ 1, { 8, 0 } },
1392 { /* 74 */ 1, { 7, 0 } },
1393 { /* 75 */ 1, { 7, 3 } },
1394 { /* 76 */ 1, { 10, 2 } },
1395 { /* 77 */ 1, { 9, 3 } },
1396 { /* 78 */ 1, { 8, 4 } },
1397 { /* 79 */ 1, { 1, 10 } },
1398 { /* 80 */ 1, { 7, 4 } },
1399 { /* 81 */ 1, { 6, 5 } },
1400 { /* 82 */ 1, { 5, 6 } },
1401 { /* 83 */ 1, { 4, 8 } },
1402 { /* 84 */ 1, { 4, 7 } },
1403 { /* 85 */ 1, { 3, 9 } },
1404 { /* 86 */ 1, { 11, 1 } },
1405 { /* 87 */ 1, { 5, 8 } },
1406 { /* 88 */ 1, { 9, 0 } },
1407 { /* 89 */ 1, { 8, 5 } },
1408 { /* 90 */ 0, { 29, 30 } },
1409 { /* 91 */ 0, { 30, 31 } },
1410 { /* 92 */ 0, { 31, 32 } },
1411 { /* 93 */ 0, { 32, 33 } },
1412 { /* 94 */ 0, { 33, 34 } },
1413 { /* 95 */ 0, { 34, 35 } },
1414 { /* 96 */ 0, { 35, 36 } },
1415 { /* 97 */ 0, { 36, 37 } },
1416 { /* 98 */ 0, { 37, 38 } },
1417 { /* 99 */ 0, { 38, 39 } },
1418 { /* 00 */ 0, { 39, 40 } },
1419 { /* 01 */ 0, { 40, 41 } },
1420 { /* 02 */ 0, { 41, 42 } },
1421 { /* 03 */ 0, { 42, 43 } },
1422 { /* 04 */ 0, { 43, 44 } },
1423 { /* 05 */ 0, { 44, 45 } },
1424 { /* 06 */ 0, { 45, 46 } },
1425 { /* 07 */ 0, { 46, 47 } },
1426 { /* 08 */ 0, { 47, 48 } },
1427 { /* 09 */ 0, { 48, 49 } },
1428 { /* 10 */ 0, { 49, 50 } },
1429 { /* 11 */ 0, { 50, 51 } },
1430 { /* 12 */ 0, { 51, 52 } },
1431 { /* 13 */ 0, { 52, 53 } },
1432 { /* 14 */ 0, { 53, 54 } },
1433 { /* 15 */ 0, { 54, 55 } },
1434 { /* 16 */ 0, { 55, 56 } },
1435 { /* 17 */ 0, { 56, 57 } },
1436 { /* 18 */ 0, { 57, 58 } },
1437 { /* 19 */ 1, { 10, 3 } },
1438 { /* 20 */ 1, { 2, 10 } },
1439 { /* 21 */ 1, { 0, 9 } },
1440 { /* 22 */ 1, { 11, 2 } },
1441 { /* 23 */ 1, { 9, 4 } },
1442 { /* 24 */ 1, { 6, 6 } },
1443 { /* 25 */ 1, { 12, 1 } },
1444 { /* 26 */ 1, { 4, 9 } },
1445 { /* 27 */ 1, { 8, 6 } },
1446 { /* 28 */ 1, { 1, 11 } },
1447 { /* 29 */ 1, { 9, 5 } },
1448 { /* 30 */ 1, { 10, 4 } },
1449 { /* 31 */ 1, { 5, 7 } },
1450 { /* 32 */ 1, { 7, 5 } },
1451 { /* 33 */ 1, { 2, 11 } },
1452 { /* 34 */ 1, { 1, 12 } },
1453 { /* 35 */ 1, { 12, 2 } },
1454 { /* 36 */ 1, { 11, 3 } },
1455 { /* 37 */ 1, { 3, 10 } },
1456 { /* 38 */ 1, { 5, 9 } },
1457 { /* 39 */ 1, { 6, 7 } },
1458 { /* 40 */ 1, { 8, 7 } },
1459 { /* 41 */ 1, { 11, 4 } },
1460 { /* 42 */ 1, { 0, 10 } },
1461 { /* 43 */ 1, { 7, 6 } },
1462 { /* 44 */ 1, { 12, 3 } },
1463 { /* 45 */ 1, { 10, 0 } },
1464 { /* 46 */ 1, { 10, 5 } },
1465 { /* 47 */ 1, { 4, 10 } },
1466 { /* 48 */ 1, { 6, 8 } },
1467 { /* 49 */ 1, { 2, 12 } },
1468 { /* 50 */ 1, { 9, 6 } },
1469 { /* 51 */ 1, { 9, 7 } },
1470 { /* 52 */ 1, { 4, 11 } },
1471 { /* 53 */ 1, { 11, 0 } },
1472 { /* 54 */ 1, { 6, 9 } },
1473 { /* 55 */ 1, { 3, 11 } },
1474 { /* 56 */ 1, { 5, 10 } },
1475 { /* 57 */ 0, { 20, 21 } },
1476 { /* 58 */ 0, { 21, 22 } },
1477 { /* 59 */ 0, { 22, 23 } },
1478 { /* 60 */ 0, { 23, 24 } },
1479 { /* 61 */ 0, { 24, 25 } },
1480 { /* 62 */ 0, { 25, 26 } },
1481 { /* 63 */ 0, { 26, 27 } },
1482 { /* 64 */ 0, { 27, 28 } },
1483 { /* 65 */ 0, { 28, 29 } },
1484 { /* 66 */ 0, { 29, 30 } },
1485 { /* 67 */ 0, { 30, 31 } },
1486 { /* 68 */ 0, { 31, 32 } },
1487 { /* 69 */ 0, { 32, 33 } },
1488 { /* 70 */ 0, { 33, 34 } },
1489 { /* 71 */ 0, { 34, 35 } },
1490 { /* 72 */ 0, { 35, 36 } },
1491 { /* 73 */ 0, { 36, 37 } },
1492 { /* 74 */ 0, { 37, 38 } },
1493 { /* 75 */ 0, { 38, 39 } },
1494 { /* 76 */ 0, { 39, 40 } },
1495 { /* 77 */ 1, { 8, 8 } },
1496 { /* 78 */ 1, { 7, 8 } },
1497 { /* 79 */ 1, { 12, 5 } },
1498 { /* 80 */ 1, { 3, 12 } },
1499 { /* 81 */ 1, { 11, 5 } },
1500 { /* 82 */ 1, { 7, 7 } },
1501 { /* 83 */ 1, { 12, 4 } },
1502 { /* 84 */ 1, { 11, 6 } },
1503 { /* 85 */ 1, { 10, 6 } },
1504 { /* 86 */ 1, { 4, 12 } },
1505 { /* 87 */ 1, { 7, 9 } },
1506 { /* 88 */ 1, { 5, 11 } },
1507 { /* 89 */ 1, { 0, 11 } },
1508 { /* 90 */ 1, { 12, 6 } },
1509 { /* 91 */ 1, { 6, 10 } },
1510 { /* 92 */ 1, { 12, 0 } },
1511 { /* 93 */ 1, { 10, 7 } },
1512 { /* 94 */ 1, { 5, 12 } },
1513 { /* 95 */ 1, { 7, 10 } },
1514 { /* 96 */ 1, { 9, 8 } },
1515 { /* 97 */ 1, { 0, 12 } },
1516 { /* 98 */ 1, { 11, 7 } },
1517 { /* 99 */ 1, { 8, 9 } },
1518 { /* 00 */ 1, { 9, 9 } },
1519 { /* 01 */ 1, { 10, 8 } },
1520 { /* 02 */ 1, { 7, 11 } },
1521 { /* 03 */ 1, { 12, 7 } },
1522 { /* 04 */ 1, { 6, 11 } },
1523 { /* 05 */ 1, { 8, 11 } },
1524 { /* 06 */ 1, { 11, 8 } },
1525 { /* 07 */ 1, { 7, 12 } },
1526 { /* 08 */ 1, { 6, 12 } },
1527 { /* 09 */ 0, { 8, 9 } },
1528 { /* 10 */ 0, { 9, 10 } },
1529 { /* 11 */ 0, { 10, 11 } },
1530 { /* 12 */ 0, { 11, 12 } },
1531 { /* 13 */ 0, { 12, 13 } },
1532 { /* 14 */ 0, { 13, 14 } },
1533 { /* 15 */ 0, { 14, 15 } },
1534 { /* 16 */ 0, { 15, 16 } },
1535 { /* 17 */ 1, { 8, 10 } },
1536 { /* 18 */ 1, { 10, 9 } },
1537 { /* 19 */ 1, { 8, 12 } },
1538 { /* 20 */ 1, { 9, 10 } },
1539 { /* 21 */ 1, { 9, 11 } },
1540 { /* 22 */ 1, { 9, 12 } },
1541 { /* 23 */ 1, { 10, 11 } },
1542 { /* 24 */ 1, { 12, 9 } },
1543 { /* 25 */ 1, { 10, 10 } },
1544 { /* 26 */ 1, { 11, 9 } },
1545 { /* 27 */ 1, { 12, 8 } },
1546 { /* 28 */ 1, { 11, 10 } },
1547 { /* 29 */ 1, { 12, 10 } },
1548 { /* 30 */ 1, { 12, 11 } },
1549 { /* 31 */ 0, { 2, 3 } },
1550 { /* 32 */ 0, { 3, 4 } },
1551 { /* 33 */ 1, { 10, 12 } },
1552 { /* 34 */ 1, { 11, 11 } },
1553 { /* 35 */ 1, { 11, 12 } },
1554 { /* 36 */ 1, { 12, 12 } }
1555};
1556
1557const AacHcb aacHcb10Step1[] = {
1558 // 4 bit codewords
1559 { /* 000000 */ 0, 0 },
1560 { /* */ 0, 0 },
1561 { /* */ 0, 0 },
1562 { /* */ 0, 0 },
1563 { /* 000100 */ 1, 0 },
1564 { /* */ 1, 0 },
1565 { /* */ 1, 0 },
1566 { /* */ 1, 0 },
1567 { /* 001000 */ 2, 0 },
1568 { /* */ 2, 0 },
1569 { /* */ 2, 0 },
1570 { /* */ 2, 0 },
1571 // 5 bit codewords
1572 { /* 001100 */ 3, 0 },
1573 { /* */ 3, 0 },
1574 { /* 001110 */ 4, 0 },
1575 { /* */ 4, 0 },
1576 { /* 010000 */ 5, 0 },
1577 { /* */ 5, 0 },
1578 { /* 010010 */ 6, 0 },
1579 { /* */ 6, 0 },
1580 { /* 010100 */ 7, 0 },
1581 { /* */ 7, 0 },
1582 { /* 010110 */ 8, 0 },
1583 { /* */ 8, 0 },
1584 { /* 011000 */ 9, 0 },
1585 { /* */ 9, 0 },
1586 { /* 011010 */ 10, 0 },
1587 { /* */ 10, 0 },
1588 // 6 bit codewords
1589 { /* 011100 */ 11, 0 },
1590 { /* 011101 */ 12, 0 },
1591 { /* 011110 */ 13, 0 },
1592 { /* 011111 */ 14, 0 },
1593 { /* 100000 */ 15, 0 },
1594 { /* 100001 */ 16, 0 },
1595 { /* 100010 */ 17, 0 },
1596 { /* 100011 */ 18, 0 },
1597 { /* 100100 */ 19, 0 },
1598 { /* 100101 */ 20, 0 },
1599 { /* 100110 */ 21, 0 },
1600 { /* 100111 */ 22, 0 },
1601 { /* 101000 */ 23, 0 },
1602 { /* 101001 */ 24, 0 },
1603 // 7 bit codewords
1604 { /* 101010 */ 25, 1 },
1605 { /* 101011 */ 27, 1 },
1606 { /* 101100 */ 29, 1 },
1607 { /* 101101 */ 31, 1 },
1608 { /* 101110 */ 33, 1 },
1609 { /* 101111 */ 35, 1 },
1610 { /* 110000 */ 37, 1 },
1611 { /* 110001 */ 39, 1 },
1612 // 7/8 bit codewords
1613 { /* 110010 */ 41, 2 },
1614 // 8 bit codewords
1615 { /* 110011 */ 45, 2 },
1616 { /* 110100 */ 49, 2 },
1617 { /* 110101 */ 53, 2 },
1618 { /* 110110 */ 57, 2 },
1619 { /* 110111 */ 61, 2 },
1620 // 8/9 bit codewords
1621 { /* 111000 */ 65, 3 },
1622 // 9 bit codewords
1623 { /* 111001 */ 73, 3 },
1624 { /* 111010 */ 81, 3 },
1625 { /* 111011 */ 89, 3 },
1626 // 9/10 bit codewords
1627 { /* 111100 */ 97, 4 },
1628 // 10 bit codewords
1629 { /* 111101 */ 113, 4 },
1630 { /* 111110 */ 129, 4 },
1631 // 10/11/12 bit codewords
1632 { /* 111111 */ 145, 6 }
1633};
1634
1635const AacHcb2Pair aacHcb10Step2[] = {
1636 // 4 bit codewords
1637 { 4, 1, 1 },
1638 { 4, 1, 2 },
1639 { 4, 2, 1 },
1640
1641 // 5 bit codewords
1642 { 5, 2, 2 },
1643 { 5, 1, 0 },
1644 { 5, 0, 1 },
1645 { 5, 1, 3 },
1646 { 5, 3, 2 },
1647 { 5, 3, 1 },
1648 { 5, 2, 3 },
1649 { 5, 3, 3 },
1650
1651 // 6 bit codewords
1652 { 6, 2, 0 },
1653 { 6, 0, 2 },
1654 { 6, 2, 4 },
1655 { 6, 4, 2 },
1656 { 6, 1, 4 },
1657 { 6, 4, 1 },
1658 { 6, 0, 0 },
1659 { 6, 4, 3 },
1660 { 6, 3, 4 },
1661 { 6, 3, 0 },
1662 { 6, 0, 3 },
1663 { 6, 4, 4 },
1664 { 6, 2, 5 },
1665 { 6, 5, 2 },
1666
1667 // 7 bit codewords
1668 { 7, 1, 5 },
1669 { 7, 5, 1 },
1670 { 7, 5, 3 },
1671 { 7, 3, 5 },
1672 { 7, 5, 4 },
1673 { 7, 4, 5 },
1674 { 7, 6, 2 },
1675 { 7, 2, 6 },
1676 { 7, 6, 3 },
1677 { 7, 4, 0 },
1678 { 7, 6, 1 },
1679 { 7, 0, 4 },
1680 { 7, 1, 6 },
1681 { 7, 3, 6 },
1682 { 7, 5, 5 },
1683 { 7, 6, 4 },
1684
1685 // 7/8 bit codewords
1686 { 7, 4, 6 }, { 7, 4, 6 },
1687 { 8, 6, 5 },
1688 { 8, 7, 2 },
1689
1690 // 8 bit codewords
1691 { 8, 3, 7 },
1692 { 8, 2, 7 },
1693 { 8, 5, 6 },
1694 { 8, 8, 2 },
1695 { 8, 7, 3 },
1696 { 8, 5, 0 },
1697 { 8, 7, 1 },
1698 { 8, 0, 5 },
1699 { 8, 8, 1 },
1700 { 8, 1, 7 },
1701 { 8, 8, 3 },
1702 { 8, 7, 4 },
1703 { 8, 4, 7 },
1704 { 8, 2, 8 },
1705 { 8, 6, 6 },
1706 { 8, 7, 5 },
1707 { 8, 1, 8 },
1708 { 8, 3, 8 },
1709 { 8, 8, 4 },
1710 { 8, 4, 8 },
1711
1712 // 8/9 bit codewords
1713 { 8, 5, 7 }, { 8, 5, 7 },
1714 { 8, 8, 5 }, { 8, 8, 5 },
1715 { 8, 5, 8 }, { 8, 5, 8 },
1716 { 9, 7, 6 },
1717 { 9, 6, 7 },
1718
1719 // 9 bit codewords
1720 { 9, 9, 2 },
1721 { 9, 6, 0 },
1722 { 9, 6, 8 },
1723 { 9, 9, 3 },
1724 { 9, 3, 9 },
1725 { 9, 9, 1 },
1726 { 9, 2, 9 },
1727 { 9, 0, 6 },
1728 { 9, 8, 6 },
1729 { 9, 9, 4 },
1730 { 9, 4, 9 },
1731 { 9, 10, 2 },
1732 { 9, 1, 9 },
1733 { 9, 7, 7 },
1734 { 9, 8, 7 },
1735 { 9, 9, 5 },
1736 { 9, 7, 8 },
1737 { 9, 10, 3 },
1738 { 9, 5, 9 },
1739 { 9, 10, 4 },
1740 { 9, 2, 10 },
1741 { 9, 10, 1 },
1742 { 9, 3, 10 },
1743 { 9, 9, 6 },
1744
1745 // 9/10 bit codewords
1746 { 9, 6, 9 }, { 9, 6, 9 },
1747 { 9, 8, 0 }, { 9, 8, 0 },
1748 { 9, 4, 10 }, { 9, 4, 10 },
1749 { 9, 7, 0 }, { 9, 7, 0 },
1750 { 9, 11, 2 }, { 9, 11, 2 },
1751 { 10, 7, 9 },
1752 { 10, 11, 3 },
1753 { 10, 10, 6 },
1754 { 10, 1, 10 },
1755 { 10, 11, 1 },
1756 { 10, 9, 7 },
1757
1758 // 10 bit codewords
1759 { 10, 0, 7 },
1760 { 10, 8, 8 },
1761 { 10, 10, 5 },
1762 { 10, 3, 11 },
1763 { 10, 5, 10 },
1764 { 10, 8, 9 },
1765 { 10, 11, 5 },
1766 { 10, 0, 8 },
1767 { 10, 11, 4 },
1768 { 10, 2, 11 },
1769 { 10, 7, 10 },
1770 { 10, 6, 10 },
1771 { 10, 10, 7 },
1772 { 10, 4, 11 },
1773 { 10, 1, 11 },
1774 { 10, 12, 2 },
1775 { 10, 9, 8 },
1776 { 10, 12, 3 },
1777 { 10, 11, 6 },
1778 { 10, 5, 11 },
1779 { 10, 12, 4 },
1780 { 10, 11, 7 },
1781 { 10, 12, 5 },
1782 { 10, 3, 12 },
1783 { 10, 6, 11 },
1784 { 10, 9, 0 },
1785 { 10, 10, 8 },
1786 { 10, 10, 0 },
1787 { 10, 12, 1 },
1788 { 10, 0, 9 },
1789 { 10, 4, 12 },
1790 { 10, 9, 9 },
1791
1792 // 10/11/12 bit codewords
1793 { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 }, { 10, 12, 6 },
1794 { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 }, { 10, 2, 12 },
1795 { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 }, { 10, 8, 10 },
1796 { 11, 9, 10 }, { 11, 9, 10 },
1797 { 11, 1, 12 }, { 11, 1, 12 },
1798 { 11, 11, 8 }, { 11, 11, 8 },
1799 { 11, 12, 7 }, { 11, 12, 7 },
1800 { 11, 7, 11 }, { 11, 7, 11 },
1801 { 11, 5, 12 }, { 11, 5, 12 },
1802 { 11, 6, 12 }, { 11, 6, 12 },
1803 { 11, 10, 9 }, { 11, 10, 9 },
1804 { 11, 8, 11 }, { 11, 8, 11 },
1805 { 11, 12, 8 }, { 11, 12, 8 },
1806 { 11, 0, 10 }, { 11, 0, 10 },
1807 { 11, 7, 12 }, { 11, 7, 12 },
1808 { 11, 11, 0 }, { 11, 11, 0 },
1809 { 11, 10, 10 }, { 11, 10, 10 },
1810 { 11, 11, 9 }, { 11, 11, 9 },
1811 { 11, 11, 10 }, { 11, 11, 10 },
1812 { 11, 0, 11 }, { 11, 0, 11 },
1813 { 11, 11, 11 }, { 11, 11, 11 },
1814 { 11, 9, 11 }, { 11, 9, 11 },
1815 { 11, 10, 11 }, { 11, 10, 11 },
1816 { 11, 12, 0 }, { 11, 12, 0 },
1817 { 11, 8, 12 }, { 11, 8, 12 },
1818 { 12, 12, 9 },
1819 { 12, 10, 12 },
1820 { 12, 9, 12 },
1821 { 12, 11, 12 },
1822 { 12, 12, 11 },
1823 { 12, 0, 12 },
1824 { 12, 12, 10 },
1825 { 12, 12, 12 }
1826};
1827
1828const AacHcb aacHcb11Step1[] = {
1829 // 4 bits
1830 { /* 00000 */ 0, 0 },
1831 { /* */ 0, 0 },
1832 { /* 00010 */ 1, 0 },
1833 { /* */ 1, 0 },
1834
1835 // 5 bits
1836 { /* 00100 */ 2, 0 },
1837 { /* 00101 */ 3, 0 },
1838 { /* 00110 */ 4, 0 },
1839 { /* 00111 */ 5, 0 },
1840 { /* 01000 */ 6, 0 },
1841 { /* 01001 */ 7, 0 },
1842
1843 // 6 bits
1844 { /* 01010 */ 8, 1 },
1845 { /* 01011 */ 10, 1 },
1846 { /* 01100 */ 12, 1 },
1847
1848 // 6/7 bits
1849 { /* 01101 */ 14, 2 },
1850
1851 // 7 bits
1852 { /* 01110 */ 18, 2 },
1853 { /* 01111 */ 22, 2 },
1854 { /* 10000 */ 26, 2 },
1855
1856 // 7/8 bits
1857 { /* 10001 */ 30, 3 },
1858
1859 // 8 bits
1860 { /* 10010 */ 38, 3 },
1861 { /* 10011 */ 46, 3 },
1862 { /* 10100 */ 54, 3 },
1863 { /* 10101 */ 62, 3 },
1864 { /* 10110 */ 70, 3 },
1865 { /* 10111 */ 78, 3 },
1866
1867 // 8/9 bits
1868 { /* 11000 */ 86, 4 },
1869
1870 // 9 bits
1871 { /* 11001 */ 102, 4 },
1872 { /* 11010 */ 118, 4 },
1873 { /* 11011 */ 134, 4 },
1874
1875 // 9/10 bits
1876 { /* 11100 */ 150, 5 },
1877
1878 // 10 bits
1879 { /* 11101 */ 182, 5 },
1880 { /* 11110 */ 214, 5 },
1881
1882 // 10/11/12 bits
1883 { /* 11111 */ 246, 7 }
1884};
1885
1886const AacHcb2Pair aacHcb11Step2[] = {
1887 // 4
1888 { 4, 0, 0 },
1889 { 4, 1, 1 },
1890
1891 // 5
1892 { 5, 16, 16 },
1893 { 5, 1, 0 },
1894 { 5, 0, 1 },
1895 { 5, 2, 1 },
1896 { 5, 1, 2 },
1897 { 5, 2, 2 },
1898
1899 // 6
1900 { 6, 1, 3 },
1901 { 6, 3, 1 },
1902 { 6, 3, 2 },
1903 { 6, 2, 0 },
1904 { 6, 2, 3 },
1905 { 6, 0, 2 },
1906
1907 // 6/7
1908 { 6, 3, 3 }, { 6, 3, 3 },
1909 { 7, 4, 1 },
1910 { 7, 1, 4 },
1911
1912 // 7
1913 { 7, 4, 2 },
1914 { 7, 2, 4 },
1915 { 7, 4, 3 },
1916 { 7, 3, 4 },
1917 { 7, 3, 0 },
1918 { 7, 0, 3 },
1919 { 7, 5, 1 },
1920 { 7, 5, 2 },
1921 { 7, 2, 5 },
1922 { 7, 4, 4 },
1923 { 7, 1, 5 },
1924 { 7, 5, 3 },
1925
1926 // 7/8
1927 { 7, 3, 5 }, { 7, 3, 5 },
1928 { 7, 5, 4 }, { 7, 5, 4 },
1929 { 8, 4, 5 },
1930 { 8, 6, 2 },
1931 { 8, 2, 6 },
1932 { 8, 6, 1 },
1933
1934 // 8
1935 { 8, 6, 3 },
1936 { 8, 3, 6 },
1937 { 8, 1, 6 },
1938 { 8, 4, 16 },
1939 { 8, 3, 16 },
1940 { 8, 16, 5 },
1941 { 8, 16, 3 },
1942 { 8, 16, 4 },
1943 { 8, 6, 4 },
1944 { 8, 16, 6 },
1945 { 8, 4, 0 },
1946 { 8, 4, 6 },
1947 { 8, 0, 4 },
1948 { 8, 2, 16 },
1949 { 8, 5, 5 },
1950 { 8, 5, 16 },
1951 { 8, 16, 7 },
1952 { 8, 16, 2 },
1953 { 8, 16, 8 },
1954 { 8, 2, 7 },
1955 { 8, 7, 2 },
1956 { 8, 3, 7 },
1957 { 8, 6, 5 },
1958 { 8, 5, 6 },
1959 { 8, 6, 16 },
1960 { 8, 16, 10 },
1961 { 8, 7, 3 },
1962 { 8, 7, 1 },
1963 { 8, 16, 9 },
1964 { 8, 7, 16 },
1965 { 8, 1, 16 },
1966 { 8, 1, 7 },
1967 { 8, 4, 7 },
1968 { 8, 16, 11 },
1969 { 8, 7, 4 },
1970 { 8, 16, 12 },
1971 { 8, 8, 16 },
1972 { 8, 16, 1 },
1973 { 8, 6, 6 },
1974 { 8, 9, 16 },
1975 { 8, 2, 8 },
1976 { 8, 5, 7 },
1977 { 8, 10, 16 },
1978 { 8, 16, 13 },
1979 { 8, 8, 3 },
1980 { 8, 8, 2 },
1981 { 8, 3, 8 },
1982 { 8, 5, 0 },
1983
1984 // 8/9
1985 { 8, 16, 14 }, { 8, 16, 14 },
1986 { 8, 11, 16 }, { 8, 11, 16 },
1987 { 8, 7, 5 }, { 8, 7, 5 },
1988 { 8, 4, 8 }, { 8, 4, 8 },
1989 { 8, 6, 7 }, { 8, 6, 7 },
1990 { 8, 7, 6 }, { 8, 7, 6 },
1991 { 8, 0, 5 }, { 8, 0, 5 },
1992 { 9, 8, 4 },
1993 { 9, 16, 15 },
1994
1995 // 9
1996 { 9, 12, 16 },
1997 { 9, 1, 8 },
1998 { 9, 8, 1 },
1999 { 9, 14, 16 },
2000 { 9, 5, 8 },
2001 { 9, 13, 16 },
2002 { 9, 3, 9 },
2003 { 9, 8, 5 },
2004 { 9, 7, 7 },
2005 { 9, 2, 9 },
2006 { 9, 8, 6 },
2007 { 9, 9, 2 },
2008 { 9, 9, 3 },
2009 { 9, 15, 16 },
2010 { 9, 4, 9 },
2011 { 9, 6, 8 },
2012 { 9, 6, 0 },
2013 { 9, 9, 4 },
2014 { 9, 5, 9 },
2015 { 9, 8, 7 },
2016 { 9, 7, 8 },
2017 { 9, 1, 9 },
2018 { 9, 10, 3 },
2019 { 9, 0, 6 },
2020 { 9, 10, 2 },
2021 { 9, 9, 1 },
2022 { 9, 9, 5 },
2023 { 9, 4, 10 },
2024 { 9, 2, 10 },
2025 { 9, 9, 6 },
2026 { 9, 3, 10 },
2027 { 9, 6, 9 },
2028 { 9, 10, 4 },
2029 { 9, 8, 8 },
2030 { 9, 10, 5 },
2031 { 9, 9, 7 },
2032 { 9, 11, 3 },
2033 { 9, 1, 10 },
2034 { 9, 7, 0 },
2035 { 9, 10, 6 },
2036 { 9, 7, 9 },
2037 { 9, 3, 11 },
2038 { 9, 5, 10 },
2039 { 9, 10, 1 },
2040 { 9, 4, 11 },
2041 { 9, 11, 2 },
2042 { 9, 13, 2 },
2043 { 9, 6, 10 },
2044
2045 // 9/10
2046 { 9, 13, 3 }, { 9, 13, 3 },
2047 { 9, 2, 11 }, { 9, 2, 11 },
2048 { 9, 16, 0 }, { 9, 16, 0 },
2049 { 9, 5, 11 }, { 9, 5, 11 },
2050 { 9, 11, 5 }, { 9, 11, 5 },
2051 { 10, 11, 4 },
2052 { 10, 9, 8 },
2053 { 10, 7, 10 },
2054 { 10, 8, 9 },
2055 { 10, 0, 16 },
2056 { 10, 4, 13 },
2057 { 10, 0, 7 },
2058 { 10, 3, 13 },
2059 { 10, 11, 6 },
2060 { 10, 13, 1 },
2061 { 10, 13, 4 },
2062 { 10, 12, 3 },
2063 { 10, 2, 13 },
2064 { 10, 13, 5 },
2065 { 10, 8, 10 },
2066 { 10, 6, 11 },
2067 { 10, 10, 8 },
2068 { 10, 10, 7 },
2069 { 10, 14, 2 },
2070 { 10, 12, 4 },
2071 { 10, 1, 11 },
2072 { 10, 4, 12 },
2073
2074 // 10
2075 { 10, 11, 1 },
2076 { 10, 3, 12 },
2077 { 10, 1, 13 },
2078 { 10, 12, 2 },
2079 { 10, 7, 11 },
2080 { 10, 3, 14 },
2081 { 10, 5, 12 },
2082 { 10, 5, 13 },
2083 { 10, 14, 4 },
2084 { 10, 4, 14 },
2085 { 10, 11, 7 },
2086 { 10, 14, 3 },
2087 { 10, 12, 5 },
2088 { 10, 13, 6 },
2089 { 10, 12, 6 },
2090 { 10, 8, 0 },
2091 { 10, 11, 8 },
2092 { 10, 2, 12 },
2093 { 10, 9, 9 },
2094 { 10, 14, 5 },
2095 { 10, 6, 13 },
2096 { 10, 10, 10 },
2097 { 10, 15, 2 },
2098 { 10, 8, 11 },
2099 { 10, 9, 10 },
2100 { 10, 14, 6 },
2101 { 10, 10, 9 },
2102 { 10, 5, 14 },
2103 { 10, 11, 9 },
2104 { 10, 14, 1 },
2105 { 10, 2, 14 },
2106 { 10, 6, 12 },
2107 { 10, 1, 12 },
2108 { 10, 13, 8 },
2109 { 10, 0, 8 },
2110 { 10, 13, 7 },
2111 { 10, 7, 12 },
2112 { 10, 12, 7 },
2113 { 10, 7, 13 },
2114 { 10, 15, 3 },
2115 { 10, 12, 1 },
2116 { 10, 6, 14 },
2117 { 10, 2, 15 },
2118 { 10, 15, 5 },
2119 { 10, 15, 4 },
2120 { 10, 1, 14 },
2121 { 10, 9, 11 },
2122 { 10, 4, 15 },
2123 { 10, 14, 7 },
2124 { 10, 8, 13 },
2125 { 10, 13, 9 },
2126 { 10, 8, 12 },
2127 { 10, 5, 15 },
2128 { 10, 3, 15 },
2129 { 10, 10, 11 },
2130 { 10, 11, 10 },
2131 { 10, 12, 8 },
2132 { 10, 15, 6 },
2133 { 10, 15, 7 },
2134 { 10, 8, 14 },
2135 { 10, 15, 1 },
2136 { 10, 7, 14 },
2137 { 10, 9, 0 },
2138 { 10, 0, 9 },
2139
2140 // 10/11/12
2141 { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 },
2142 { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 },
2143 { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 },
2144 { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 },
2145 { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 },
2146 { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 },
2147 { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 },
2148 { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 },
2149 { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 },
2150
2151 { 11, 9, 14 }, { 11, 9, 14 },
2152 { 11, 15, 8 }, { 11, 15, 8 },
2153 { 11, 11, 11 }, { 11, 11, 11 },
2154 { 11, 11, 14 }, { 11, 11, 14 },
2155 { 11, 1, 15 }, { 11, 1, 15 },
2156 { 11, 10, 12 }, { 11, 10, 12 },
2157 { 11, 10, 14 }, { 11, 10, 14 },
2158 { 11, 13, 11 }, { 11, 13, 11 },
2159 { 11, 13, 10 }, { 11, 13, 10 },
2160 { 11, 11, 13 }, { 11, 11, 13 },
2161 { 11, 11, 12 }, { 11, 11, 12 },
2162 { 11, 8, 15 }, { 11, 8, 15 },
2163 { 11, 14, 11 }, { 11, 14, 11 },
2164 { 11, 13, 12 }, { 11, 13, 12 },
2165 { 11, 12, 13 }, { 11, 12, 13 },
2166 { 11, 15, 9 }, { 11, 15, 9 },
2167 { 11, 14, 10 }, { 11, 14, 10 },
2168 { 11, 10, 0 }, { 11, 10, 0 },
2169 { 11, 12, 11 }, { 11, 12, 11 },
2170 { 11, 9, 15 }, { 11, 9, 15 },
2171 { 11, 0, 10 }, { 11, 0, 10 },
2172 { 11, 12, 12 }, { 11, 12, 12 },
2173 { 11, 11, 0 }, { 11, 11, 0 },
2174 { 11, 12, 14 }, { 11, 12, 14 },
2175 { 11, 10, 15 }, { 11, 10, 15 },
2176 { 11, 13, 13 }, { 11, 13, 13 },
2177 { 11, 0, 13 }, { 11, 0, 13 },
2178 { 11, 14, 12 }, { 11, 14, 12 },
2179 { 11, 15, 10 }, { 11, 15, 10 },
2180 { 11, 15, 11 }, { 11, 15, 11 },
2181 { 11, 11, 15 }, { 11, 11, 15 },
2182 { 11, 14, 13 }, { 11, 14, 13 },
2183 { 11, 13, 0 }, { 11, 13, 0 },
2184 { 11, 0, 11 }, { 11, 0, 11 },
2185 { 11, 13, 14 }, { 11, 13, 14 },
2186 { 11, 15, 12 }, { 11, 15, 12 },
2187 { 11, 15, 13 }, { 11, 15, 13 },
2188 { 11, 12, 15 }, { 11, 12, 15 },
2189 { 11, 14, 0 }, { 11, 14, 0 },
2190 { 11, 14, 14 }, { 11, 14, 14 },
2191 { 11, 13, 15 }, { 11, 13, 15 },
2192 { 11, 12, 0 }, { 11, 12, 0 },
2193 { 11, 14, 15 }, { 11, 14, 15 },
2194 { 12, 0, 14 },
2195 { 12, 0, 12 },
2196 { 12, 15, 14 },
2197 { 12, 15, 0 },
2198 { 12, 0, 15 },
2199 { 12, 15, 15 }
2200};
2201
2202const std::uint8_t aacHcbSf[][2] = {
2203 { /* 0 */ 1, 2 },
2204 { /* 1 */ 60, 0 },
2205 { /* 2 */ 1, 2 },
2206 { /* 3 */ 2, 3 },
2207 { /* 4 */ 3, 4 },
2208 { /* 5 */ 59, 0 },
2209 { /* 6 */ 3, 4 },
2210 { /* 7 */ 4, 5 },
2211 { /* 8 */ 5, 6 },
2212 { /* 9 */ 61, 0 },
2213 { /* 10 */ 58, 0 },
2214 { /* 11 */ 62, 0 },
2215 { /* 12 */ 3, 4 },
2216 { /* 13 */ 4, 5 },
2217 { /* 14 */ 5, 6 },
2218 { /* 15 */ 57, 0 },
2219 { /* 16 */ 63, 0 },
2220 { /* 17 */ 4, 5 },
2221 { /* 18 */ 5, 6 },
2222 { /* 19 */ 6, 7 },
2223 { /* 20 */ 7, 8 },
2224 { /* 21 */ 56, 0 },
2225 { /* 22 */ 64, 0 },
2226 { /* 23 */ 55, 0 },
2227 { /* 24 */ 65, 0 },
2228 { /* 25 */ 4, 5 },
2229 { /* 26 */ 5, 6 },
2230 { /* 27 */ 6, 7 },
2231 { /* 28 */ 7, 8 },
2232 { /* 29 */ 66, 0 },
2233 { /* 30 */ 54, 0 },
2234 { /* 31 */ 67, 0 },
2235 { /* 32 */ 5, 6 },
2236 { /* 33 */ 6, 7 },
2237 { /* 34 */ 7, 8 },
2238 { /* 35 */ 8, 9 },
2239 { /* 36 */ 9, 10 },
2240 { /* 37 */ 53, 0 },
2241 { /* 38 */ 68, 0 },
2242 { /* 39 */ 52, 0 },
2243 { /* 40 */ 69, 0 },
2244 { /* 41 */ 51, 0 },
2245 { /* 42 */ 5, 6 },
2246 { /* 43 */ 6, 7 },
2247 { /* 44 */ 7, 8 },
2248 { /* 45 */ 8, 9 },
2249 { /* 46 */ 9, 10 },
2250 { /* 47 */ 70, 0 },
2251 { /* 48 */ 50, 0 },
2252 { /* 49 */ 49, 0 },
2253 { /* 50 */ 71, 0 },
2254 { /* 51 */ 6, 7 },
2255 { /* 52 */ 7, 8 },
2256 { /* 53 */ 8, 9 },
2257 { /* 54 */ 9, 10 },
2258 { /* 55 */ 10, 11 },
2259 { /* 56 */ 11, 12 },
2260 { /* 57 */ 72, 0 },
2261 { /* 58 */ 48, 0 },
2262 { /* 59 */ 73, 0 },
2263 { /* 60 */ 47, 0 },
2264 { /* 61 */ 74, 0 },
2265 { /* 62 */ 46, 0 },
2266 { /* 63 */ 6, 7 },
2267 { /* 64 */ 7, 8 },
2268 { /* 65 */ 8, 9 },
2269 { /* 66 */ 9, 10 },
2270 { /* 67 */ 10, 11 },
2271 { /* 68 */ 11, 12 },
2272 { /* 69 */ 76, 0 },
2273 { /* 70 */ 75, 0 },
2274 { /* 71 */ 77, 0 },
2275 { /* 72 */ 78, 0 },
2276 { /* 73 */ 45, 0 },
2277 { /* 74 */ 43, 0 },
2278 { /* 75 */ 6, 7 },
2279 { /* 76 */ 7, 8 },
2280 { /* 77 */ 8, 9 },
2281 { /* 78 */ 9, 10 },
2282 { /* 79 */ 10, 11 },
2283 { /* 80 */ 11, 12 },
2284 { /* 81 */ 44, 0 },
2285 { /* 82 */ 79, 0 },
2286 { /* 83 */ 42, 0 },
2287 { /* 84 */ 41, 0 },
2288 { /* 85 */ 80, 0 },
2289 { /* 86 */ 40, 0 },
2290 { /* 87 */ 6, 7 },
2291 { /* 88 */ 7, 8 },
2292 { /* 89 */ 8, 9 },
2293 { /* 90 */ 9, 10 },
2294 { /* 91 */ 10, 11 },
2295 { /* 92 */ 11, 12 },
2296 { /* 93 */ 81, 0 },
2297 { /* 94 */ 39, 0 },
2298 { /* 95 */ 82, 0 },
2299 { /* 96 */ 38, 0 },
2300 { /* 97 */ 83, 0 },
2301 { /* 98 */ 7, 8 },
2302 { /* 99 */ 8, 9 },
2303 { /* 00 */ 9, 10 },
2304 { /* 01 */ 10, 11 },
2305 { /* 02 */ 11, 12 },
2306 { /* 03 */ 12, 13 },
2307 { /* 04 */ 13, 14 },
2308 { /* 05 */ 37, 0 },
2309 { /* 06 */ 35, 0 },
2310 { /* 07 */ 85, 0 },
2311 { /* 08 */ 33, 0 },
2312 { /* 09 */ 36, 0 },
2313 { /* 10 */ 34, 0 },
2314 { /* 11 */ 84, 0 },
2315 { /* 12 */ 32, 0 },
2316 { /* 13 */ 6, 7 },
2317 { /* 14 */ 7, 8 },
2318 { /* 15 */ 8, 9 },
2319 { /* 16 */ 9, 10 },
2320 { /* 17 */ 10, 11 },
2321 { /* 18 */ 11, 12 },
2322 { /* 19 */ 87, 0 },
2323 { /* 20 */ 89, 0 },
2324 { /* 21 */ 30, 0 },
2325 { /* 22 */ 31, 0 },
2326 { /* 23 */ 8, 9 },
2327 { /* 24 */ 9, 10 },
2328 { /* 25 */ 10, 11 },
2329 { /* 26 */ 11, 12 },
2330 { /* 27 */ 12, 13 },
2331 { /* 28 */ 13, 14 },
2332 { /* 29 */ 14, 15 },
2333 { /* 30 */ 15, 16 },
2334 { /* 31 */ 86, 0 },
2335 { /* 32 */ 29, 0 },
2336 { /* 33 */ 26, 0 },
2337 { /* 34 */ 27, 0 },
2338 { /* 35 */ 28, 0 },
2339 { /* 36 */ 24, 0 },
2340 { /* 37 */ 88, 0 },
2341 { /* 38 */ 9, 10 },
2342 { /* 39 */ 10, 11 },
2343 { /* 40 */ 11, 12 },
2344 { /* 41 */ 12, 13 },
2345 { /* 42 */ 13, 14 },
2346 { /* 43 */ 14, 15 },
2347 { /* 44 */ 15, 16 },
2348 { /* 45 */ 16, 17 },
2349 { /* 46 */ 17, 18 },
2350 { /* 47 */ 25, 0 },
2351 { /* 48 */ 22, 0 },
2352 { /* 49 */ 23, 0 },
2353 { /* 50 */ 15, 16 },
2354 { /* 51 */ 16, 17 },
2355 { /* 52 */ 17, 18 },
2356 { /* 53 */ 18, 19 },
2357 { /* 54 */ 19, 20 },
2358 { /* 55 */ 20, 21 },
2359 { /* 56 */ 21, 22 },
2360 { /* 57 */ 22, 23 },
2361 { /* 58 */ 23, 24 },
2362 { /* 59 */ 24, 25 },
2363 { /* 60 */ 25, 26 },
2364 { /* 61 */ 26, 27 },
2365 { /* 62 */ 27, 28 },
2366 { /* 63 */ 28, 29 },
2367 { /* 64 */ 29, 30 },
2368 { /* 65 */ 90, 0 },
2369 { /* 66 */ 21, 0 },
2370 { /* 67 */ 19, 0 },
2371 { /* 68 */ 3, 0 },
2372 { /* 69 */ 1, 0 },
2373 { /* 70 */ 2, 0 },
2374 { /* 71 */ 0, 0 },
2375 { /* 72 */ 23, 24 },
2376 { /* 73 */ 24, 25 },
2377 { /* 74 */ 25, 26 },
2378 { /* 75 */ 26, 27 },
2379 { /* 76 */ 27, 28 },
2380 { /* 77 */ 28, 29 },
2381 { /* 78 */ 29, 30 },
2382 { /* 79 */ 30, 31 },
2383 { /* 80 */ 31, 32 },
2384 { /* 81 */ 32, 33 },
2385 { /* 82 */ 33, 34 },
2386 { /* 83 */ 34, 35 },
2387 { /* 84 */ 35, 36 },
2388 { /* 85 */ 36, 37 },
2389 { /* 86 */ 37, 38 },
2390 { /* 87 */ 38, 39 },
2391 { /* 88 */ 39, 40 },
2392 { /* 89 */ 40, 41 },
2393 { /* 90 */ 41, 42 },
2394 { /* 91 */ 42, 43 },
2395 { /* 92 */ 43, 44 },
2396 { /* 93 */ 44, 45 },
2397 { /* 94 */ 45, 46 },
2398 { /* 95 */ 98, 0 },
2399 { /* 96 */ 99, 0 },
2400 { /* 97 */ 100, 0 },
2401 { /* 98 */ 101, 0 },
2402 { /* 99 */ 102, 0 },
2403 { /* 00 */ 117, 0 },
2404 { /* 01 */ 97, 0 },
2405 { /* 02 */ 91, 0 },
2406 { /* 03 */ 92, 0 },
2407 { /* 04 */ 93, 0 },
2408 { /* 05 */ 94, 0 },
2409 { /* 06 */ 95, 0 },
2410 { /* 07 */ 96, 0 },
2411 { /* 08 */ 104, 0 },
2412 { /* 09 */ 111, 0 },
2413 { /* 10 */ 112, 0 },
2414 { /* 11 */ 113, 0 },
2415 { /* 12 */ 114, 0 },
2416 { /* 13 */ 115, 0 },
2417 { /* 14 */ 116, 0 },
2418 { /* 15 */ 110, 0 },
2419 { /* 16 */ 105, 0 },
2420 { /* 17 */ 106, 0 },
2421 { /* 18 */ 107, 0 },
2422 { /* 19 */ 108, 0 },
2423 { /* 20 */ 109, 0 },
2424 { /* 21 */ 118, 0 },
2425 { /* 22 */ 6, 0 },
2426 { /* 23 */ 8, 0 },
2427 { /* 24 */ 9, 0 },
2428 { /* 25 */ 10, 0 },
2429 { /* 26 */ 5, 0 },
2430 { /* 27 */ 103, 0 },
2431 { /* 28 */ 120, 0 },
2432 { /* 29 */ 119, 0 },
2433 { /* 30 */ 4, 0 },
2434 { /* 31 */ 7, 0 },
2435 { /* 32 */ 15, 0 },
2436 { /* 33 */ 16, 0 },
2437 { /* 34 */ 18, 0 },
2438 { /* 35 */ 20, 0 },
2439 { /* 36 */ 17, 0 },
2440 { /* 37 */ 11, 0 },
2441 { /* 38 */ 12, 0 },
2442 { /* 39 */ 14, 0 },
2443 { /* 40 */ 13, 0 }
2444};
2445
2446const std::int8_t tHuffmanEnv15dB[120][2] = {
2447 { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 },
2448 { 5, 6 }, { -62, -67 }, { 7, 8 }, { -61, -68 },
2449 { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 },
2450 { 13, 14 }, { -58, -71 }, { 15, 16 }, { -57, -72 },
2451 { 17, 18 }, { -73, -56 }, { 19, 21 }, { -74, 20 },
2452 { -55, -75 }, { 22, 26 }, { 23, 24 }, { -54, -76 },
2453 { -77, 25 }, { -53, -78 }, { 27, 34 }, { 28, 29 },
2454 { -52, -79 }, { 30, 31 }, { -80, -51 }, { 32, 33 },
2455 { -83, -82 }, { -81, -50 }, { 35, 57 }, { 36, 40 },
2456 { 37, 38 }, { -88, -84 }, { -48, 39 }, { -90, -85 },
2457 { 41, 46 }, { 42, 43 }, { -49, -87 }, { 44, 45 },
2458 { -89, -86 }, {-124,-123 }, { 47, 50 }, { 48, 49 },
2459 {-122,-121 }, {-120,-119 }, { 51, 54 }, { 52, 53 },
2460 {-118,-117 }, {-116,-115 }, { 55, 56 }, {-114,-113 },
2461 {-112,-111 }, { 58, 89 }, { 59, 74 }, { 60, 67 },
2462 { 61, 64 }, { 62, 63 }, {-110,-109 }, {-108,-107 },
2463 { 65, 66 }, {-106,-105 }, {-104,-103 }, { 68, 71 },
2464 { 69, 70 }, {-102,-101 }, {-100, -99 }, { 72, 73 },
2465 { -98, -97 }, { -96, -95 }, { 75, 82 }, { 76, 79 },
2466 { 77, 78 }, { -94, -93 }, { -92, -91 }, { 80, 81 },
2467 { -47, -46 }, { -45, -44 }, { 83, 86 }, { 84, 85 },
2468 { -43, -42 }, { -41, -40 }, { 87, 88 }, { -39, -38 },
2469 { -37, -36 }, { 90, 105 }, { 91, 98 }, { 92, 95 },
2470 { 93, 94 }, { -35, -34 }, { -33, -32 }, { 96, 97 },
2471 { -31, -30 }, { -29, -28 }, { 99, 102 }, { 100, 101 },
2472 { -27, -26 }, { -25, -24 }, { 103, 104 }, { -23, -22 },
2473 { -21, -20 }, { 106, 113 }, { 107, 110 }, { 108, 109 },
2474 { -19, -18 }, { -17, -16 }, { 111, 112 }, { -15, -14 },
2475 { -13, -12 }, { 114, 117 }, { 115, 116 }, { -11, -10 },
2476 { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 }
2477};
2478
2479const std::int8_t fHuffmanEnv15dB[120][2] = {
2480 { 1, 2 }, { -64, -65 }, { 3, 4 }, { -63, -66 },
2481 { 5, 6 }, { -67, -62 }, { 7, 8 }, { -68, -61 },
2482 { 9, 10 }, { -69, -60 }, { 11, 13 }, { -70, 12 },
2483 { -59, -71 }, { 14, 16 }, { -58, 15 }, { -72, -57 },
2484 { 17, 19 }, { -73, 18 }, { -56, -74 }, { 20, 23 },
2485 { 21, 22 }, { -55, -75 }, { -54, -53 }, { 24, 27 },
2486 { 25, 26 }, { -76, -52 }, { -77, -51 }, { 28, 31 },
2487 { 29, 30 }, { -50, -78 }, { -79, -49 }, { 32, 36 },
2488 { 33, 34 }, { -48, -47 }, { -80, 35 }, { -81, -82 },
2489 { 37, 47 }, { 38, 41 }, { 39, 40 }, { -83, -46 },
2490 { -45, -84 }, { 42, 44 }, { -85, 43 }, { -44, -43 },
2491 { 45, 46 }, { -88, -87 }, { -86, -90 }, { 48, 66 },
2492 { 49, 56 }, { 50, 53 }, { 51, 52 }, { -92, -42 },
2493 { -41, -39 }, { 54, 55 }, {-105, -89 }, { -38, -37 },
2494 { 57, 60 }, { 58, 59 }, { -94, -91 }, { -40, -36 },
2495 { 61, 63 }, { -20, 62 }, {-115,-110 }, { 64, 65 },
2496 {-108,-107 }, {-101, -97 }, { 67, 89 }, { 68, 75 },
2497 { 69, 72 }, { 70, 71 }, { -95, -93 }, { -34, -27 },
2498 { 73, 74 }, { -22, -17 }, { -16,-124 }, { 76, 82 },
2499 { 77, 79 }, {-123, 78 }, {-122,-121 }, { 80, 81 },
2500 {-120,-119 }, {-118,-117 }, { 83, 86 }, { 84, 85 },
2501 {-116,-114 }, {-113,-112 }, { 87, 88 }, {-111,-109 },
2502 {-106,-104 }, { 90, 105 }, { 91, 98 }, { 92, 95 },
2503 { 93, 94 }, {-103,-102 }, {-100, -99 }, { 96, 97 },
2504 { -98, -96 }, { -35, -33 }, { 99, 102 }, { 100, 101 },
2505 { -32, -31 }, { -30, -29 }, { 103, 104 }, { -28, -26 },
2506 { -25, -24 }, { 106, 113 }, { 107, 110 }, { 108, 109 },
2507 { -23, -21 }, { -19, -18 }, { 111, 112 }, { -15, -14 },
2508 { -13, -12 }, { 114, 117 }, { 115, 116 }, { -11, -10 },
2509 { -9, -8 }, { 118, 119 }, { -7, -6 }, { -5, -4 }
2510};
2511
2512const std::int8_t tHuffmanEnvBal15dB[48][2] = {
2513 { -64, 1 }, { -63, 2 }, { -65, 3 }, { -62, 4 },
2514 { -66, 5 }, { -61, 6 }, { -67, 7 }, { -60, 8 },
2515 { -68, 9 }, { 10, 11 }, { -69, -59 }, { 12, 13 },
2516 { -70, -58 }, { 14, 28 }, { 15, 21 }, { 16, 18 },
2517 { -57, 17 }, { -71, -56 }, { 19, 20 }, { -88, -87 },
2518 { -86, -85 }, { 22, 25 }, { 23, 24 }, { -84, -83 },
2519 { -82, -81 }, { 26, 27 }, { -80, -79 }, { -78, -77 },
2520 { 29, 36 }, { 30, 33 }, { 31, 32 }, { -76, -75 },
2521 { -74, -73 }, { 34, 35 }, { -72, -55 }, { -54, -53 },
2522 { 37, 41 }, { 38, 39 }, { -52, -51 }, { -50, 40 },
2523 { -49, -48 }, { 42, 45 }, { 43, 44 }, { -47, -46 },
2524 { -45, -44 }, { 46, 47 }, { -43, -42 }, { -41, -40 }
2525};
2526
2527const std::int8_t fHuffmanEnvBal15dB[48][2] = {
2528 { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 },
2529 { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 },
2530 { -60, 9 }, { 10, 11 }, { -69, -59 }, { -70, 12 },
2531 { -58, 13 }, { 14, 17 }, { -71, 15 }, { -57, 16 },
2532 { -56, -73 }, { 18, 32 }, { 19, 25 }, { 20, 22 },
2533 { -72, 21 }, { -88, -87 }, { 23, 24 }, { -86, -85 },
2534 { -84, -83 }, { 26, 29 }, { 27, 28 }, { -82, -81 },
2535 { -80, -79 }, { 30, 31 }, { -78, -77 }, { -76, -75 },
2536 { 33, 40 }, { 34, 37 }, { 35, 36 }, { -74, -55 },
2537 { -54, -53 }, { 38, 39 }, { -52, -51 }, { -50, -49 },
2538 { 41, 44 }, { 42, 43 }, { -48, -47 }, { -46, -45 },
2539 { 45, 46 }, { -44, -43 }, { -42, 47 }, { -41, -40 }
2540};
2541
2542const std::int8_t tHuffmanEnv30dB[62][2] = {
2543 { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 },
2544 { -62, 5 }, { -67, 6 }, { -61, 7 }, { -68, 8 },
2545 { -60, 9 }, { 10, 11 }, { -69, -59 }, { 12, 14 },
2546 { -70, 13 }, { -71, -58 }, { 15, 18 }, { 16, 17 },
2547 { -72, -57 }, { -73, -74 }, { 19, 22 }, { -56, 20 },
2548 { -55, 21 }, { -54, -77 }, { 23, 31 }, { 24, 25 },
2549 { -75, -76 }, { 26, 27 }, { -78, -53 }, { 28, 29 },
2550 { -52, -95 }, { -94, 30 }, { -93, -92 }, { 32, 47 },
2551 { 33, 40 }, { 34, 37 }, { 35, 36 }, { -91, -90 },
2552 { -89, -88 }, { 38, 39 }, { -87, -86 }, { -85, -84 },
2553 { 41, 44 }, { 42, 43 }, { -83, -82 }, { -81, -80 },
2554 { 45, 46 }, { -79, -51 }, { -50, -49 }, { 48, 55 },
2555 { 49, 52 }, { 50, 51 }, { -48, -47 }, { -46, -45 },
2556 { 53, 54 }, { -44, -43 }, { -42, -41 }, { 56, 59 },
2557 { 57, 58 }, { -40, -39 }, { -38, -37 }, { 60, 61 },
2558 { -36, -35 }, { -34, -33 }
2559};
2560
2561const std::int8_t fHuffmanEnv30dB[62][2] = {
2562 { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 },
2563 { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 },
2564 { 9, 10 }, { -60, -69 }, { 11, 12 }, { -59, -70 },
2565 { 13, 14 }, { -58, -71 }, { 15, 16 }, { -57, -72 },
2566 { 17, 19 }, { -56, 18 }, { -55, -73 }, { 20, 24 },
2567 { 21, 22 }, { -74, -54 }, { -53, 23 }, { -75, -76 },
2568 { 25, 30 }, { 26, 27 }, { -52, -51 }, { 28, 29 },
2569 { -77, -79 }, { -50, -49 }, { 31, 39 }, { 32, 35 },
2570 { 33, 34 }, { -78, -46 }, { -82, -88 }, { 36, 37 },
2571 { -83, -48 }, { -47, 38 }, { -86, -85 }, { 40, 47 },
2572 { 41, 44 }, { 42, 43 }, { -80, -44 }, { -43, -42 },
2573 { 45, 46 }, { -39, -87 }, { -84, -40 }, { 48, 55 },
2574 { 49, 52 }, { 50, 51 }, { -95, -94 }, { -93, -92 },
2575 { 53, 54 }, { -91, -90 }, { -89, -81 }, { 56, 59 },
2576 { 57, 58 }, { -45, -41 }, { -38, -37 }, { 60, 61 },
2577 { -36, -35 }, { -34, -33 }
2578};
2579
2580const std::int8_t tHuffmanEnvBal30dB[24][2] = {
2581 { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 },
2582 { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 },
2583 { -60, 9 }, { 10, 16 }, { 11, 13 }, { -69, 12 },
2584 { -76, -75 }, { 14, 15 }, { -74, -73 }, { -72, -71 },
2585 { 17, 20 }, { 18, 19 }, { -70, -59 }, { -58, -57 },
2586 { 21, 22 }, { -56, -55 }, { -54, 23 }, { -53, -52 }
2587};
2588
2589const std::int8_t fHuffmanEnvBal30dB[24][2] = {
2590 { -64, 1 }, { -65, 2 }, { -63, 3 }, { -66, 4 },
2591 { -62, 5 }, { -61, 6 }, { -67, 7 }, { -68, 8 },
2592 { -60, 9 }, { 10, 13 }, { -69, 11 }, { -59, 12 },
2593 { -58, -76 }, { 14, 17 }, { 15, 16 }, { -75, -74 },
2594 { -73, -72 }, { 18, 21 }, { 19, 20 }, { -71, -70 },
2595 { -57, -56 }, { 22, 23 }, { -55, -54 }, { -53, -52 }
2596};
2597
2598const std::int8_t tHuffmanNoise30dB[62][2] = {
2599 { -64, 1 }, { -63, 2 }, { -65, 3 }, { -66, 4 },
2600 { -62, 5 }, { -67, 6 }, { 7, 8 }, { -61, -68 },
2601 { 9, 30 }, { 10, 15 }, { -60, 11 }, { -69, 12 },
2602 { 13, 14 }, { -59, -53 }, { -95, -94 }, { 16, 23 },
2603 { 17, 20 }, { 18, 19 }, { -93, -92 }, { -91, -90 },
2604 { 21, 22 }, { -89, -88 }, { -87, -86 }, { 24, 27 },
2605 { 25, 26 }, { -85, -84 }, { -83, -82 }, { 28, 29 },
2606 { -81, -80 }, { -79, -78 }, { 31, 46 }, { 32, 39 },
2607 { 33, 36 }, { 34, 35 }, { -77, -76 }, { -75, -74 },
2608 { 37, 38 }, { -73, -72 }, { -71, -70 }, { 40, 43 },
2609 { 41, 42 }, { -58, -57 }, { -56, -55 }, { 44, 45 },
2610 { -54, -52 }, { -51, -50 }, { 47, 54 }, { 48, 51 },
2611 { 49, 50 }, { -49, -48 }, { -47, -46 }, { 52, 53 },
2612 { -45, -44 }, { -43, -42 }, { 55, 58 }, { 56, 57 },
2613 { -41, -40 }, { -39, -38 }, { 59, 60 }, { -37, -36 },
2614 { -35, 61 }, { -34, -33 }
2615};
2616
2617const std::int8_t tHuffmanNoiseBal30dB[24][2] = {
2618 { -64, 1 }, { -65, 2 }, { -63, 3 }, { 4, 9 },
2619 { -66, 5 }, { -62, 6 }, { 7, 8 }, { -76, -75 },
2620 { -74, -73 }, { 10, 17 }, { 11, 14 }, { 12, 13 },
2621 { -72, -71 }, { -70, -69 }, { 15, 16 }, { -68, -67 },
2622 { -61, -60 }, { 18, 21 }, { 19, 20 }, { -59, -58 },
2623 { -57, -56 }, { 22, 23 }, { -55, -54 }, { -53, -52 }
2624};
2625// clang-format on
2626
2628
2629} // namespace TagParser
Contains all classes and functions of the TagInfo library.
Definition aaccodebook.h:10