Tag Parser  7.1.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
aaccodebook.cpp
Go to the documentation of this file.
1 #include "./aaccodebook.h"
2 
8 namespace TagParser {
9 
11 
12 // clang-format off
13 const AacHcb *const aacHcbTable[] = {
14  nullptr, aacHcb1Step1, aacHcb2Step1, nullptr, aacHcb4Step1, nullptr, aacHcb6Step1, nullptr, aacHcb8Step1, nullptr, aacHcb10Step1, aacHcb11Step1
15 };
16 
17 const AacHcb2Pair *const aacHcb2PairTable[] = {
18  nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, aacHcb6Step2, nullptr, aacHcb8Step2, nullptr, aacHcb10Step2, aacHcb11Step2
19 };
20 
21 const AacHcb2Quad *const aacHcb2QuadTable[] = {
22  nullptr, aacHcb1Step2, aacHcb2Step2, nullptr, aacHcb4Step2, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr
23 };
24 
25 const AacHcbBinPair *const aacHcbBinTable[] = {
26  nullptr, nullptr, nullptr, nullptr, nullptr, aacHcb5, nullptr, aacHcb7, nullptr, aacHcb9, nullptr, nullptr
27 };
28 
29 const byte aacHcbN[] = { 0, 5, 5, 0, 5, 0, 5, 0, 5, 0, 6, 5 };
30 
31 const byte 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 
35 const int aacHcb2QuadTableSize[] = { 0, 114, 86, 0, 185, 0, 0, 0, 0, 0, 0, 0 };
36 const int aacHcb2PairTableSize[] = { 0, 0, 0, 0, 0, 0, 126, 0, 83, 0, 210, 373 };
37 const int aacHcbBinTableSize[] = { 0, 0, 0, 161, 0, 161, 0, 127, 0, 337, 0, 0 };
38 
39 const 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 
80 const 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 
184 const 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 
229 const 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 
328 const 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 
492 const 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 
540 const 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 
650 const 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 
814 const 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 
860 const 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 
955 const 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 
1085 const 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 
1135 const 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 
1217 const 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 
1557 const 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 
1635 const 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 
1828 const 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 
1886 const 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 
2202 const byte 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 
2446 const sbyte 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 
2479 const sbyte 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 
2512 const sbyte 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 
2527 const sbyte 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 
2542 const sbyte 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 
2561 const sbyte 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 
2580 const sbyte 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 
2589 const sbyte 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 
2598 const sbyte 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 
2617 const sbyte 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:9