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