FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
atrac9tab.h
Go to the documentation of this file.
1 /*
2  * ATRAC9 decoder
3  * Copyright (c) 2018 Rostislav Pehlivanov <atomnuker@gmail.com>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #ifndef AVCODEC_ATRAC9TAB_H
23 #define AVCODEC_ATRAC9TAB_H
24 
25 #include <stdint.h>
26 
28 
30  ATRAC9_BLOCK_TYPE_SCE, /* Single channel */
31  ATRAC9_BLOCK_TYPE_CPE, /* 2 coupled channels */
32  ATRAC9_BLOCK_TYPE_LFE, /* Single LFE channel */
33 };
34 
35 typedef struct ATRAC9BlockConfig {
36  uint64_t channel_layout;
38  int plane_map[5][2];
39  int count;
41 
43  { /* Mono */
45  {
47  },
48  { { 0 }, },
49  1,
50  },
51  { /* Dual Mono */
53  {
56  },
57  { { 0 }, { 1 }, },
58  2,
59  },
60  { /* Stereo */
62  {
64  },
65  { { 0, 1 }, },
66  1,
67  },
68  { /* 5.1 */
70  {
75  },
76  { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, },
77  4,
78  },
79  { /* 5.1 */
81  {
87  },
88  { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, { 6, 7 }, },
89  5,
90  },
91  { /* Quad */
93  {
96  },
97  { { 0, 1 }, { 2, 3 }, },
98  2,
99  },
100 };
101 
102 static const uint8_t at9_tab_sri_frame_log2[] = {
103  6, 6, 7, 7, 7, 8, 8, 8, 6, 6, 7, 7, 7, 8, 8, 8,
104 };
105 
107  0, 4, 8, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 30,
108 };
109 
111  2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 8, 8, 8,
112  8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
113 };
114 
115 static const int at9_q_unit_to_coeff_idx[] = {
116  0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64,
117  72, 80, 88, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256
118 };
119 
121  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2,
122  2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
123 };
124 
125 static const uint8_t at9_tab_sri_max_bands[] = {
126  8, 8, 12, 12, 12, 18, 18, 18, 8, 8, 12, 12, 12, 16, 16, 16,
127 };
128 
129 static const int at9_tab_samplerates[] = {
130  11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 44100, 48000,
131  64000, 88200, 96000, 128000, 176400, 192000,
132 };
133 
134 static const uint8_t at9_tab_band_ext_cnt[][6] = {
135  { 0, 0, 0, 4, 4, 2 },
136  { 0, 0, 0, 0, 0, 0 },
137  { 0, 0, 0, 2, 2, 1 },
138  { 0, 0, 0, 2, 2, 2 },
139  { 1, 1, 1, 0, 0, 0 },
140 };
141 
142 /* B unit, C unit, Band count */
143 static const uint8_t at9_tab_band_ext_group[][3] = {
144  { 16, 21, 0 },
145  { 18, 22, 1 },
146  { 20, 22, 2 },
147  { 21, 22, 3 },
148  { 21, 22, 3 },
149  { 23, 24, 4 },
150  { 23, 24, 4 },
151  { 24, 24, 5 },
152 };
153 
154 static const uint8_t at9_tab_band_ext_lengths[][6][4] = {
155  {
156  { 0, 0, 0, 0 },
157  { 0, 0, 0, 0 },
158  { 0, 0, 0, 0 },
159  { 5, 4, 3, 3 },
160  { 4, 4, 3, 4 },
161  { 4, 5, 0, 0 },
162  },
163  {
164  { 0, 0, 0, 0 },
165  { 0, 0, 0, 0 },
166  { 0, 0, 0, 0 },
167  { 0, 0, 0, 0 },
168  { 0, 0, 0, 0 },
169  { 0, 0, 0, 0 },
170  },
171  {
172  { 0, 0, 0, 0 },
173  { 0, 0, 0, 0 },
174  { 0, 0, 0, 0 },
175  { 6, 6, 0, 0 },
176  { 6, 6, 0, 0 },
177  { 6, 0, 0, 0 },
178  },
179  {
180  { 0, 0, 0, 0 },
181  { 0, 0, 0, 0 },
182  { 0, 0, 0, 0 },
183  { 4, 4, 0, 0 },
184  { 4, 4, 0, 0 },
185  { 4, 4, 0, 0 },
186  },
187  {
188  { 3, 0, 0, 0 },
189  { 3, 0, 0, 0 },
190  { 3, 0, 0, 0 },
191  { 0, 0, 0, 0 },
192  { 0, 0, 0, 0 },
193  { 0, 0, 0, 0 },
194  },
195 };
196 
197 static const float at9_band_ext_scales_m0[][5][32] = {
198  {
199  {
200  0.000000e+0f, 1.988220e-1f, 2.514343e-1f, 2.960510e-1f,
201  3.263550e-1f, 3.771362e-1f, 3.786926e-1f, 4.540405e-1f,
202  4.877625e-1f, 5.262451e-1f, 5.447083e-1f, 5.737000e-1f,
203  6.212158e-1f, 6.222839e-1f, 6.560974e-1f, 6.896667e-1f,
204  7.555542e-1f, 7.677917e-1f, 7.918091e-1f, 7.971497e-1f,
205  8.188171e-1f, 8.446045e-1f, 9.790649e-1f, 9.822083e-1f,
206  9.846191e-1f, 9.859314e-1f, 9.863586e-1f, 9.863892e-1f,
207  9.873352e-1f, 9.881287e-1f, 9.898682e-1f, 9.913330e-1f,
208  }, {
209  0.000000e+0f, 9.982910e-1f, 7.592773e-2f, 7.179565e-1f,
210  9.851379e-1f, 5.340271e-1f, 9.013672e-1f, 6.349182e-1f,
211  7.226257e-1f, 1.948547e-1f, 7.628174e-1f, 9.873657e-1f,
212  8.112183e-1f, 2.715454e-1f, 9.734192e-1f, 1.443787e-1f,
213  4.640198e-1f, 3.249207e-1f, 3.790894e-1f, 8.276367e-2f,
214  5.954590e-1f, 2.864380e-1f, 9.806824e-1f, 7.929077e-1f,
215  6.292114e-1f, 4.887085e-1f, 2.905273e-1f, 1.301880e-1f,
216  3.140869e-1f, 5.482483e-1f, 4.210815e-1f, 1.182861e-1f,
217  }, {
218  0.000000e+0f, 3.155518e-2f, 8.581543e-2f, 1.364746e-1f,
219  1.858826e-1f, 2.368469e-1f, 2.888184e-1f, 3.432617e-1f,
220  4.012451e-1f, 4.623108e-1f, 5.271301e-1f, 5.954895e-1f,
221  6.681213e-1f, 7.448425e-1f, 8.245239e-1f, 9.097290e-1f,
222  }, {
223  0.000000e+0f, 4.418945e-2f, 1.303711e-1f, 2.273560e-1f,
224  3.395996e-1f, 4.735718e-1f, 6.267090e-1f, 8.003845e-1f,
225  }, {
226  0.000000e+0f, 2.804565e-2f, 9.683228e-2f, 1.849976e-1f,
227  3.005981e-1f, 4.470520e-1f, 6.168518e-1f, 8.007813e-1f,
228  },
229  },
230  {
231  {
232  0.000000e+0f, 2.708740e-1f, 3.479614e-1f, 3.578186e-1f,
233  5.083618e-1f, 5.299072e-1f, 5.819092e-1f, 6.381836e-1f,
234  7.276917e-1f, 7.595520e-1f, 7.878723e-1f, 9.707336e-1f,
235  9.713135e-1f, 9.736023e-1f, 9.759827e-1f, 9.832458e-1f,
236  }, {
237  0.000000e+0f, 2.330627e-1f, 5.891418e-1f, 7.170410e-1f,
238  2.036438e-1f, 1.613464e-1f, 6.668701e-1f, 9.481201e-1f,
239  9.769897e-1f, 5.111694e-1f, 3.522644e-1f, 8.209534e-1f,
240  2.933960e-1f, 9.757690e-1f, 5.289917e-1f, 4.372253e-1f,
241  }, {
242  0.000000e+0f, 4.360962e-2f, 1.056519e-1f, 1.590576e-1f,
243  2.078857e-1f, 2.572937e-1f, 3.082581e-1f, 3.616028e-1f,
244  4.191589e-1f, 4.792175e-1f, 5.438538e-1f, 6.125183e-1f,
245  6.841125e-1f, 7.589417e-1f, 8.365173e-1f, 9.148254e-1f,
246  }, {
247  0.000000e+0f, 4.074097e-2f, 1.164551e-1f, 2.077026e-1f,
248  3.184509e-1f, 4.532166e-1f, 6.124268e-1f, 7.932129e-1f,
249  }, {
250  0.000000e+0f, 8.880615e-3f, 2.932739e-2f, 5.593872e-2f,
251  8.825684e-2f, 1.259155e-1f, 1.721497e-1f, 2.270813e-1f,
252  2.901611e-1f, 3.579712e-1f, 4.334106e-1f, 5.147095e-1f,
253  6.023254e-1f, 6.956177e-1f, 7.952881e-1f, 8.977356e-1f,
254  },
255  },
256  {
257  {
258  0.000000e+0f, 7.379150e-2f, 1.806335e-1f, 2.687073e-1f,
259  3.407898e-1f, 4.047546e-1f, 4.621887e-1f, 5.168762e-1f,
260  5.703125e-1f, 6.237488e-1f, 6.763611e-1f, 7.288208e-1f,
261  7.808533e-1f, 8.337708e-1f, 8.874512e-1f, 9.418030e-1f,
262  }, {
263  0.000000e+0f, 7.980347e-2f, 1.615295e-1f, 1.665649e-1f,
264  1.822205e-1f, 2.185669e-1f, 2.292175e-1f, 2.456665e-1f,
265  2.666321e-1f, 3.306580e-1f, 3.330688e-1f, 3.765259e-1f,
266  4.085083e-1f, 4.400024e-1f, 4.407654e-1f, 4.817505e-1f,
267  4.924011e-1f, 5.320740e-1f, 5.893860e-1f, 6.131287e-1f,
268  6.212463e-1f, 6.278076e-1f, 6.308899e-1f, 7.660828e-1f,
269  7.850647e-1f, 7.910461e-1f, 7.929382e-1f, 8.038330e-1f,
270  9.834900e-1f, 9.846191e-1f, 9.852295e-1f, 9.862671e-1f,
271  }, {
272  0.000000e+0f, 6.084290e-1f, 3.672791e-1f, 3.151855e-1f,
273  1.488953e-1f, 2.571716e-1f, 5.103455e-1f, 3.311157e-1f,
274  5.426025e-2f, 4.254456e-1f, 7.998352e-1f, 7.873230e-1f,
275  5.418701e-1f, 2.925110e-1f, 8.468628e-2f, 1.410522e-1f,
276  9.819641e-1f, 9.609070e-1f, 3.530884e-2f, 9.729004e-2f,
277  5.758362e-1f, 9.941711e-1f, 7.215576e-1f, 7.183228e-1f,
278  2.028809e-1f, 9.588623e-2f, 2.032166e-1f, 1.338806e-1f,
279  5.003357e-1f, 1.874390e-1f, 9.804993e-1f, 1.107788e-1f,
280  },
281  },
282 };
283 
284 static const float at9_band_ext_scales_m2[] = {
285  4.272461e-4f, 1.312256e-3f, 2.441406e-3f, 3.692627e-3f,
286  4.913330e-3f, 6.134033e-3f, 7.507324e-3f, 8.972168e-3f,
287  1.049805e-2f, 1.223755e-2f, 1.406860e-2f, 1.599121e-2f,
288  1.800537e-2f, 2.026367e-2f, 2.264404e-2f, 2.517700e-2f,
289  2.792358e-2f, 3.073120e-2f, 3.344727e-2f, 3.631592e-2f,
290  3.952026e-2f, 4.275513e-2f, 4.608154e-2f, 4.968262e-2f,
291  5.355835e-2f, 5.783081e-2f, 6.195068e-2f, 6.677246e-2f,
292  7.196045e-2f, 7.745361e-2f, 8.319092e-2f, 8.993530e-2f,
293  9.759521e-2f, 1.056213e-1f, 1.138916e-1f, 1.236267e-1f,
294  1.348267e-1f, 1.470337e-1f, 1.603394e-1f, 1.755676e-1f,
295  1.905823e-1f, 2.071228e-1f, 2.245178e-1f, 2.444153e-1f,
296  2.658997e-1f, 2.897644e-1f, 3.146057e-1f, 3.450012e-1f,
297  3.766174e-1f, 4.122620e-1f, 4.505615e-1f, 4.893799e-1f,
298  5.305481e-1f, 5.731201e-1f, 6.157837e-1f, 6.580811e-1f,
299  6.985168e-1f, 7.435303e-1f, 7.865906e-1f, 8.302612e-1f,
300  8.718567e-1f, 9.125671e-1f, 9.575806e-1f, 9.996643e-1f,
301 };
302 
303 static const float at9_band_ext_scales_m3[][2] = {
304  { 3.491211e-1f, -2.913818e-1f, }, { 5.371094e-1f, -2.541504e-1f, },
305  { 6.782227e-1f, -1.664429e-1f, }, { 7.910156e-1f, -1.476440e-1f, },
306  { 9.057617e-1f, -1.342163e-1f, }, { 1.024902e+0f, -1.220703e-1f, },
307  { 1.156250e+0f, -1.117554e-1f, }, { 1.290527e+0f, -1.026611e-1f, },
308  { 1.458984e+0f, -9.436035e-2f, }, { 1.664551e+0f, -8.483887e-2f, },
309  { 1.929688e+0f, -7.476807e-2f, }, { 2.278320e+0f, -6.304932e-2f, },
310  { 2.831543e+0f, -4.492188e-2f, }, { 3.659180e+0f, -2.447510e-2f, },
311  { 5.257813e+0f, +1.831055e-4f, }, { 8.373047e+0f, +4.174805e-2f, },
312 };
313 
314 static const float at9_band_ext_scales_m4[] = {
315  3.610229e-2f, 1.260681e-1f, 2.227478e-1f, 3.338318e-1f,
316  4.662170e-1f, 6.221313e-1f, 7.989197e-1f, 9.939575e-1f,
317 };
318 
319 static const float at9_quant_step_coarse[] = {
320  2.0000000000000000e+0f, 6.6666666666666663e-1f, 2.8571428571428570e-1f,
321  1.3333333333333333e-1f, 6.4516129032258063e-2f, 3.1746031746031744e-2f,
322  1.5748031496062992e-2f, 7.8431372549019607e-3f, 3.9138943248532287e-3f,
323  1.9550342130987292e-3f, 9.7703957010258913e-4f, 4.8840048840048840e-4f,
324  2.4417043096081065e-4f, 1.2207776353537203e-4f, 6.1037018951994385e-5f,
325  3.0518043793392844e-5f,
326 };
327 
328 static const float at9_quant_step_fine[] = {
329  3.0518043793392844e-05f, 1.0172681264464281e-05f, 4.3597205419132631e-06f,
330  2.0345362528928561e-06f, 9.8445302559331759e-07f, 4.8441339354591809e-07f,
331  2.4029955742829012e-07f, 1.1967860311134448e-07f, 5.9722199204291275e-08f,
332  2.9831909866464167e-08f, 1.4908668194134265e-08f, 7.4525137468602791e-09f,
333  3.7258019525568114e-09f, 1.8627872668859698e-09f, 9.3136520869755679e-10f,
334  4.6567549848772173e-10f,
335 };
336 
337 static const float at9_scalefactor_c[] = {
338  3.0517578125e-5f, 6.1035156250e-5f, 1.2207031250e-4f, 2.4414062500e-4f,
339  4.8828125000e-4f, 9.7656250000e-4f, 1.9531250000e-3f, 3.9062500000e-3f,
340  7.8125000000e-3f, 1.5625000000e-2f, 3.1250000000e-2f, 6.2500000000e-2f,
341  1.2500000000e-1f, 2.5000000000e-1f, 5.0000000000e-1f, 1.0000000000e+0f,
342  2.0000000000e+0f, 4.0000000000e+0f, 8.0000000000e+0f, 1.6000000000e+1f,
343  3.2000000000e+1f, 6.4000000000e+1f, 1.2800000000e+2f, 2.5600000000e+2f,
344  5.1200000000e+2f, 1.0240000000e+3f, 2.0480000000e+3f, 4.0960000000e+3f,
345  8.1920000000e+3f, 1.6384000000e+4f, 3.2768000000e+4f, 6.5536000000e+4f,
346 };
347 
348 static const uint8_t at9_tab_sf_weights[][32] = {
349  {
350  0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 4, 4, 4,
351  4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 10, 12, 12, 12,
352  },
353  {
354  3, 2, 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1,
355  1, 1, 1, 1, 1, 2, 3, 3, 4, 5, 7, 10, 10, 10,
356  },
357  {
358  0, 2, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
359  6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 9, 12, 12, 12,
360  },
361  {
362  0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6,
363  6, 6, 6, 7, 8, 8, 10, 11, 11, 12, 13, 13, 13, 13,
364  },
365  {
366  0, 2, 2, 3, 3, 4, 4, 5, 4, 5, 5, 5, 5, 6, 7, 8, 8, 8,
367  8, 9, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14,
368  },
369  {
370  1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2,
371  2, 3, 3, 3, 4, 4, 5, 6, 7, 7, 9, 11, 11, 11,
372  },
373  {
374  0, 5, 8, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
375  13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 15, 15, 15,
376  },
377  {
378  0, 2, 3, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11,
379  11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 15, 15, 15,
380  },
381 };
382 
383 static const uint8_t at9_tab_b_dist[] = {
384  1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8,
385  9, 10, 11, 12, 13, 15, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, 27,
386  27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30,
387 };
388 
389 static const uint8_t huff_sfb_a1_bits[] = {
390  1, 1,
391 };
392 
393 static const uint16_t huff_sfb_a1_codes[] = {
394  0x00, 0x01,
395 };
396 
397 static const uint8_t huff_sfb_a2_bits[] = {
398  1, 3, 3, 2,
399 };
400 
401 static const uint16_t huff_sfb_a2_codes[] = {
402  0x00, 0x06, 0x07, 0x02,
403 };
404 
405 static const uint8_t huff_sfb_a3_bits[] = {
406  2, 2, 4, 6, 6, 5, 3, 2,
407 };
408 
409 static const uint16_t huff_sfb_a3_codes[] = {
410  0x00, 0x01, 0x0E, 0x3E, 0x3F, 0x1E, 0x06, 0x02,
411 };
412 
413 static const uint8_t huff_sfb_a4_bits[] = {
414  2, 2, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 6, 5, 4, 2,
415 };
416 
417 static const uint16_t huff_sfb_a4_codes[] = {
418  0x01, 0x02, 0x00, 0x06, 0x0F, 0x13, 0x23, 0x24,
419  0x25, 0x22, 0x21, 0x20, 0x0E, 0x05, 0x01, 0x03,
420 };
421 
422 static const uint8_t huff_sfb_a5_bits[] = {
423  2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
424  8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 6, 5, 5, 4, 3,
425 };
426 
427 static const uint16_t huff_sfb_a5_codes[] = {
428  0x02, 0x01, 0x07, 0x0D, 0x0C, 0x18, 0x1B, 0x21, 0x3F, 0x6A, 0x6B, 0x68,
429  0x73, 0x79, 0x7C, 0x7D, 0x7A, 0x7B, 0x78, 0x72, 0x44, 0x45, 0x47, 0x46,
430  0x69, 0x38, 0x20, 0x1D, 0x19, 0x09, 0x05, 0x00,
431 };
432 
433 static const uint8_t huff_sfb_a6_bits[] = {
434  3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8,
435  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
436  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
437  8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4,
438 };
439 
440 static const uint16_t huff_sfb_a6_codes[] = {
441  0x00, 0x01, 0x04, 0x05, 0x12, 0x13, 0x2E, 0x2F, 0x30, 0x66, 0x67, 0xD6,
442  0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2,
443  0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE,
444  0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA,
445  0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x68, 0x69, 0x6A, 0x31, 0x32, 0x14, 0x15,
446  0x16, 0x06, 0x07, 0x08,
447 };
448 
449 static const uint8_t huff_sfb_b2_bits[] = {
450  1, 2, 0, 2,
451 };
452 
453 static const uint16_t huff_sfb_b2_codes[] = {
454  0x00, 0x03, 0x00, 0x02,
455 };
456 
457 static const uint8_t huff_sfb_b3_bits[] = {
458  1, 3, 5, 6, 0, 6, 4, 2,
459 };
460 
461 static const uint16_t huff_sfb_b3_codes[] = {
462  0x01, 0x00, 0x04, 0x0B, 0x00, 0x0A, 0x03, 0x01,
463 };
464 
465 static const uint8_t huff_sfb_b4_bits[] = {
466  1, 3, 4, 5, 5, 7, 8, 8, 0, 8, 8, 7, 6, 6, 4, 3,
467 };
468 
469 static const uint16_t huff_sfb_b4_codes[] = {
470  0x01, 0x01, 0x04, 0x0E, 0x0F, 0x2C, 0x5A, 0x5D, 0x00, 0x5C, 0x5B, 0x2F,
471  0x15, 0x14, 0x06, 0x00,
472 };
473 
474 static const uint8_t huff_sfb_b5_bits[] = {
475  3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 6, 7, 7, 7, 8, 8,
476  8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 3,
477 };
478 
479 static const uint16_t huff_sfb_b5_codes[] = {
480  0x00, 0x05, 0x07, 0x0C, 0x04, 0x02, 0x03, 0x05, 0x09, 0x10, 0x23, 0x33,
481  0x36, 0x6E, 0x60, 0x65, 0x62, 0x61, 0x63, 0x64, 0x6F, 0x6D, 0x6C, 0x6B,
482  0x6A, 0x68, 0x69, 0x45, 0x44, 0x37, 0x1A, 0x07,
483 };
484 
485 typedef struct HuffmanCodebook {
486  const uint8_t *bits;
487  const uint16_t *codes;
488  const int size;
489  const int value_cnt;
490  const int value_cnt_pow;
491  const int value_bits;
492  const int max_bit_size;
494 
496  { 0 },
497  { huff_sfb_a1_bits, huff_sfb_a1_codes, 2, 1, 0, 1, 1, },
498  { huff_sfb_a2_bits, huff_sfb_a2_codes, 4, 1, 0, 2, 3, },
499  { huff_sfb_a3_bits, huff_sfb_a3_codes, 8, 1, 0, 3, 6, },
500  { huff_sfb_a4_bits, huff_sfb_a4_codes, 16, 1, 0, 4, 8, },
501  { huff_sfb_a5_bits, huff_sfb_a5_codes, 32, 1, 0, 5, 8, },
502  { huff_sfb_a6_bits, huff_sfb_a6_codes, 64, 1, 0, 6, 8, },
503 };
504 
506  { 0 },
507  { 0 },
508  { huff_sfb_b2_bits, huff_sfb_b2_codes, 4, 1, 0, 2, 2, },
509  { huff_sfb_b3_bits, huff_sfb_b3_codes, 8, 1, 0, 3, 6, },
510  { huff_sfb_b4_bits, huff_sfb_b4_codes, 16, 1, 0, 4, 8, },
511  { huff_sfb_b5_bits, huff_sfb_b5_codes, 32, 1, 0, 5, 8, },
512 };
513 
514 static const uint8_t huff_spec_a21_bits[] = {
515  0, 3, 0, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 0, 3,
516 };
517 
518 static const uint16_t huff_spec_a21_codes[] = {
519  0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x00, 0x04,
520  0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x06,
521 };
522 
523 static const uint8_t huff_spec_a22_bits[] = {
524  0, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6,
525  5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7,
526  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527  5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7,
528  5, 6, 0, 6, 7, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7,
529  6, 7, 0, 7, 7, 8, 0, 8, 0, 0, 0, 0, 7, 8, 0, 7,
530  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531  6, 7, 0, 7, 7, 8, 0, 8, 0, 0, 0, 0, 7, 7, 0, 8,
532  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
533  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
536  5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 7, 7, 0, 7,
537  6, 7, 0, 7, 7, 8, 0, 7, 0, 0, 0, 0, 7, 8, 0, 8,
538  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
539  6, 7, 0, 7, 7, 7, 0, 8, 0, 0, 0, 0, 7, 8, 0, 8,
540 };
541 
542 static const uint16_t huff_spec_a22_codes[] = {
543  0x00, 0x02, 0x00, 0x03, 0x10, 0x3C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x3D,
544  0x0E, 0x00, 0x00, 0x39, 0x18, 0x26, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x24, 0x00, 0x6D,
545  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
546  0x0F, 0x38, 0x00, 0x01, 0x1A, 0x6C, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x74, 0x00, 0x27,
547  0x16, 0x14, 0x00, 0x17, 0x76, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x35, 0x64, 0x00, 0x6F,
548  0x26, 0x04, 0x00, 0x63, 0x22, 0xA2, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x67, 0xA0, 0x00, 0x0D,
549  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550  0x2B, 0x52, 0x00, 0x0B, 0x20, 0x92, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x61, 0x0E, 0x00, 0x95,
551  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
552  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
553  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
554  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555  0x17, 0x16, 0x00, 0x15, 0x34, 0x6E, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x77, 0x08, 0x00, 0x07,
556  0x2A, 0x0A, 0x00, 0x53, 0x60, 0x94, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x00, 0x93,
557  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558  0x27, 0x62, 0x00, 0x05, 0x66, 0x0C, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x23, 0x96, 0x00, 0xA3,
559 };
560 
561 static const uint8_t huff_spec_a23_bits[] = {
562  3, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6,
563  5, 7, 0, 6, 6, 8, 0, 7, 0, 0, 0, 0, 6, 8, 0, 7,
564  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565  5, 6, 0, 7, 6, 7, 0, 8, 0, 0, 0, 0, 6, 7, 0, 8,
566  5, 6, 0, 6, 7, 8, 0, 8, 0, 0, 0, 0, 6, 7, 0, 7,
567  6, 8, 0, 7, 8, 9, 0, 9, 0, 0, 0, 0, 7, 9, 0, 8,
568  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569  6, 8, 0, 8, 8, 9, 0, 9, 0, 0, 0, 0, 7, 8, 0, 9,
570  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574  5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 7, 8, 0, 8,
575  6, 8, 0, 8, 7, 9, 0, 8, 0, 0, 0, 0, 8, 9, 0, 9,
576  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577  6, 7, 0, 8, 7, 8, 0, 9, 0, 0, 0, 0, 8, 9, 0, 9,
578 };
579 
580 static const uint16_t huff_spec_a23_codes[] = {
581  0x006, 0x002, 0x000, 0x003, 0x016, 0x01E, 0x000, 0x021, 0x000, 0x000, 0x000, 0x000,
582  0x017, 0x020, 0x000, 0x01F, 0x01C, 0x054, 0x000, 0x027, 0x010, 0x0A6, 0x000, 0x027,
583  0x000, 0x000, 0x000, 0x000, 0x015, 0x0A4, 0x000, 0x02D, 0x000, 0x000, 0x000, 0x000,
584  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
585  0x01D, 0x026, 0x000, 0x055, 0x014, 0x02C, 0x000, 0x0A5, 0x000, 0x000, 0x000, 0x000,
586  0x011, 0x026, 0x000, 0x0A7, 0x01E, 0x000, 0x000, 0x003, 0x04A, 0x074, 0x000, 0x071,
587  0x000, 0x000, 0x000, 0x000, 0x023, 0x00A, 0x000, 0x009, 0x018, 0x072, 0x000, 0x00D,
588  0x0A2, 0x15A, 0x000, 0x123, 0x000, 0x000, 0x000, 0x000, 0x00F, 0x158, 0x000, 0x05D,
589  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
590  0x000, 0x000, 0x000, 0x000, 0x01B, 0x0AE, 0x000, 0x077, 0x092, 0x140, 0x000, 0x121,
591  0x000, 0x000, 0x000, 0x000, 0x025, 0x05E, 0x000, 0x143, 0x000, 0x000, 0x000, 0x000,
592  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
593  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
594  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
595  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
596  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
597  0x01F, 0x002, 0x000, 0x001, 0x022, 0x008, 0x000, 0x00B, 0x000, 0x000, 0x000, 0x000,
598  0x04B, 0x070, 0x000, 0x075, 0x01A, 0x076, 0x000, 0x0AF, 0x024, 0x142, 0x000, 0x05F,
599  0x000, 0x000, 0x000, 0x000, 0x093, 0x120, 0x000, 0x141, 0x000, 0x000, 0x000, 0x000,
600  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
601  0x019, 0x00C, 0x000, 0x073, 0x00E, 0x05C, 0x000, 0x159, 0x000, 0x000, 0x000, 0x000,
602  0x0A3, 0x122, 0x000, 0x15B,
603 };
604 
605 static const uint8_t huff_spec_a24_bits[] = {
606  2, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6,
607  5, 7, 0, 6, 6, 8, 0, 8, 0, 0, 0, 0, 6, 8, 0, 8,
608  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
609  5, 6, 0, 7, 6, 8, 0, 8, 0, 0, 0, 0, 6, 8, 0, 8,
610  5, 7, 0, 7, 7, 9, 0, 9, 0, 0, 0, 0, 6, 8, 0, 8,
611  6, 9, 0, 8, 8, 10, 0, 10, 0, 0, 0, 0, 8, 10, 0, 9,
612  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
613  6, 8, 0, 9, 9, 10, 0, 10, 0, 0, 0, 0, 8, 9, 0, 10,
614  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
615  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
616  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
618  5, 7, 0, 7, 6, 8, 0, 8, 0, 0, 0, 0, 7, 9, 0, 9,
619  6, 9, 0, 8, 8, 10, 0, 9, 0, 0, 0, 0, 9, 10, 0, 10,
620  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621  6, 8, 0, 9, 8, 9, 0, 10, 0, 0, 0, 0, 8, 10, 0, 10,
622 };
623 
624 static const uint16_t huff_spec_a24_codes[] = {
625  0x002, 0x002, 0x000, 0x003, 0x01E, 0x010, 0x000, 0x013, 0x000, 0x000, 0x000, 0x000,
626  0x01F, 0x012, 0x000, 0x011, 0x01A, 0x030, 0x000, 0x01B, 0x000, 0x064, 0x000, 0x0C1,
627  0x000, 0x000, 0x000, 0x000, 0x003, 0x052, 0x000, 0x07D, 0x000, 0x000, 0x000, 0x000,
628  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
629  0x01B, 0x01A, 0x000, 0x031, 0x002, 0x07C, 0x000, 0x053, 0x000, 0x000, 0x000, 0x000,
630  0x001, 0x0C0, 0x000, 0x065, 0x01C, 0x062, 0x000, 0x065, 0x02A, 0x198, 0x000, 0x19B,
631  0x000, 0x000, 0x000, 0x000, 0x017, 0x078, 0x000, 0x07B, 0x004, 0x0FE, 0x000, 0x077,
632  0x050, 0x33A, 0x000, 0x1F9, 0x000, 0x000, 0x000, 0x000, 0x073, 0x338, 0x000, 0x0E1,
633  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
634  0x000, 0x000, 0x000, 0x000, 0x007, 0x066, 0x000, 0x187, 0x19E, 0x308, 0x000, 0x30B,
635  0x000, 0x000, 0x000, 0x000, 0x075, 0x0E2, 0x000, 0x1FB, 0x000, 0x000, 0x000, 0x000,
636  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
637  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
638  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
639  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
640  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
641  0x01D, 0x064, 0x000, 0x063, 0x016, 0x07A, 0x000, 0x079, 0x000, 0x000, 0x000, 0x000,
642  0x02B, 0x19A, 0x000, 0x199, 0x006, 0x186, 0x000, 0x067, 0x074, 0x1FA, 0x000, 0x0E3,
643  0x000, 0x000, 0x000, 0x000, 0x19F, 0x30A, 0x000, 0x309, 0x000, 0x000, 0x000, 0x000,
644  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
645  0x005, 0x076, 0x000, 0x0FF, 0x072, 0x0E0, 0x000, 0x339, 0x000, 0x000, 0x000, 0x000,
646  0x051, 0x1F8, 0x000, 0x33B,
647 };
648 
649 static const uint8_t huff_spec_a31_bits[] = {
650  0, 0, 4, 5, 0, 5, 4, 0, 0, 0, 5, 5, 0, 5, 5, 0,
651  5, 5, 6, 6, 0, 6, 5, 5, 5, 6, 6, 7, 0, 7, 6, 6,
652  0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 7, 0, 7, 6, 6,
653  5, 5, 5, 6, 0, 6, 6, 5, 0, 0, 5, 5, 0, 5, 5, 0,
654 };
655 
656 static const uint16_t huff_spec_a31_codes[] = {
657  0x00, 0x00, 0x02, 0x18, 0x00, 0x19, 0x03, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x09, 0x15, 0x00,
658  0x1A, 0x0A, 0x3E, 0x2C, 0x00, 0x2F, 0x01, 0x0D, 0x0E, 0x38, 0x20, 0x78, 0x00, 0x7B, 0x23, 0x3B,
659  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3A, 0x22, 0x7A, 0x00, 0x79, 0x21, 0x39,
660  0x1B, 0x0C, 0x00, 0x2E, 0x00, 0x2D, 0x3F, 0x0B, 0x00, 0x00, 0x14, 0x08, 0x00, 0x03, 0x13, 0x00,
661 };
662 
663 static const uint8_t huff_spec_a32_bits[] = {
664  4, 5, 5, 6, 0, 6, 5, 5, 5, 6, 5, 6, 0, 6, 5, 5,
665  5, 5, 6, 7, 0, 7, 6, 5, 6, 6, 7, 7, 0, 7, 7, 6,
666  0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 0, 7, 7, 6,
667  5, 5, 6, 7, 0, 7, 6, 5, 5, 5, 5, 6, 0, 6, 5, 6,
668 };
669 
670 static const uint16_t huff_spec_a32_codes[] = {
671  0x0D, 0x18, 0x16, 0x3A, 0x00, 0x3B, 0x17, 0x19, 0x12, 0x3E, 0x08, 0x1C, 0x00, 0x1B, 0x07, 0x01,
672  0x10, 0x02, 0x28, 0x78, 0x00, 0x7B, 0x1F, 0x05, 0x2A, 0x16, 0x72, 0x2A, 0x00, 0x29, 0x71, 0x19,
673  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x18, 0x70, 0x28, 0x00, 0x2B, 0x73, 0x17,
674  0x11, 0x04, 0x1E, 0x7A, 0x00, 0x79, 0x29, 0x03, 0x13, 0x00, 0x06, 0x1A, 0x00, 0x1D, 0x09, 0x3F,
675 };
676 
677 static const uint8_t huff_spec_a33_bits[] = {
678  3, 4, 5, 6, 0, 6, 5, 4, 4, 5, 6, 7, 0, 7, 6, 5,
679  5, 6, 6, 7, 0, 7, 6, 6, 6, 7, 8, 8, 0, 8, 8, 7,
680  0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 8, 0, 8, 8, 7,
681  5, 6, 6, 7, 0, 7, 6, 6, 4, 5, 6, 7, 0, 7, 6, 5,
682 };
683 
684 static const uint16_t huff_spec_a33_codes[] = {
685  0x05, 0x06, 0x10, 0x08, 0x00, 0x09, 0x11, 0x07, 0x04, 0x12, 0x3E, 0x6A, 0x00, 0x6D, 0x3D, 0x19,
686  0x06, 0x3A, 0x06, 0x02, 0x00, 0x01, 0x05, 0x39, 0x02, 0x16, 0xDC, 0x2A, 0x00, 0x29, 0xDF, 0x69,
687  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x68, 0xDE, 0x28, 0x00, 0x2B, 0xDD, 0x17,
688  0x07, 0x38, 0x04, 0x00, 0x00, 0x03, 0x07, 0x3B, 0x05, 0x18, 0x3C, 0x6C, 0x00, 0x6B, 0x3F, 0x13,
689 };
690 
691 static const uint8_t huff_spec_a34_bits[] = {
692  2, 4, 5, 7, 0, 7, 5, 4, 4, 5, 6, 8, 0, 8, 6, 5,
693  5, 6, 7, 8, 0, 8, 7, 6, 7, 8, 8, 10, 0, 10, 9, 8,
694  0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 0, 10, 8, 8,
695  5, 6, 7, 8, 0, 8, 7, 6, 4, 5, 6, 8, 0, 8, 6, 5,
696 };
697 
698 static const uint16_t huff_spec_a34_codes[] = {
699  0x000, 0x00A, 0x00A, 0x034, 0x000, 0x035, 0x00B, 0x00B, 0x008, 0x01C, 0x032, 0x0DA,
700  0x000, 0x0DD, 0x035, 0x01F, 0x008, 0x01E, 0x03A, 0x06C, 0x000, 0x063, 0x039, 0x031,
701  0x032, 0x06E, 0x060, 0x37A, 0x000, 0x379, 0x1BF, 0x0D9, 0x000, 0x000, 0x000, 0x000,
702  0x000, 0x000, 0x000, 0x000, 0x033, 0x0D8, 0x1BE, 0x378, 0x000, 0x37B, 0x061, 0x06F,
703  0x009, 0x030, 0x038, 0x062, 0x000, 0x06D, 0x03B, 0x01F, 0x009, 0x01E, 0x034, 0x0DC,
704  0x000, 0x0DB, 0x033, 0x01D,
705 };
706 
707 static const uint8_t huff_spec_a41_bits[] = {
708  0, 0, 0, 0, 6, 6, 7, 7, 0, 7, 7, 6, 6, 0, 0, 0,
709  0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 7, 6, 0, 0, 0,
710  0, 0, 0, 0, 7, 7, 7, 8, 0, 8, 7, 7, 7, 0, 0, 0,
711  0, 0, 0, 0, 7, 7, 8, 8, 0, 8, 8, 7, 7, 0, 0, 0,
712  7, 7, 7, 8, 7, 8, 8, 8, 0, 8, 8, 8, 7, 8, 7, 7,
713  7, 7, 7, 7, 8, 8, 8, 9, 0, 8, 8, 8, 8, 7, 7, 7,
714  7, 7, 8, 8, 8, 8, 9, 9, 0, 9, 8, 8, 8, 8, 8, 7,
715  8, 8, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 8,
716  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717  8, 8, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 8,
718  7, 7, 8, 8, 8, 8, 8, 9, 0, 9, 9, 8, 8, 8, 8, 7,
719  7, 7, 7, 7, 8, 8, 8, 8, 0, 9, 8, 8, 8, 7, 7, 7,
720  7, 7, 7, 8, 7, 8, 8, 8, 0, 8, 8, 8, 7, 8, 7, 7,
721  0, 0, 0, 0, 7, 7, 8, 8, 0, 8, 8, 7, 7, 0, 0, 0,
722  0, 0, 0, 0, 7, 7, 7, 8, 0, 8, 7, 7, 7, 0, 0, 0,
723  0, 0, 0, 0, 6, 7, 7, 7, 0, 7, 7, 7, 7, 0, 0, 0,
724 };
725 
726 static const uint16_t huff_spec_a41_codes[] = {
727  0x000, 0x000, 0x000, 0x000, 0x018, 0x00E, 0x05E, 0x028, 0x000, 0x029, 0x05F, 0x00F,
728  0x019, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x076, 0x06E, 0x03E, 0x004,
729  0x000, 0x017, 0x045, 0x07B, 0x013, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
730  0x04A, 0x048, 0x010, 0x0CE, 0x000, 0x0E1, 0x023, 0x055, 0x053, 0x000, 0x000, 0x000,
731  0x000, 0x000, 0x000, 0x000, 0x008, 0x018, 0x0D6, 0x09E, 0x000, 0x09D, 0x0E5, 0x02B,
732  0x01B, 0x000, 0x000, 0x000, 0x07C, 0x05C, 0x038, 0x0FC, 0x002, 0x0D2, 0x09A, 0x05C,
733  0x000, 0x06B, 0x0A3, 0x0D9, 0x00F, 0x0FF, 0x03D, 0x061, 0x074, 0x056, 0x036, 0x000,
734  0x0CC, 0x08C, 0x058, 0x1E2, 0x000, 0x00F, 0x05F, 0x0A1, 0x0D5, 0x00D, 0x03B, 0x059,
735  0x040, 0x014, 0x0DA, 0x0B6, 0x084, 0x040, 0x1E0, 0x196, 0x000, 0x1A1, 0x00D, 0x043,
736  0x087, 0x0C7, 0x0E3, 0x00B, 0x0F2, 0x0C4, 0x08E, 0x05A, 0x024, 0x1CC, 0x194, 0x168,
737  0x000, 0x16B, 0x1A3, 0x1CF, 0x027, 0x069, 0x099, 0x0C9, 0x000, 0x000, 0x000, 0x000,
738  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
739  0x0F3, 0x0C8, 0x098, 0x068, 0x026, 0x1CE, 0x1A2, 0x16A, 0x000, 0x169, 0x195, 0x1CD,
740  0x025, 0x05B, 0x08F, 0x0C5, 0x041, 0x00A, 0x0E2, 0x0C6, 0x086, 0x042, 0x00C, 0x1A0,
741  0x000, 0x197, 0x1E1, 0x041, 0x085, 0x0B7, 0x0DB, 0x015, 0x075, 0x058, 0x03A, 0x00C,
742  0x0D4, 0x0A0, 0x05E, 0x00E, 0x000, 0x1E3, 0x059, 0x08D, 0x0CD, 0x001, 0x037, 0x057,
743  0x07D, 0x060, 0x03C, 0x0FE, 0x00E, 0x0D8, 0x0A2, 0x06A, 0x000, 0x05D, 0x09B, 0x0D3,
744  0x003, 0x0FD, 0x039, 0x05D, 0x000, 0x000, 0x000, 0x000, 0x01A, 0x02A, 0x0E4, 0x09C,
745  0x000, 0x09F, 0x0D7, 0x019, 0x009, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
746  0x052, 0x054, 0x022, 0x0E0, 0x000, 0x0CF, 0x011, 0x049, 0x04B, 0x000, 0x000, 0x000,
747  0x000, 0x000, 0x000, 0x000, 0x012, 0x07A, 0x044, 0x016, 0x000, 0x005, 0x03F, 0x06F,
748  0x077, 0x000, 0x000, 0x000,
749 };
750 
751 static const uint8_t huff_spec_a42_bits[] = {
752  5, 6, 7, 7, 7, 7, 8, 8, 0, 8, 8, 7, 7, 7, 7, 6,
753  6, 7, 7, 8, 7, 7, 8, 8, 0, 8, 8, 7, 7, 8, 7, 7,
754  7, 7, 8, 8, 7, 8, 8, 9, 0, 9, 8, 8, 7, 8, 8, 7,
755  8, 8, 8, 8, 8, 8, 8, 9, 0, 9, 8, 8, 8, 8, 8, 8,
756  7, 7, 7, 8, 8, 8, 9, 9, 0, 9, 9, 8, 8, 8, 7, 7,
757  7, 7, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 7,
758  8, 8, 8, 8, 9, 9, 9, 10, 0, 10, 9, 9, 9, 8, 8, 8,
759  8, 8, 9, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 9, 9,
760  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761  8, 9, 9, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 9, 8,
762  8, 8, 8, 8, 9, 9, 9, 10, 0, 10, 9, 9, 9, 8, 8, 8,
763  7, 7, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 7,
764  7, 7, 7, 8, 8, 8, 9, 9, 0, 9, 9, 8, 8, 8, 7, 7,
765  8, 8, 8, 8, 8, 8, 8, 9, 0, 9, 8, 8, 8, 8, 8, 8,
766  7, 7, 8, 8, 7, 8, 8, 9, 0, 9, 8, 8, 7, 8, 8, 7,
767  6, 7, 7, 8, 7, 7, 8, 8, 0, 8, 8, 7, 7, 8, 7, 7,
768 };
769 
770 static const uint16_t huff_spec_a42_codes[] = {
771  0x003, 0x018, 0x058, 0x000, 0x066, 0x03C, 0x0D6, 0x07C, 0x000, 0x07D, 0x0D7, 0x03D,
772  0x067, 0x001, 0x059, 0x019, 0x002, 0x064, 0x036, 0x0DA, 0x04C, 0x01C, 0x0BE, 0x02C,
773  0x000, 0x037, 0x0C5, 0x029, 0x04B, 0x0E7, 0x03B, 0x069, 0x044, 0x02E, 0x0FA, 0x092,
774  0x020, 0x0F8, 0x086, 0x1FC, 0x000, 0x1E7, 0x07F, 0x0F5, 0x023, 0x0AD, 0x0FD, 0x02D,
775  0x0F6, 0x0DC, 0x09C, 0x03E, 0x0F0, 0x0B6, 0x026, 0x186, 0x000, 0x18D, 0x02F, 0x0B5,
776  0x0E1, 0x03D, 0x0AF, 0x0D9, 0x054, 0x040, 0x014, 0x0EC, 0x0BC, 0x054, 0x1C6, 0x108,
777  0x000, 0x10B, 0x1C5, 0x069, 0x0B9, 0x0DF, 0x019, 0x047, 0x026, 0x008, 0x0E4, 0x0A2,
778  0x056, 0x1DC, 0x142, 0x06A, 0x000, 0x091, 0x123, 0x1DF, 0x04B, 0x0A7, 0x0EB, 0x00B,
779  0x0C0, 0x09E, 0x06A, 0x022, 0x1AA, 0x140, 0x092, 0x3CA, 0x000, 0x3A7, 0x04B, 0x121,
780  0x18F, 0x007, 0x071, 0x0A5, 0x020, 0x004, 0x1A8, 0x174, 0x0E4, 0x068, 0x3A4, 0x2EE,
781  0x000, 0x2ED, 0x3C9, 0x049, 0x0E7, 0x185, 0x1D1, 0x1FF, 0x000, 0x000, 0x000, 0x000,
782  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
783  0x021, 0x1FE, 0x1D0, 0x184, 0x0E6, 0x048, 0x3C8, 0x2EC, 0x000, 0x2EF, 0x3A5, 0x069,
784  0x0E5, 0x175, 0x1A9, 0x005, 0x0C1, 0x0A4, 0x070, 0x006, 0x18E, 0x120, 0x04A, 0x3A6,
785  0x000, 0x3CB, 0x093, 0x141, 0x1AB, 0x023, 0x06B, 0x09F, 0x027, 0x00A, 0x0EA, 0x0A6,
786  0x04A, 0x1DE, 0x122, 0x090, 0x000, 0x06B, 0x143, 0x1DD, 0x057, 0x0A3, 0x0E5, 0x009,
787  0x055, 0x046, 0x018, 0x0DE, 0x0B8, 0x068, 0x1C4, 0x10A, 0x000, 0x109, 0x1C7, 0x055,
788  0x0BD, 0x0ED, 0x015, 0x041, 0x0F7, 0x0D8, 0x0AE, 0x03C, 0x0E0, 0x0B4, 0x02E, 0x18C,
789  0x000, 0x187, 0x027, 0x0B7, 0x0F1, 0x03F, 0x09D, 0x0DD, 0x045, 0x02C, 0x0FC, 0x0AC,
790  0x022, 0x0F4, 0x07E, 0x1E6, 0x000, 0x1FD, 0x087, 0x0F9, 0x021, 0x093, 0x0FB, 0x02F,
791  0x003, 0x068, 0x03A, 0x0E6, 0x04A, 0x028, 0x0C4, 0x036, 0x000, 0x02D, 0x0BF, 0x01D,
792  0x04D, 0x0DB, 0x037, 0x065,
793 };
794 
795 static const uint8_t huff_spec_a43_bits[] = {
796  4, 6, 6, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 6, 6,
797  5, 6, 7, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 7, 6,
798  6, 7, 7, 7, 8, 8, 9, 9, 0, 9, 9, 8, 8, 7, 7, 7,
799  7, 7, 7, 8, 8, 8, 9, 10, 0, 10, 9, 9, 8, 8, 7, 7,
800  7, 7, 8, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 8, 7,
801  8, 8, 8, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 8, 8,
802  8, 9, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 9,
803  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
804  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
805  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
806  8, 9, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 9,
807  8, 8, 8, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 8, 8,
808  7, 7, 8, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 8, 7,
809  7, 7, 7, 8, 8, 9, 9, 10, 0, 10, 9, 8, 8, 8, 7, 7,
810  6, 7, 7, 7, 8, 8, 9, 9, 0, 9, 9, 8, 8, 7, 7, 7,
811  5, 6, 7, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 7, 6,
812 };
813 
814 static const uint16_t huff_spec_a43_codes[] = {
815  0x002, 0x03E, 0x016, 0x060, 0x04E, 0x0DC, 0x04A, 0x130, 0x000, 0x131, 0x04B, 0x0DD,
816  0x04F, 0x061, 0x017, 0x03F, 0x002, 0x02C, 0x076, 0x042, 0x034, 0x0CE, 0x002, 0x0E8,
817  0x000, 0x0CF, 0x001, 0x0D1, 0x037, 0x045, 0x07B, 0x02F, 0x014, 0x072, 0x052, 0x01A,
818  0x0E0, 0x080, 0x198, 0x01E, 0x000, 0x01D, 0x19B, 0x083, 0x0DF, 0x019, 0x055, 0x079,
819  0x050, 0x03C, 0x004, 0x0C4, 0x096, 0x00C, 0x0EA, 0x34A, 0x000, 0x34F, 0x0ED, 0x1D7,
820  0x095, 0x0AF, 0x003, 0x03F, 0x046, 0x026, 0x0D6, 0x092, 0x046, 0x15A, 0x3A8, 0x108,
821  0x000, 0x10F, 0x3A3, 0x135, 0x039, 0x091, 0x0D9, 0x031, 0x0D4, 0x0CA, 0x072, 0x1C6,
822  0x136, 0x090, 0x2B2, 0x104, 0x000, 0x103, 0x111, 0x08B, 0x133, 0x1D3, 0x071, 0x0C9,
823  0x03E, 0x1B4, 0x18C, 0x0CC, 0x38A, 0x2B0, 0x106, 0x0F2, 0x000, 0x0EF, 0x101, 0x113,
824  0x3A1, 0x0CB, 0x18F, 0x1B7, 0x0EE, 0x092, 0x388, 0x348, 0x10A, 0x0F4, 0x0F0, 0x0EA,
825  0x000, 0x0E9, 0x0ED, 0x0F7, 0x10D, 0x34D, 0x3AB, 0x0C9, 0x000, 0x000, 0x000, 0x000,
826  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
827  0x0EF, 0x0C8, 0x3AA, 0x34C, 0x10C, 0x0F6, 0x0EC, 0x0E8, 0x000, 0x0EB, 0x0F1, 0x0F5,
828  0x10B, 0x349, 0x389, 0x093, 0x03F, 0x1B6, 0x18E, 0x0CA, 0x3A0, 0x112, 0x100, 0x0EE,
829  0x000, 0x0F3, 0x107, 0x2B1, 0x38B, 0x0CD, 0x18D, 0x1B5, 0x0D5, 0x0C8, 0x070, 0x1D2,
830  0x132, 0x08A, 0x110, 0x102, 0x000, 0x105, 0x2B3, 0x091, 0x137, 0x1C7, 0x073, 0x0CB,
831  0x047, 0x030, 0x0D8, 0x090, 0x038, 0x134, 0x3A2, 0x10E, 0x000, 0x109, 0x3A9, 0x15B,
832  0x047, 0x093, 0x0D7, 0x027, 0x051, 0x03E, 0x002, 0x0AE, 0x094, 0x1D6, 0x0EC, 0x34E,
833  0x000, 0x34B, 0x0EB, 0x00D, 0x097, 0x0C5, 0x005, 0x03D, 0x015, 0x078, 0x054, 0x018,
834  0x0DE, 0x082, 0x19A, 0x01C, 0x000, 0x01F, 0x199, 0x081, 0x0E1, 0x01B, 0x053, 0x073,
835  0x003, 0x02E, 0x07A, 0x044, 0x036, 0x0D0, 0x000, 0x0CE, 0x000, 0x0E9, 0x003, 0x0CF,
836  0x035, 0x043, 0x077, 0x02D,
837 };
838 
839 static const uint8_t huff_spec_a44_bits[] = {
840  4, 5, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 5,
841  5, 6, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 6,
842  6, 6, 7, 7, 8, 9, 10, 10, 0, 10, 10, 9, 8, 7, 7, 6,
843  7, 7, 7, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 7, 7,
844  7, 8, 8, 8, 9, 10, 10, 10, 0, 10, 10, 10, 9, 8, 8, 7,
845  8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8,
846  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
847  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
848  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
850  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
851  8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8,
852  7, 7, 8, 8, 9, 10, 10, 10, 0, 10, 10, 10, 9, 8, 8, 8,
853  7, 7, 7, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 7, 7,
854  6, 6, 7, 7, 8, 9, 10, 10, 0, 10, 10, 9, 8, 7, 7, 6,
855  5, 6, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 6,
856 };
857 
858 static const uint16_t huff_spec_a44_codes[] = {
859  0x00A, 0x012, 0x030, 0x06E, 0x024, 0x074, 0x0EC, 0x07E, 0x000, 0x07F, 0x0ED, 0x075,
860  0x025, 0x06F, 0x031, 0x013, 0x010, 0x03C, 0x018, 0x05A, 0x002, 0x046, 0x09E, 0x07C,
861  0x000, 0x079, 0x0E5, 0x04D, 0x007, 0x065, 0x01B, 0x03F, 0x02E, 0x016, 0x072, 0x01A,
862  0x0D6, 0x1C6, 0x3B4, 0x066, 0x000, 0x06B, 0x3B7, 0x1D9, 0x0D5, 0x021, 0x075, 0x015,
863  0x06C, 0x03E, 0x01E, 0x0CC, 0x044, 0x0F2, 0x082, 0x05C, 0x000, 0x05F, 0x087, 0x0F5,
864  0x031, 0x0CF, 0x017, 0x059, 0x01C, 0x0EE, 0x0D0, 0x024, 0x1C0, 0x08E, 0x06E, 0x048,
865  0x000, 0x04D, 0x06D, 0x089, 0x0F7, 0x033, 0x0D3, 0x001, 0x070, 0x028, 0x1C2, 0x0F0,
866  0x08A, 0x074, 0x054, 0x040, 0x000, 0x043, 0x053, 0x073, 0x099, 0x0EF, 0x1C5, 0x02B,
867  0x0E6, 0x04E, 0x08C, 0x080, 0x068, 0x058, 0x046, 0x02A, 0x000, 0x029, 0x045, 0x051,
868  0x065, 0x085, 0x09B, 0x09D, 0x07A, 0x076, 0x060, 0x056, 0x04E, 0x02C, 0x024, 0x022,
869  0x000, 0x021, 0x027, 0x02F, 0x04B, 0x05B, 0x063, 0x071, 0x000, 0x000, 0x000, 0x000,
870  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
871  0x07B, 0x070, 0x062, 0x05A, 0x04A, 0x02E, 0x026, 0x020, 0x000, 0x023, 0x025, 0x02D,
872  0x04F, 0x057, 0x061, 0x077, 0x0E7, 0x09C, 0x09A, 0x084, 0x064, 0x050, 0x044, 0x028,
873  0x000, 0x02B, 0x047, 0x059, 0x069, 0x081, 0x08D, 0x04F, 0x071, 0x02A, 0x1C4, 0x0EE,
874  0x098, 0x072, 0x052, 0x042, 0x000, 0x041, 0x055, 0x075, 0x08B, 0x0F1, 0x1C3, 0x029,
875  0x01D, 0x000, 0x0D2, 0x032, 0x0F6, 0x088, 0x06C, 0x04C, 0x000, 0x049, 0x06F, 0x08F,
876  0x1C1, 0x025, 0x0D1, 0x0EF, 0x06D, 0x058, 0x016, 0x0CE, 0x030, 0x0F4, 0x086, 0x05E,
877  0x000, 0x05D, 0x083, 0x0F3, 0x045, 0x0CD, 0x01F, 0x03F, 0x02F, 0x014, 0x074, 0x020,
878  0x0D4, 0x1D8, 0x3B6, 0x06A, 0x000, 0x067, 0x3B5, 0x1C7, 0x0D7, 0x01B, 0x073, 0x017,
879  0x011, 0x03E, 0x01A, 0x064, 0x006, 0x04C, 0x0E4, 0x078, 0x000, 0x07D, 0x09F, 0x047,
880  0x003, 0x05B, 0x019, 0x03D,
881 };
882 
883 static const uint8_t huff_spec_a51_bits[] = {
884  5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 5, 5, 5, 5, 5, 5,
885  0, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 6, 5, 5, 5, 5,
886 };
887 
888 static const uint16_t huff_spec_a51_codes[] = {
889  0x19, 0x16, 0x12, 0x0E, 0x06, 0x3A, 0x38, 0x30, 0x00, 0x04, 0x1E, 0x1A,
890  0x14, 0x10, 0x0C, 0x04, 0x00, 0x05, 0x0D, 0x11, 0x15, 0x1B, 0x1F, 0x05,
891  0x01, 0x31, 0x39, 0x3B, 0x07, 0x0F, 0x13, 0x17,
892 };
893 
894 static const uint8_t huff_spec_a52_bits[] = {
895  4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
896  0, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4,
897 };
898 
899 static const uint16_t huff_spec_a52_codes[] = {
900  0x09, 0x04, 0x00, 0x1E, 0x1A, 0x14, 0x0C, 0x06, 0x18, 0x16, 0x0E, 0x04,
901  0x3A, 0x38, 0x22, 0x20, 0x00, 0x21, 0x23, 0x39, 0x3B, 0x05, 0x0F, 0x17,
902  0x19, 0x07, 0x0D, 0x15, 0x1B, 0x1F, 0x01, 0x05,
903 };
904 
905 static const uint8_t huff_spec_a53_bits[] = {
906  3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7,
907  0, 7, 7, 7, 7, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4,
908 };
909 
910 static const uint16_t huff_spec_a53_codes[] = {
911  0x00, 0x0C, 0x08, 0x04, 0x1E, 0x16, 0x14, 0x06, 0x0C, 0x04, 0x38, 0x1E,
912  0x76, 0x74, 0x3A, 0x38, 0x00, 0x39, 0x3B, 0x75, 0x77, 0x1F, 0x39, 0x05,
913  0x0D, 0x07, 0x15, 0x17, 0x1F, 0x05, 0x09, 0x0D,
914 };
915 
916 static const uint8_t huff_spec_a54_bits[] = {
917  3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8,
918  0, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4,
919 };
920 
921 static const uint16_t huff_spec_a54_codes[] = {
922  0x02, 0x0E, 0x0A, 0x08, 0x02, 0x1A, 0x0E, 0x02, 0x00, 0x30, 0x18, 0x66,
923  0x36, 0x34, 0xCA, 0xC8, 0x00, 0xC9, 0xCB, 0x35, 0x37, 0x67, 0x19, 0x31,
924  0x01, 0x03, 0x0F, 0x1B, 0x03, 0x09, 0x0B, 0x0F,
925 };
926 
927 static const uint8_t huff_spec_a61_bits[] = {
928  6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
929  5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
930  0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
931  5, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6,
932 };
933 
934 static const uint16_t huff_spec_a61_codes[] = {
935  0x35, 0x30, 0x2A, 0x28, 0x24, 0x20, 0x18, 0x0E, 0x0C, 0x7E, 0x7C, 0x72,
936  0x70, 0x68, 0x5E, 0x5C, 0x04, 0x0E, 0x08, 0x00, 0x3C, 0x3A, 0x36, 0x32,
937  0x2C, 0x26, 0x22, 0x1A, 0x16, 0x14, 0x06, 0x04, 0x00, 0x05, 0x07, 0x15,
938  0x17, 0x1B, 0x23, 0x27, 0x2D, 0x33, 0x37, 0x3B, 0x3D, 0x01, 0x09, 0x0F,
939  0x05, 0x5D, 0x5F, 0x69, 0x71, 0x73, 0x7D, 0x7F, 0x0D, 0x0F, 0x19, 0x21,
940  0x25, 0x29, 0x2B, 0x31,
941 };
942 
943 static const uint8_t huff_spec_a62_bits[] = {
944  5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
945  6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
946  0, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6,
947  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5,
948 };
949 
950 static const uint16_t huff_spec_a62_codes[] = {
951  0x14, 0x0E, 0x08, 0x04, 0x02, 0x3E, 0x3C, 0x38, 0x34, 0x30, 0x2A, 0x24,
952  0x1A, 0x18, 0x0E, 0x02, 0x32, 0x36, 0x2C, 0x26, 0x20, 0x16, 0x0C, 0x00,
953  0x76, 0x74, 0x5E, 0x5C, 0x46, 0x44, 0x2A, 0x28, 0x00, 0x29, 0x2B, 0x45,
954  0x47, 0x5D, 0x5F, 0x75, 0x77, 0x01, 0x0D, 0x17, 0x21, 0x27, 0x2D, 0x37,
955  0x33, 0x03, 0x0F, 0x19, 0x1B, 0x25, 0x2B, 0x31, 0x35, 0x39, 0x3D, 0x3F,
956  0x03, 0x05, 0x09, 0x0F,
957 };
958 
959 static const uint8_t huff_spec_a63_bits[] = {
960  4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
961  6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,
962  0, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6,
963  6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5,
964 };
965 
966 static const uint16_t huff_spec_a63_codes[] = {
967  0x00, 0x1C, 0x18, 0x14, 0x10, 0x0A, 0x08, 0x02, 0x3E, 0x36, 0x2E, 0x2C,
968  0x24, 0x1C, 0x0E, 0x08, 0x1E, 0x1A, 0x0C, 0x7A, 0x6A, 0x68, 0x4C, 0x32,
969  0x16, 0x14, 0xF2, 0xF0, 0x9E, 0x9C, 0x62, 0x60, 0x00, 0x61, 0x63, 0x9D,
970  0x9F, 0xF1, 0xF3, 0x15, 0x17, 0x33, 0x4D, 0x69, 0x6B, 0x7B, 0x0D, 0x1B,
971  0x1F, 0x09, 0x0F, 0x1D, 0x25, 0x2D, 0x2F, 0x37, 0x3F, 0x03, 0x09, 0x0B,
972  0x11, 0x15, 0x19, 0x1D,
973 };
974 
975 static const uint8_t huff_spec_a64_bits[] = {
976  4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7,
977  6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
978  0, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7,
979  6, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4,
980 };
981 
982 static const uint16_t huff_spec_a64_codes[] = {
983  0x006, 0x002, 0x01C, 0x01A, 0x016, 0x012, 0x00E, 0x00A, 0x002, 0x03E,
984  0x032, 0x02A, 0x022, 0x020, 0x010, 0x07A, 0x000, 0x078, 0x060, 0x050,
985  0x024, 0x006, 0x0C6, 0x0C4, 0x0A4, 0x04E, 0x00A, 0x008, 0x14E, 0x14C,
986  0x09A, 0x098, 0x000, 0x099, 0x09B, 0x14D, 0x14F, 0x009, 0x00B, 0x04F,
987  0x0A5, 0x0C5, 0x0C7, 0x007, 0x025, 0x051, 0x061, 0x079, 0x001, 0x07B,
988  0x011, 0x021, 0x023, 0x02B, 0x033, 0x03F, 0x003, 0x00B, 0x00F, 0x013,
989  0x017, 0x01B, 0x01D, 0x003,
990 };
991 
992 static const uint8_t huff_spec_a71_bits[] = {
993  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
994  7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
995  6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
996  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
997  0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
998  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6,
999  6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
1000  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1001 };
1002 
1003 static const uint16_t huff_spec_a71_codes[] = {
1004  0x6C, 0x66, 0x62, 0x5C, 0x56, 0x50, 0x52, 0x4E, 0x48, 0x3E, 0x36, 0x34, 0x2A, 0x26, 0x1E, 0x16,
1005  0x0E, 0x08, 0x00, 0xF6, 0xF4, 0xEE, 0xEC, 0xE2, 0xE0, 0xDA, 0xD2, 0xD0, 0xBE, 0xBC, 0xB2, 0xB0,
1006  0x0C, 0x20, 0x1C, 0x16, 0x10, 0x08, 0x02, 0x7E, 0x7C, 0x78, 0x74, 0x72, 0x6E, 0x6A, 0x64, 0x60,
1007  0x5A, 0x54, 0x4C, 0x4A, 0x46, 0x44, 0x3C, 0x32, 0x30, 0x28, 0x24, 0x1C, 0x14, 0x0C, 0x0A, 0x02,
1008  0x00, 0x03, 0x0B, 0x0D, 0x15, 0x1D, 0x25, 0x29, 0x31, 0x33, 0x3D, 0x45, 0x47, 0x4B, 0x4D, 0x55,
1009  0x5B, 0x61, 0x65, 0x6B, 0x6F, 0x73, 0x75, 0x79, 0x7D, 0x7F, 0x03, 0x09, 0x11, 0x17, 0x1D, 0x21,
1010  0x0D, 0xB1, 0xB3, 0xBD, 0xBF, 0xD1, 0xD3, 0xDB, 0xE1, 0xE3, 0xED, 0xEF, 0xF5, 0xF7, 0x01, 0x09,
1011  0x0F, 0x17, 0x1F, 0x27, 0x2B, 0x35, 0x37, 0x3F, 0x49, 0x4F, 0x53, 0x51, 0x57, 0x5D, 0x63, 0x67,
1012 };
1013 
1014 static const uint8_t huff_spec_a72_bits[] = {
1015  6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
1016  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1017  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1018  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1019  0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1020  8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1021  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1022  7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6,
1023 };
1024 
1025 static const uint16_t huff_spec_a72_codes[] = {
1026  0x2A, 0x24, 0x1C, 0x18, 0x12, 0x0E, 0x0A, 0x06, 0x02, 0x7E, 0x7C, 0x7A, 0x76, 0x72, 0x70, 0x6A,
1027  0x68, 0x62, 0x5C, 0x5A, 0x52, 0x4E, 0x46, 0x42, 0x3C, 0x34, 0x2A, 0x28, 0x20, 0x12, 0x10, 0x08,
1028  0x66, 0x74, 0x6C, 0x64, 0x5E, 0x58, 0x50, 0x44, 0x40, 0x36, 0x2C, 0x22, 0x1A, 0x0A, 0x02, 0x00,
1029  0xF2, 0xF0, 0xDE, 0xDC, 0xC2, 0xC0, 0xAE, 0xAC, 0x9A, 0x98, 0x7E, 0x7C, 0x5E, 0x5C, 0x32, 0x30,
1030  0x00, 0x31, 0x33, 0x5D, 0x5F, 0x7D, 0x7F, 0x99, 0x9B, 0xAD, 0xAF, 0xC1, 0xC3, 0xDD, 0xDF, 0xF1,
1031  0xF3, 0x01, 0x03, 0x0B, 0x1B, 0x23, 0x2D, 0x37, 0x41, 0x45, 0x51, 0x59, 0x5F, 0x65, 0x6D, 0x75,
1032  0x67, 0x09, 0x11, 0x13, 0x21, 0x29, 0x2B, 0x35, 0x3D, 0x43, 0x47, 0x4F, 0x53, 0x5B, 0x5D, 0x63,
1033  0x69, 0x6B, 0x71, 0x73, 0x77, 0x7B, 0x7D, 0x7F, 0x03, 0x07, 0x0B, 0x0F, 0x13, 0x19, 0x1D, 0x25,
1034 };
1035 
1036 static const uint8_t huff_spec_a73_bits[] = {
1037  5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1038  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1039  7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1040  8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1041  0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
1042  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7,
1043  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1044  7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1045 };
1046 
1047 static const uint16_t huff_spec_a73_codes[] = {
1048  0x003, 0x03E, 0x038, 0x034, 0x030, 0x02C, 0x028, 0x024, 0x020, 0x01C, 0x016, 0x014,
1049  0x00E, 0x00A, 0x004, 0x000, 0x07A, 0x076, 0x06E, 0x06C, 0x064, 0x05E, 0x056, 0x04E,
1050  0x04C, 0x044, 0x036, 0x030, 0x022, 0x018, 0x012, 0x004, 0x03C, 0x03E, 0x032, 0x024,
1051  0x020, 0x010, 0x0F2, 0x0F0, 0x0E8, 0x0CE, 0x0BA, 0x0B8, 0x0A8, 0x08C, 0x06A, 0x04E,
1052  0x04C, 0x034, 0x00E, 0x00C, 0x1D6, 0x1D4, 0x19A, 0x198, 0x156, 0x154, 0x11E, 0x11C,
1053  0x0D2, 0x0D0, 0x06E, 0x06C, 0x000, 0x06D, 0x06F, 0x0D1, 0x0D3, 0x11D, 0x11F, 0x155,
1054  0x157, 0x199, 0x19B, 0x1D5, 0x1D7, 0x00D, 0x00F, 0x035, 0x04D, 0x04F, 0x06B, 0x08D,
1055  0x0A9, 0x0B9, 0x0BB, 0x0CF, 0x0E9, 0x0F1, 0x0F3, 0x011, 0x021, 0x025, 0x033, 0x03F,
1056  0x03D, 0x005, 0x013, 0x019, 0x023, 0x031, 0x037, 0x045, 0x04D, 0x04F, 0x057, 0x05F,
1057  0x065, 0x06D, 0x06F, 0x077, 0x07B, 0x001, 0x005, 0x00B, 0x00F, 0x015, 0x017, 0x01D,
1058  0x021, 0x025, 0x029, 0x02D, 0x031, 0x035, 0x039, 0x03F,
1059 };
1060 
1061 static const uint8_t huff_spec_a74_bits[] = {
1062  5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1063  6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8,
1064  7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
1065  9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1066  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9,
1067  9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1068  7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1069  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
1070 };
1071 
1072 static const uint16_t huff_spec_a74_codes[] = {
1073  0x00D, 0x00A, 0x004, 0x000, 0x03A, 0x036, 0x032, 0x030, 0x02C, 0x028, 0x026, 0x022,
1074  0x01E, 0x018, 0x012, 0x00E, 0x006, 0x07E, 0x07A, 0x070, 0x06A, 0x05E, 0x056, 0x054,
1075  0x048, 0x040, 0x038, 0x022, 0x01A, 0x00A, 0x0F8, 0x0E6, 0x008, 0x0FA, 0x0F0, 0x0D2,
1076  0x0BA, 0x0B8, 0x094, 0x084, 0x074, 0x042, 0x032, 0x1E6, 0x1CA, 0x1C8, 0x1A2, 0x12E,
1077  0x10E, 0x10C, 0x0EC, 0x082, 0x062, 0x060, 0x3CA, 0x3C8, 0x342, 0x340, 0x25A, 0x258,
1078  0x1DE, 0x1DC, 0x102, 0x100, 0x000, 0x101, 0x103, 0x1DD, 0x1DF, 0x259, 0x25B, 0x341,
1079  0x343, 0x3C9, 0x3CB, 0x061, 0x063, 0x083, 0x0ED, 0x10D, 0x10F, 0x12F, 0x1A3, 0x1C9,
1080  0x1CB, 0x1E7, 0x033, 0x043, 0x075, 0x085, 0x095, 0x0B9, 0x0BB, 0x0D3, 0x0F1, 0x0FB,
1081  0x009, 0x0E7, 0x0F9, 0x00B, 0x01B, 0x023, 0x039, 0x041, 0x049, 0x055, 0x057, 0x05F,
1082  0x06B, 0x071, 0x07B, 0x07F, 0x007, 0x00F, 0x013, 0x019, 0x01F, 0x023, 0x027, 0x029,
1083  0x02D, 0x031, 0x033, 0x037, 0x03B, 0x001, 0x005, 0x00B,
1084 };
1085 
1086 static const uint8_t huff_spec_b22_bits[] = {
1087  0, 4, 0, 4, 4, 5, 0, 5, 0, 0, 0, 0, 4, 5, 0, 5,
1088  4, 7, 0, 6, 6, 9, 0, 7, 0, 0, 0, 0, 6, 9, 0, 7,
1089  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1090  4, 6, 0, 7, 6, 7, 0, 9, 0, 0, 0, 0, 6, 7, 0, 9,
1091  4, 8, 0, 8, 8, 10, 0, 10, 0, 0, 0, 0, 6, 9, 0, 9,
1092  5, 10, 0, 9, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10,
1093  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1094  6, 9, 0, 10, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10,
1095  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1096  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1097  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1098  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099  4, 8, 0, 8, 6, 9, 0, 9, 0, 0, 0, 0, 8, 10, 0, 10,
1100  6, 10, 0, 9, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10,
1101  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1102  5, 9, 0, 10, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10,
1103 };
1104 
1105 static const uint16_t huff_spec_b22_codes[] = {
1106  0x000, 0x00E, 0x000, 0x00F, 0x008, 0x006, 0x000, 0x00B, 0x000, 0x000, 0x000, 0x000,
1107  0x009, 0x00A, 0x000, 0x007, 0x006, 0x00A, 0x000, 0x029, 0x006, 0x158, 0x000, 0x023,
1108  0x000, 0x000, 0x000, 0x000, 0x013, 0x174, 0x000, 0x021, 0x000, 0x000, 0x000, 0x000,
1109  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1110  0x007, 0x028, 0x000, 0x00B, 0x012, 0x020, 0x000, 0x175, 0x000, 0x000, 0x000, 0x000,
1111  0x007, 0x022, 0x000, 0x159, 0x00C, 0x0BC, 0x000, 0x0BF, 0x022, 0x2B8, 0x000, 0x2BB,
1112  0x000, 0x000, 0x000, 0x000, 0x00B, 0x170, 0x000, 0x15B, 0x000, 0x04E, 0x000, 0x15F,
1113  0x042, 0x04A, 0x000, 0x041, 0x000, 0x000, 0x000, 0x000, 0x055, 0x044, 0x000, 0x04D,
1114  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1115  0x000, 0x000, 0x000, 0x000, 0x02D, 0x172, 0x000, 0x2ED, 0x040, 0x042, 0x000, 0x047,
1116  0x000, 0x000, 0x000, 0x000, 0x013, 0x2EE, 0x000, 0x049, 0x000, 0x000, 0x000, 0x000,
1117  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1118  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1119  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1120  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1121  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1122  0x00D, 0x0BE, 0x000, 0x0BD, 0x00A, 0x15A, 0x000, 0x171, 0x000, 0x000, 0x000, 0x000,
1123  0x023, 0x2BA, 0x000, 0x2B9, 0x02C, 0x2EC, 0x000, 0x173, 0x012, 0x048, 0x000, 0x2EF,
1124  0x000, 0x000, 0x000, 0x000, 0x041, 0x046, 0x000, 0x043, 0x000, 0x000, 0x000, 0x000,
1125  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1126  0x001, 0x15E, 0x000, 0x04F, 0x054, 0x04C, 0x000, 0x045, 0x000, 0x000, 0x000, 0x000,
1127  0x043, 0x040, 0x000, 0x04B,
1128 };
1129 
1130 static const uint8_t huff_spec_b23_bits[] = {
1131  2, 4, 0, 4, 4, 6, 0, 6, 0, 0, 0, 0, 4, 6, 0, 6,
1132  4, 9, 0, 7, 7, 9, 0, 8, 0, 0, 0, 0, 7, 9, 0, 8,
1133  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1134  4, 7, 0, 9, 7, 8, 0, 9, 0, 0, 0, 0, 7, 8, 0, 9,
1135  4, 8, 0, 8, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10,
1136  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10,
1137  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 8, 10, 0, 10,
1139  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1140  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1141  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1142  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1143  4, 8, 0, 8, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10,
1144  7, 10, 0, 10, 8, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1145  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1146  7, 10, 0, 10, 9, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1147 };
1148 
1149 static const uint16_t huff_spec_b23_codes[] = {
1150  0x003, 0x008, 0x000, 0x009, 0x002, 0x018, 0x000, 0x01B, 0x000, 0x000, 0x000, 0x000,
1151  0x003, 0x01A, 0x000, 0x019, 0x000, 0x17C, 0x000, 0x055, 0x056, 0x0E8, 0x000, 0x07D,
1152  0x000, 0x000, 0x000, 0x000, 0x059, 0x0F6, 0x000, 0x07F, 0x000, 0x000, 0x000, 0x000,
1153  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1154  0x001, 0x054, 0x000, 0x17D, 0x058, 0x07E, 0x000, 0x0F7, 0x000, 0x000, 0x000, 0x000,
1155  0x057, 0x07C, 0x000, 0x0E9, 0x004, 0x0A2, 0x000, 0x0A1, 0x17A, 0x1DA, 0x000, 0x1D9,
1156  0x000, 0x000, 0x000, 0x000, 0x053, 0x1E8, 0x000, 0x2F3, 0x05C, 0x1D6, 0x000, 0x1E7,
1157  0x1EA, 0x1E2, 0x000, 0x1CF, 0x000, 0x000, 0x000, 0x000, 0x17F, 0x1CA, 0x000, 0x1DD,
1158  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1159  0x000, 0x000, 0x000, 0x000, 0x05B, 0x2F0, 0x000, 0x1DF, 0x1E4, 0x1CC, 0x000, 0x1D5,
1160  0x000, 0x000, 0x000, 0x000, 0x071, 0x1E0, 0x000, 0x1C9, 0x000, 0x000, 0x000, 0x000,
1161  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1162  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1163  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1164  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1165  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1166  0x005, 0x0A0, 0x000, 0x0A3, 0x052, 0x2F2, 0x000, 0x1E9, 0x000, 0x000, 0x000, 0x000,
1167  0x17B, 0x1D8, 0x000, 0x1DB, 0x05A, 0x1DE, 0x000, 0x2F1, 0x070, 0x1C8, 0x000, 0x1E1,
1168  0x000, 0x000, 0x000, 0x000, 0x1E5, 0x1D4, 0x000, 0x1CD, 0x000, 0x000, 0x000, 0x000,
1169  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1170  0x05D, 0x1E6, 0x000, 0x1D7, 0x17E, 0x1DC, 0x000, 0x1CB, 0x000, 0x000, 0x000, 0x000,
1171  0x1EB, 0x1CE, 0x000, 0x1E3,
1172 };
1173 
1174 static const uint8_t huff_spec_b24_bits[] = {
1175  1, 4, 0, 4, 5, 7, 0, 7, 0, 0, 0, 0, 5, 7, 0, 7,
1176  5, 9, 0, 7, 8, 10, 0, 9, 0, 0, 0, 0, 7, 10, 0, 9,
1177  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178  5, 7, 0, 9, 7, 9, 0, 10, 0, 0, 0, 0, 8, 9, 0, 10,
1179  5, 9, 0, 8, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10,
1180  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1181  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1182  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1183  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1184  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1185  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187  5, 8, 0, 9, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10,
1188  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1189  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1190  7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10,
1191 };
1192 
1193 static const uint16_t huff_spec_b24_codes[] = {
1194  0x001, 0x000, 0x000, 0x001, 0x00A, 0x01C, 0x000, 0x033, 0x000, 0x000, 0x000, 0x000,
1195  0x00B, 0x032, 0x000, 0x01D, 0x008, 0x0D8, 0x000, 0x031, 0x06E, 0x0FA, 0x000, 0x0D7,
1196  0x000, 0x000, 0x000, 0x000, 0x011, 0x0F4, 0x000, 0x0D5, 0x000, 0x000, 0x000, 0x000,
1197  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1198  0x009, 0x030, 0x000, 0x0D9, 0x010, 0x0D4, 0x000, 0x0F5, 0x000, 0x000, 0x000, 0x000,
1199  0x06F, 0x0D6, 0x000, 0x0FB, 0x00E, 0x0DA, 0x000, 0x025, 0x0D2, 0x0D4, 0x000, 0x0DB,
1200  0x000, 0x000, 0x000, 0x000, 0x017, 0x0FE, 0x000, 0x0FD, 0x014, 0x0DC, 0x000, 0x0F9,
1201  0x0F2, 0x0D6, 0x000, 0x09B, 0x000, 0x000, 0x000, 0x000, 0x1A3, 0x09C, 0x000, 0x0D3,
1202  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1203  0x000, 0x000, 0x000, 0x000, 0x019, 0x0F6, 0x000, 0x0D9, 0x0F0, 0x09E, 0x000, 0x0D1,
1204  0x000, 0x000, 0x000, 0x000, 0x1A1, 0x0DE, 0x000, 0x099, 0x000, 0x000, 0x000, 0x000,
1205  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1206  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1207  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1208  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1209  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1210  0x00F, 0x024, 0x000, 0x0DB, 0x016, 0x0FC, 0x000, 0x0FF, 0x000, 0x000, 0x000, 0x000,
1211  0x0D3, 0x0DA, 0x000, 0x0D5, 0x018, 0x0D8, 0x000, 0x0F7, 0x1A0, 0x098, 0x000, 0x0DF,
1212  0x000, 0x000, 0x000, 0x000, 0x0F1, 0x0D0, 0x000, 0x09F, 0x000, 0x000, 0x000, 0x000,
1213  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1214  0x015, 0x0F8, 0x000, 0x0DD, 0x1A2, 0x0D2, 0x000, 0x09D, 0x000, 0x000, 0x000, 0x000,
1215  0x0F3, 0x09A, 0x000, 0x0D7
1216 };
1217 
1218 static const uint8_t huff_spec_b32_bits[] = {
1219  2, 4, 5, 6, 0, 6, 5, 4, 5, 6, 6, 7, 0, 6, 5, 6,
1220  5, 6, 7, 7, 0, 8, 7, 6, 6, 7, 8, 9, 0, 9, 8, 7,
1221  0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 9, 8, 7,
1222  5, 6, 7, 8, 0, 7, 7, 6, 5, 6, 5, 6, 0, 7, 6, 6,
1223 };
1224 
1225 static const uint16_t huff_spec_b32_codes[] = {
1226  0x001, 0x002, 0x01E, 0x02A, 0x000, 0x02B, 0x01F, 0x003, 0x016, 0x020, 0x03A, 0x064,
1227  0x000, 0x005, 0x001, 0x023, 0x01A, 0x026, 0x070, 0x00C, 0x000, 0x0CF, 0x073, 0x031,
1228  0x024, 0x00E, 0x0CC, 0x146, 0x000, 0x145, 0x0A1, 0x053, 0x000, 0x000, 0x000, 0x000,
1229  0x000, 0x000, 0x000, 0x000, 0x025, 0x052, 0x0A0, 0x144, 0x000, 0x147, 0x0CD, 0x00F,
1230  0x01B, 0x030, 0x072, 0x0CE, 0x000, 0x00D, 0x071, 0x027, 0x017, 0x022, 0x000, 0x004,
1231  0x000, 0x065, 0x03B, 0x021,
1232 };
1233 
1234 static const uint8_t huff_spec_b33_bits[] = {
1235  2, 4, 5, 7, 0, 7, 5, 4, 4, 5, 6, 8, 0, 7, 6, 5,
1236  5, 6, 7, 9, 0, 8, 7, 6, 7, 8, 9, 10, 0, 10, 9, 8,
1237  0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 0, 10, 9, 8,
1238  5, 6, 7, 8, 0, 9, 7, 6, 4, 5, 6, 7, 0, 8, 6, 5,
1239 };
1240 
1241 static const uint16_t huff_spec_b33_codes[] = {
1242  0x003, 0x008, 0x014, 0x05E, 0x000, 0x05F, 0x015, 0x009, 0x004, 0x002, 0x01C, 0x0BA,
1243  0x000, 0x011, 0x01F, 0x001, 0x00C, 0x00C, 0x014, 0x166, 0x000, 0x02D, 0x013, 0x00F,
1244  0x05A, 0x0B0, 0x05E, 0x0B8, 0x000, 0x0BB, 0x165, 0x0B9, 0x000, 0x000, 0x000, 0x000,
1245  0x000, 0x000, 0x000, 0x000, 0x05B, 0x0B8, 0x164, 0x0BA, 0x000, 0x0B9, 0x05F, 0x0B1,
1246  0x00D, 0x00E, 0x012, 0x02C, 0x000, 0x167, 0x015, 0x00D, 0x005, 0x000, 0x01E, 0x010,
1247  0x000, 0x0BB, 0x01D, 0x003
1248 };
1249 
1250 static const uint8_t huff_spec_b34_bits[] = {
1251  1, 4, 6, 8, 0, 8, 6, 4, 4, 6, 7, 9, 0, 8, 7, 6,
1252  6, 7, 8, 10, 0, 10, 8, 7, 8, 9, 10, 10, 0, 10, 10, 9,
1253  0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 10, 0, 10, 10, 9,
1254  6, 7, 8, 10, 0, 10, 8, 7, 4, 6, 7, 8, 0, 9, 7, 6,
1255 };
1256 
1257 static const uint16_t huff_spec_b34_codes[] = {
1258  0x000, 0x00A, 0x038, 0x0EE, 0x000, 0x0EF, 0x039, 0x00B, 0x008, 0x03C, 0x06E, 0x1D8,
1259  0x000, 0x0C1, 0x075, 0x03F, 0x032, 0x068, 0x0C4, 0x358, 0x000, 0x30F, 0x0C7, 0x06D,
1260  0x0D4, 0x1AE, 0x30C, 0x308, 0x000, 0x30B, 0x35B, 0x1DB, 0x000, 0x000, 0x000, 0x000,
1261  0x000, 0x000, 0x000, 0x000, 0x0D5, 0x1DA, 0x35A, 0x30A, 0x000, 0x309, 0x30D, 0x1AF,
1262  0x033, 0x06C, 0x0C6, 0x30E, 0x000, 0x359, 0x0C5, 0x069, 0x009, 0x03E, 0x074, 0x0C0,
1263  0x000, 0x1D9, 0x06F, 0x03D,
1264 };
1265 
1266 static const uint8_t huff_spec_b42_bits[] = {
1267  4, 5, 6, 8, 6, 7, 8, 8, 0, 8, 8, 7, 6, 8, 6, 5,
1268  5, 6, 7, 8, 7, 7, 8, 9, 0, 8, 8, 7, 7, 8, 7, 6,
1269  7, 7, 8, 9, 7, 8, 9, 9, 0, 9, 9, 8, 7, 9, 8, 7,
1270  8, 9, 9, 10, 8, 8, 9, 10, 0, 10, 9, 8, 8, 10, 9, 8,
1271  6, 7, 8, 8, 9, 9, 10, 10, 0, 10, 10, 9, 9, 8, 8, 7,
1272  7, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7,
1273  8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8,
1274  8, 9, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 9,
1275  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276  8, 9, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 9,
1277  8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8,
1278  7, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7,
1279  6, 7, 8, 8, 9, 9, 10, 10, 0, 10, 10, 9, 9, 8, 8, 7,
1280  8, 8, 9, 10, 8, 8, 9, 10, 0, 10, 9, 8, 8, 10, 9, 9,
1281  7, 7, 8, 9, 7, 8, 9, 9, 0, 9, 9, 8, 7, 9, 8, 7,
1282  5, 6, 7, 8, 7, 7, 8, 8, 0, 9, 8, 7, 7, 8, 7, 6,
1283 };
1284 
1285 static const uint16_t huff_spec_b42_codes[] = {
1286  0x00E, 0x018, 0x010, 0x0F0, 0x024, 0x05A, 0x0F6, 0x078, 0x000, 0x079, 0x0F7, 0x05B,
1287  0x025, 0x0F1, 0x011, 0x019, 0x00C, 0x014, 0x01C, 0x036, 0x05C, 0x012, 0x09E, 0x1E4,
1288  0x000, 0x00B, 0x0A9, 0x03B, 0x05F, 0x071, 0x019, 0x017, 0x06E, 0x000, 0x03E, 0x114,
1289  0x002, 0x0B0, 0x1AA, 0x07A, 0x000, 0x099, 0x1E7, 0x0B3, 0x00B, 0x131, 0x07F, 0x00D,
1290  0x0D8, 0x1FE, 0x112, 0x22E, 0x086, 0x010, 0x134, 0x35C, 0x000, 0x35F, 0x133, 0x013,
1291  0x081, 0x22D, 0x119, 0x07B, 0x00A, 0x050, 0x0F8, 0x04E, 0x1B4, 0x154, 0x3EC, 0x0D2,
1292  0x000, 0x0D7, 0x3D7, 0x137, 0x1FD, 0x073, 0x0FD, 0x057, 0x052, 0x010, 0x08E, 0x1E8,
1293  0x11A, 0x3EE, 0x0F2, 0x03C, 0x000, 0x03F, 0x0F1, 0x3D5, 0x111, 0x1F5, 0x09D, 0x025,
1294  0x0D2, 0x082, 0x1A0, 0x0F8, 0x36E, 0x0D4, 0x072, 0x03A, 0x000, 0x027, 0x071, 0x07D,
1295  0x36D, 0x0FB, 0x1AD, 0x085, 0x00C, 0x1A8, 0x03C, 0x346, 0x0D0, 0x076, 0x024, 0x020,
1296  0x000, 0x023, 0x039, 0x075, 0x07F, 0x345, 0x09B, 0x157, 0x000, 0x000, 0x000, 0x000,
1297  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1298  0x00D, 0x156, 0x09A, 0x344, 0x07E, 0x074, 0x038, 0x022, 0x000, 0x021, 0x025, 0x077,
1299  0x0D1, 0x347, 0x03D, 0x1A9, 0x0D3, 0x084, 0x1AC, 0x0FA, 0x36C, 0x07C, 0x070, 0x026,
1300  0x000, 0x03B, 0x073, 0x0D5, 0x36F, 0x0F9, 0x1A1, 0x083, 0x053, 0x024, 0x09C, 0x1F4,
1301  0x110, 0x3D4, 0x0F0, 0x03E, 0x000, 0x03D, 0x0F3, 0x3EF, 0x11B, 0x1E9, 0x08F, 0x011,
1302  0x00B, 0x056, 0x0FC, 0x072, 0x1FC, 0x136, 0x3D6, 0x0D6, 0x000, 0x0D3, 0x3ED, 0x155,
1303  0x1B5, 0x04F, 0x0F9, 0x051, 0x0D9, 0x07A, 0x118, 0x22C, 0x080, 0x012, 0x132, 0x35E,
1304  0x000, 0x35D, 0x135, 0x011, 0x087, 0x22F, 0x113, 0x1FF, 0x06F, 0x00C, 0x07E, 0x130,
1305  0x00A, 0x0B2, 0x1E6, 0x098, 0x000, 0x07B, 0x1AB, 0x0B1, 0x003, 0x115, 0x03F, 0x001,
1306  0x00D, 0x016, 0x018, 0x070, 0x05E, 0x03A, 0x0A8, 0x00A, 0x000, 0x1E5, 0x09F, 0x013,
1307  0x05D, 0x037, 0x01D, 0x015,
1308 };
1309 
1310 static const uint8_t huff_spec_b43_bits[] = {
1311  2, 5, 6, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 6, 5,
1312  5, 6, 7, 8, 7, 8, 9, 10, 0, 10, 9, 8, 7, 8, 7, 6,
1313  6, 7, 8, 9, 8, 9, 10, 10, 0, 10, 10, 9, 8, 9, 8, 7,
1314  7, 8, 9, 10, 9, 9, 10, 10, 0, 10, 10, 10, 9, 10, 9, 8,
1315  7, 8, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 7,
1316  8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8,
1317  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
1318  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1319  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1320  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1321  9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9,
1322  8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8,
1323  7, 7, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 8,
1324  7, 8, 9, 10, 9, 10, 10, 10, 0, 10, 10, 9, 9, 10, 9, 8,
1325  6, 7, 8, 9, 8, 9, 10, 10, 0, 10, 10, 9, 8, 9, 8, 7,
1326  5, 6, 7, 8, 7, 8, 9, 10, 0, 10, 9, 8, 7, 8, 7, 6,
1327 };
1328 
1329 static const uint16_t huff_spec_b43_codes[] = {
1330  0x001, 0x01E, 0x022, 0x018, 0x064, 0x0EC, 0x008, 0x100, 0x000, 0x101, 0x009, 0x0ED,
1331  0x065, 0x019, 0x023, 0x01F, 0x01A, 0x030, 0x056, 0x09A, 0x00A, 0x090, 0x12C, 0x0A6,
1332  0x000, 0x0A9, 0x12F, 0x093, 0x00F, 0x09F, 0x059, 0x039, 0x00E, 0x054, 0x0BC, 0x19E,
1333  0x082, 0x176, 0x0AC, 0x088, 0x000, 0x08B, 0x0AF, 0x19D, 0x095, 0x1D1, 0x0BF, 0x051,
1334  0x002, 0x098, 0x1D4, 0x0B8, 0x170, 0x046, 0x090, 0x060, 0x000, 0x067, 0x095, 0x0BD,
1335  0x173, 0x0B5, 0x1D3, 0x09D, 0x052, 0x0EE, 0x034, 0x174, 0x0BA, 0x09C, 0x080, 0x044,
1336  0x000, 0x047, 0x06D, 0x099, 0x0BF, 0x16F, 0x085, 0x001, 0x0CC, 0x036, 0x16C, 0x0B0,
1337  0x09A, 0x084, 0x04E, 0x03E, 0x000, 0x037, 0x04B, 0x06B, 0x0A1, 0x0B3, 0x16B, 0x087,
1338  0x1D6, 0x102, 0x0A4, 0x092, 0x068, 0x04C, 0x034, 0x030, 0x000, 0x02D, 0x03D, 0x049,
1339  0x083, 0x097, 0x0AB, 0x169, 0x0B6, 0x09E, 0x06E, 0x064, 0x040, 0x038, 0x02E, 0x02A,
1340  0x000, 0x029, 0x033, 0x03B, 0x043, 0x063, 0x087, 0x0A3, 0x000, 0x000, 0x000, 0x000,
1341  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1342  0x0B7, 0x0A2, 0x086, 0x062, 0x042, 0x03A, 0x032, 0x028, 0x000, 0x02B, 0x02F, 0x039,
1343  0x041, 0x065, 0x06F, 0x09F, 0x1D7, 0x168, 0x0AA, 0x096, 0x082, 0x048, 0x03C, 0x02C,
1344  0x000, 0x031, 0x035, 0x04D, 0x069, 0x093, 0x0A5, 0x103, 0x0CD, 0x086, 0x16A, 0x0B2,
1345  0x0A0, 0x06A, 0x04A, 0x036, 0x000, 0x03F, 0x04F, 0x085, 0x09B, 0x0B1, 0x16D, 0x037,
1346  0x053, 0x000, 0x084, 0x16E, 0x0BE, 0x098, 0x06C, 0x046, 0x000, 0x045, 0x081, 0x09D,
1347  0x0BB, 0x175, 0x035, 0x0EF, 0x003, 0x09C, 0x1D2, 0x0B4, 0x172, 0x0BC, 0x094, 0x066,
1348  0x000, 0x061, 0x091, 0x047, 0x171, 0x0B9, 0x1D5, 0x099, 0x00F, 0x050, 0x0BE, 0x1D0,
1349  0x094, 0x19C, 0x0AE, 0x08A, 0x000, 0x089, 0x0AD, 0x177, 0x083, 0x19F, 0x0BD, 0x055,
1350  0x01B, 0x038, 0x058, 0x09E, 0x00E, 0x092, 0x12E, 0x0A8, 0x000, 0x0A7, 0x12D, 0x091,
1351  0x00B, 0x09B, 0x057, 0x031,
1352 };
1353 
1354 static const uint8_t huff_spec_b44_bits[] = {
1355  2, 4, 6, 7, 7, 8, 10, 10, 0, 10, 10, 8, 7, 7, 6, 4,
1356  5, 5, 7, 8, 8, 10, 10, 10, 0, 10, 10, 10, 8, 8, 7, 5,
1357  6, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 7,
1358  8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8,
1359  8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8,
1360  9, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1361  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1362  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1363  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1364  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1365  10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1366  9, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10,
1367  8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8,
1368  8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8,
1369  6, 7, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7,
1370  5, 5, 7, 8, 8, 10, 10, 10, 0, 10, 10, 10, 8, 8, 7, 5,
1371 };
1372 
1373 static const uint16_t huff_spec_b44_codes[] = {
1374  0x002, 0x002, 0x030, 0x000, 0x002, 0x00C, 0x1D2, 0x1AE, 0x000, 0x1AF, 0x1D3, 0x00D,
1375  0x003, 0x001, 0x031, 0x003, 0x01E, 0x002, 0x070, 0x0C8, 0x07E, 0x1E8, 0x1C0, 0x176,
1376  0x000, 0x17F, 0x1C3, 0x1EB, 0x0CF, 0x0D3, 0x073, 0x009, 0x018, 0x06A, 0x0EC, 0x1DE,
1377  0x1A2, 0x1CA, 0x1AA, 0x164, 0x000, 0x16D, 0x1AD, 0x1D1, 0x1EF, 0x1DD, 0x0EB, 0x06D,
1378  0x0E8, 0x0CA, 0x1BE, 0x1CE, 0x1DA, 0x1B6, 0x170, 0x154, 0x000, 0x153, 0x173, 0x1B1,
1379  0x1D7, 0x1D5, 0x343, 0x0CD, 0x0DC, 0x078, 0x340, 0x1CC, 0x1BA, 0x1A8, 0x156, 0x148,
1380  0x000, 0x145, 0x15F, 0x1A1, 0x1BD, 0x1D9, 0x1ED, 0x07D, 0x1BC, 0x1DC, 0x1C4, 0x1B2,
1381  0x17C, 0x15A, 0x14A, 0x03A, 0x000, 0x039, 0x147, 0x16B, 0x17B, 0x1B5, 0x1C9, 0x1DF,
1382  0x1C6, 0x1B8, 0x1A2, 0x168, 0x160, 0x14C, 0x02E, 0x024, 0x000, 0x027, 0x03D, 0x151,
1383  0x15D, 0x16F, 0x1A7, 0x1BF, 0x1A4, 0x174, 0x162, 0x14E, 0x140, 0x02C, 0x02A, 0x022,
1384  0x000, 0x021, 0x029, 0x03F, 0x143, 0x159, 0x167, 0x179, 0x000, 0x000, 0x000, 0x000,
1385  0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
1386  0x1A5, 0x178, 0x166, 0x158, 0x142, 0x03E, 0x028, 0x020, 0x000, 0x023, 0x02B, 0x02D,
1387  0x141, 0x14F, 0x163, 0x175, 0x1C7, 0x1BE, 0x1A6, 0x16E, 0x15C, 0x150, 0x03C, 0x026,
1388  0x000, 0x025, 0x02F, 0x14D, 0x161, 0x169, 0x1A3, 0x1B9, 0x1BD, 0x1DE, 0x1C8, 0x1B4,
1389  0x17A, 0x16A, 0x146, 0x038, 0x000, 0x03B, 0x14B, 0x15B, 0x17D, 0x1B3, 0x1C5, 0x1DD,
1390  0x0DD, 0x07C, 0x1EC, 0x1D8, 0x1BC, 0x1A0, 0x15E, 0x144, 0x000, 0x149, 0x157, 0x1A9,
1391  0x1BB, 0x1CD, 0x341, 0x079, 0x0E9, 0x0CC, 0x342, 0x1D4, 0x1D6, 0x1B0, 0x172, 0x152,
1392  0x000, 0x155, 0x171, 0x1B7, 0x1DB, 0x1CF, 0x1BF, 0x0CB, 0x019, 0x06C, 0x0EA, 0x1DC,
1393  0x1EE, 0x1D0, 0x1AC, 0x16C, 0x000, 0x165, 0x1AB, 0x1CB, 0x1A3, 0x1DF, 0x0ED, 0x06B,
1394  0x01F, 0x008, 0x072, 0x0D2, 0x0CE, 0x1EA, 0x1C2, 0x17E, 0x000, 0x177, 0x1C1, 0x1E9,
1395  0x07F, 0x0C9, 0x071, 0x003,
1396 };
1397 
1398 static const uint8_t huff_spec_b52_bits[] = {
1399  3, 4, 4, 4, 5, 5, 6, 6, 5, 5, 5, 6, 6, 6, 7, 7,
1400  0, 7, 7, 6, 6, 6, 5, 5, 5, 6, 6, 5, 5, 4, 4, 4,
1401 };
1402 
1403 static const uint16_t huff_spec_b52_codes[] = {
1404  0x06, 0x0E, 0x06, 0x00, 0x0A, 0x04, 0x2C, 0x12, 0x14, 0x10, 0x06, 0x2E, 0x24, 0x10, 0x4E, 0x4C,
1405  0x00, 0x4D, 0x4F, 0x11, 0x25, 0x2F, 0x07, 0x11, 0x15, 0x13, 0x2D, 0x05, 0x0B, 0x01, 0x07, 0x0F,
1406 };
1407 
1408 static const uint8_t huff_spec_b53_bits[] = {
1409  2, 3, 4, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8,
1410  0, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 4, 3,
1411 };
1412 
1413 static const uint16_t huff_spec_b53_codes[] = {
1414  0x02, 0x00, 0x06, 0x1C, 0x18, 0x3E, 0x16, 0x10, 0x3C, 0x36, 0x14, 0x6A, 0x26, 0x24, 0xD2, 0xD0,
1415  0x00, 0xD1, 0xD3, 0x25, 0x27, 0x6B, 0x15, 0x37, 0x3D, 0x11, 0x17, 0x3F, 0x19, 0x1D, 0x07, 0x01,
1416 };
1417 
1418 static const uint8_t huff_spec_b54_bits[] = {
1419  2, 3, 4, 4, 5, 6, 6, 7, 6, 6, 7, 8, 8, 8, 9, 9,
1420  0, 9, 9, 8, 8, 8, 7, 6, 6, 7, 6, 6, 5, 4, 4, 3,
1421 };
1422 
1423 static const uint16_t huff_spec_b54_codes[] = {
1424  0x003, 0x002, 0x008, 0x000, 0x014, 0x02E, 0x00E, 0x05A, 0x00A, 0x008, 0x01A, 0x0B2,
1425  0x032, 0x030, 0x162, 0x160, 0x000, 0x161, 0x163, 0x031, 0x033, 0x0B3, 0x01B, 0x009,
1426  0x00B, 0x05B, 0x00F, 0x02F, 0x015, 0x001, 0x009, 0x003,
1427 };
1428 
1429 static const uint8_t huff_spec_b62_bits[] = {
1430  4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
1431  6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
1432  0, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6,
1433  6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4,
1434 };
1435 
1436 static const uint16_t huff_spec_b62_codes[] = {
1437  0x0D, 0x06, 0x1C, 0x14, 0x0A, 0x04, 0x3E, 0x2E, 0x22, 0x0E, 0x06, 0x00, 0x5A, 0x4E, 0x40, 0x20,
1438  0x30, 0x32, 0x24, 0x12, 0x0C, 0x02, 0x78, 0x58, 0x42, 0x22, 0x0A, 0x08, 0xF6, 0xF4, 0x9A, 0x98,
1439  0x00, 0x99, 0x9B, 0xF5, 0xF7, 0x09, 0x0B, 0x23, 0x43, 0x59, 0x79, 0x03, 0x0D, 0x13, 0x25, 0x33,
1440  0x31, 0x21, 0x41, 0x4F, 0x5B, 0x01, 0x07, 0x0F, 0x23, 0x2F, 0x3F, 0x05, 0x0B, 0x15, 0x1D, 0x07,
1441 };
1442 
1443 static const uint8_t huff_spec_b63_bits[] = {
1444  3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
1445  6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
1446  0, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6,
1447  6, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4,
1448 };
1449 
1450 static const uint16_t huff_spec_b63_codes[] = {
1451  0x006, 0x00E, 0x004, 0x014, 0x010, 0x006, 0x000, 0x026, 0x01C, 0x018, 0x004, 0x05C,
1452  0x04A, 0x03C, 0x016, 0x0BC, 0x006, 0x008, 0x058, 0x03E, 0x036, 0x014, 0x0B6, 0x0B4,
1453  0x090, 0x068, 0x17E, 0x17C, 0x126, 0x124, 0x0D6, 0x0D4, 0x000, 0x0D5, 0x0D7, 0x125,
1454  0x127, 0x17D, 0x17F, 0x069, 0x091, 0x0B5, 0x0B7, 0x015, 0x037, 0x03F, 0x059, 0x009,
1455  0x007, 0x0BD, 0x017, 0x03D, 0x04B, 0x05D, 0x005, 0x019, 0x01D, 0x027, 0x001, 0x007,
1456  0x011, 0x015, 0x005, 0x00F,
1457 };
1458 
1459 static const uint8_t huff_spec_b64_bits[] = {
1460  3, 3, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8,
1461  7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1462  0, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 7, 7,
1463  7, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 3,
1464 };
1465 
1466 static const uint16_t huff_spec_b64_codes[] = {
1467  0x007, 0x000, 0x008, 0x01A, 0x014, 0x00C, 0x032, 0x02E, 0x01E, 0x014, 0x062, 0x05A,
1468  0x03A, 0x026, 0x020, 0x0B2, 0x038, 0x02C, 0x022, 0x0C0, 0x05E, 0x04A, 0x186, 0x184,
1469  0x160, 0x0BA, 0x092, 0x090, 0x2C6, 0x2C4, 0x172, 0x170, 0x000, 0x171, 0x173, 0x2C5,
1470  0x2C7, 0x091, 0x093, 0x0BB, 0x161, 0x185, 0x187, 0x04B, 0x05F, 0x0C1, 0x023, 0x02D,
1471  0x039, 0x0B3, 0x021, 0x027, 0x03B, 0x05B, 0x063, 0x015, 0x01F, 0x02F, 0x033, 0x00D,
1472  0x015, 0x01B, 0x009, 0x001,
1473 };
1474 
1475 static const uint8_t huff_spec_b72_bits[] = {
1476  5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
1477  7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1478  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
1479  8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1480  0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8,
1481  8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1482  7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7,
1483  7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
1484 };
1485 
1486 static const uint16_t huff_spec_b72_codes[] = {
1487  0x01E, 0x016, 0x00C, 0x000, 0x038, 0x032, 0x028, 0x022, 0x01C, 0x012, 0x00E, 0x006,
1488  0x076, 0x06C, 0x060, 0x04E, 0x03E, 0x02A, 0x022, 0x01A, 0x012, 0x00A, 0x0FC, 0x0DC,
1489  0x0C6, 0x0A8, 0x094, 0x086, 0x058, 0x042, 0x040, 0x02A, 0x068, 0x07C, 0x06A, 0x056,
1490  0x048, 0x040, 0x02E, 0x028, 0x016, 0x010, 0x008, 0x0EA, 0x0DE, 0x0AA, 0x09A, 0x096,
1491  0x07A, 0x078, 0x05A, 0x032, 0x030, 0x028, 0x1FE, 0x1FC, 0x1D2, 0x1D0, 0x18A, 0x188,
1492  0x132, 0x130, 0x10A, 0x108, 0x000, 0x109, 0x10B, 0x131, 0x133, 0x189, 0x18B, 0x1D1,
1493  0x1D3, 0x1FD, 0x1FF, 0x029, 0x031, 0x033, 0x05B, 0x079, 0x07B, 0x097, 0x09B, 0x0AB,
1494  0x0DF, 0x0EB, 0x009, 0x011, 0x017, 0x029, 0x02F, 0x041, 0x049, 0x057, 0x06B, 0x07D,
1495  0x069, 0x02B, 0x041, 0x043, 0x059, 0x087, 0x095, 0x0A9, 0x0C7, 0x0DD, 0x0FD, 0x00B,
1496  0x013, 0x01B, 0x023, 0x02B, 0x03F, 0x04F, 0x061, 0x06D, 0x077, 0x007, 0x00F, 0x013,
1497  0x01D, 0x023, 0x029, 0x033, 0x039, 0x001, 0x00D, 0x017,
1498 };
1499 
1500 static const uint8_t huff_spec_b73_bits[] = {
1501  3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
1502  7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
1503  8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
1504  9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1505  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9,
1506  9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7,
1507  8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
1508  7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 4,
1509 };
1510 
1511 static const uint16_t huff_spec_b73_codes[] = {
1512  0x000, 0x006, 0x018, 0x010, 0x004, 0x03A, 0x034, 0x02A, 0x026, 0x014, 0x010, 0x07E,
1513  0x072, 0x06E, 0x05C, 0x052, 0x04A, 0x02C, 0x024, 0x018, 0x0F4, 0x0E0, 0x0DA, 0x0B6,
1514  0x0B2, 0x0A0, 0x05E, 0x04E, 0x038, 0x034, 0x1E6, 0x1B2, 0x0FA, 0x01E, 0x0F8, 0x0F0,
1515  0x0BE, 0x0B4, 0x0A2, 0x090, 0x04C, 0x03A, 0x1EE, 0x1E4, 0x1C6, 0x1B0, 0x178, 0x162,
1516  0x126, 0x124, 0x0B8, 0x06C, 0x3DA, 0x3D8, 0x38A, 0x388, 0x2F6, 0x2F4, 0x2C2, 0x2C0,
1517  0x176, 0x174, 0x0DC, 0x0DE, 0x000, 0x0DF, 0x0DD, 0x175, 0x177, 0x2C1, 0x2C3, 0x2F5,
1518  0x2F7, 0x389, 0x38B, 0x3D9, 0x3DB, 0x06D, 0x0B9, 0x125, 0x127, 0x163, 0x179, 0x1B1,
1519  0x1C7, 0x1E5, 0x1EF, 0x03B, 0x04D, 0x091, 0x0A3, 0x0B5, 0x0BF, 0x0F1, 0x0F9, 0x01F,
1520  0x0FB, 0x1B3, 0x1E7, 0x035, 0x039, 0x04F, 0x05F, 0x0A1, 0x0B3, 0x0B7, 0x0DB, 0x0E1,
1521  0x0F5, 0x019, 0x025, 0x02D, 0x04B, 0x053, 0x05D, 0x06F, 0x073, 0x07F, 0x011, 0x015,
1522  0x027, 0x02B, 0x035, 0x03B, 0x005, 0x011, 0x019, 0x007,
1523 };
1524 
1525 static const uint8_t huff_spec_b74_bits[] = {
1526  3, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
1527  7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
1528  8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1529  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1530  0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1531  10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8,
1532  8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
1533  7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4,
1534 };
1535 
1536 static const uint16_t huff_spec_b74_codes[] = {
1537  0x001, 0x008, 0x01E, 0x018, 0x00C, 0x002, 0x03A, 0x034, 0x02C, 0x01E, 0x016, 0x012,
1538  0x072, 0x06E, 0x05E, 0x056, 0x050, 0x038, 0x022, 0x004, 0x0E2, 0x0DA, 0x0BA, 0x0A8,
1539  0x076, 0x054, 0x050, 0x002, 0x000, 0x1C0, 0x1B0, 0x156, 0x0A4, 0x0A6, 0x074, 0x052,
1540  0x004, 0x1C2, 0x1B2, 0x170, 0x154, 0x0AE, 0x0AC, 0x086, 0x2E6, 0x2E4, 0x10A, 0x108,
1541  0x106, 0x104, 0x102, 0x100, 0x03E, 0x03A, 0x03C, 0x038, 0x036, 0x034, 0x032, 0x030,
1542  0x01E, 0x01A, 0x01C, 0x018, 0x000, 0x019, 0x01D, 0x01B, 0x01F, 0x031, 0x033, 0x035,
1543  0x037, 0x039, 0x03D, 0x03B, 0x03F, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x2E5,
1544  0x2E7, 0x087, 0x0AD, 0x0AF, 0x155, 0x171, 0x1B3, 0x1C3, 0x005, 0x053, 0x075, 0x0A7,
1545  0x0A5, 0x157, 0x1B1, 0x1C1, 0x001, 0x003, 0x051, 0x055, 0x077, 0x0A9, 0x0BB, 0x0DB,
1546  0x0E3, 0x005, 0x023, 0x039, 0x051, 0x057, 0x05F, 0x06F, 0x073, 0x013, 0x017, 0x01F,
1547  0x02D, 0x035, 0x03B, 0x003, 0x00D, 0x019, 0x01F, 0x009,
1548 };
1549 
1550 static const HuffmanCodebook at9_huffman_coeffs[][8][4] = {
1551  {
1552  { { 0 } },
1553  { { 0 } },
1554  {
1555  { huff_spec_a21_bits, huff_spec_a21_codes, 16, 2, 1, 2, 3, },
1556  { huff_spec_a22_bits, huff_spec_a22_codes, 256, 4, 2, 2, 8, },
1557  { huff_spec_a23_bits, huff_spec_a23_codes, 256, 4, 2, 2, 9, },
1558  { huff_spec_a24_bits, huff_spec_a24_codes, 256, 4, 2, 2, 10, },
1559  },
1560  {
1561  { huff_spec_a31_bits, huff_spec_a31_codes, 64, 2, 1, 3, 7, },
1562  { huff_spec_a32_bits, huff_spec_a32_codes, 64, 2, 1, 3, 7, },
1563  { huff_spec_a33_bits, huff_spec_a33_codes, 64, 2, 1, 3, 8, },
1564  { huff_spec_a34_bits, huff_spec_a34_codes, 64, 2, 1, 3, 10, },
1565  },
1566  {
1567  { huff_spec_a41_bits, huff_spec_a41_codes, 256, 2, 1, 4, 9, },
1568  { huff_spec_a42_bits, huff_spec_a42_codes, 256, 2, 1, 4, 10, },
1569  { huff_spec_a43_bits, huff_spec_a43_codes, 256, 2, 1, 4, 10, },
1570  { huff_spec_a44_bits, huff_spec_a44_codes, 256, 2, 1, 4, 10, },
1571  },
1572  {
1573  { huff_spec_a51_bits, huff_spec_a51_codes, 32, 1, 0, 5, 6, },
1574  { huff_spec_a52_bits, huff_spec_a52_codes, 32, 1, 0, 5, 6, },
1575  { huff_spec_a53_bits, huff_spec_a53_codes, 32, 1, 0, 5, 7, },
1576  { huff_spec_a54_bits, huff_spec_a54_codes, 32, 1, 0, 5, 8, },
1577  },
1578  {
1579  { huff_spec_a61_bits, huff_spec_a61_codes, 64, 1, 0, 6, 7, },
1580  { huff_spec_a62_bits, huff_spec_a62_codes, 64, 1, 0, 6, 7, },
1581  { huff_spec_a63_bits, huff_spec_a63_codes, 64, 1, 0, 6, 8, },
1582  { huff_spec_a64_bits, huff_spec_a64_codes, 64, 1, 0, 6, 9, },
1583  },
1584  {
1585  { huff_spec_a71_bits, huff_spec_a71_codes, 128, 1, 0, 7, 8, },
1586  { huff_spec_a72_bits, huff_spec_a72_codes, 128, 1, 0, 7, 8, },
1587  { huff_spec_a73_bits, huff_spec_a73_codes, 128, 1, 0, 7, 9, },
1588  { huff_spec_a74_bits, huff_spec_a74_codes, 128, 1, 0, 7, 10, },
1589  },
1590  },
1591  {
1592  { { 0 } },
1593  { { 0 } },
1594  {
1595  { 0 },
1596  { huff_spec_b22_bits, huff_spec_b22_codes, 256, 4, 2, 2, 10, },
1597  { huff_spec_b23_bits, huff_spec_b23_codes, 256, 4, 2, 2, 10, },
1598  { huff_spec_b24_bits, huff_spec_b24_codes, 256, 4, 2, 2, 10, },
1599  },
1600  {
1601  { 0 },
1602  { huff_spec_b32_bits, huff_spec_b32_codes, 64, 2, 1, 3, 9, },
1603  { huff_spec_b33_bits, huff_spec_b33_codes, 64, 2, 1, 3, 10, },
1604  { huff_spec_b34_bits, huff_spec_b34_codes, 64, 2, 1, 3, 10, },
1605  },
1606  {
1607  { 0 },
1608  { huff_spec_b42_bits, huff_spec_b42_codes, 256, 2, 1, 4, 10, },
1609  { huff_spec_b43_bits, huff_spec_b43_codes, 256, 2, 1, 4, 10, },
1610  { huff_spec_b44_bits, huff_spec_b44_codes, 256, 2, 1, 4, 10, },
1611  },
1612  {
1613  { 0 },
1614  { huff_spec_b52_bits, huff_spec_b52_codes, 32, 1, 0, 5, 7, },
1615  { huff_spec_b53_bits, huff_spec_b53_codes, 32, 1, 0, 5, 8, },
1616  { huff_spec_b54_bits, huff_spec_b54_codes, 32, 1, 0, 5, 9, },
1617  },
1618  {
1619  { 0 },
1620  { huff_spec_b62_bits, huff_spec_b62_codes, 64, 1, 0, 6, 8, },
1621  { huff_spec_b63_bits, huff_spec_b63_codes, 64, 1, 0, 6, 9, },
1622  { huff_spec_b64_bits, huff_spec_b64_codes, 64, 1, 0, 6, 10, },
1623  },
1624  {
1625  { 0 },
1626  { huff_spec_b72_bits, huff_spec_b72_codes, 128, 1, 0, 7, 9, },
1627  { huff_spec_b73_bits, huff_spec_b73_codes, 128, 1, 0, 7, 10, },
1628  { huff_spec_b74_bits, huff_spec_b74_codes, 128, 1, 0, 7, 10, },
1629  },
1630  },
1631 };
1632 
1633 #endif /* AVCODEC_ATRAC9TAB_H */
static const uint8_t huff_spec_a33_bits[]
Definition: atrac9tab.h:677
static const uint16_t huff_spec_a53_codes[]
Definition: atrac9tab.h:910
static const uint8_t huff_spec_b54_bits[]
Definition: atrac9tab.h:1418
static const uint8_t huff_spec_a64_bits[]
Definition: atrac9tab.h:975
static const uint8_t at9_tab_sri_max_bands[]
Definition: atrac9tab.h:125
static const uint8_t huff_spec_b22_bits[]
Definition: atrac9tab.h:1086
static const uint16_t huff_spec_b22_codes[]
Definition: atrac9tab.h:1105
#define AV_CH_LAYOUT_7POINT1
static const uint8_t huff_spec_a62_bits[]
Definition: atrac9tab.h:943
static const uint16_t huff_spec_b73_codes[]
Definition: atrac9tab.h:1511
static const uint16_t huff_spec_b62_codes[]
Definition: atrac9tab.h:1436
static const uint16_t huff_spec_a51_codes[]
Definition: atrac9tab.h:888
static const uint8_t huff_spec_a73_bits[]
Definition: atrac9tab.h:1036
static const uint8_t huff_sfb_a5_bits[]
Definition: atrac9tab.h:422
static const uint16_t huff_spec_a32_codes[]
Definition: atrac9tab.h:670
static const uint8_t huff_spec_b72_bits[]
Definition: atrac9tab.h:1475
static const uint16_t huff_spec_a21_codes[]
Definition: atrac9tab.h:518
static const uint16_t huff_spec_a31_codes[]
Definition: atrac9tab.h:656
static const uint16_t huff_spec_a22_codes[]
Definition: atrac9tab.h:542
static const uint8_t huff_spec_a52_bits[]
Definition: atrac9tab.h:894
static const uint16_t huff_sfb_a6_codes[]
Definition: atrac9tab.h:440
static const uint16_t huff_sfb_b5_codes[]
Definition: atrac9tab.h:479
#define AV_CH_LAYOUT_STEREO
static const uint16_t huff_sfb_a1_codes[]
Definition: atrac9tab.h:393
static const uint16_t huff_spec_a42_codes[]
Definition: atrac9tab.h:770
static const uint16_t huff_sfb_a3_codes[]
Definition: atrac9tab.h:409
static const uint8_t huff_spec_b74_bits[]
Definition: atrac9tab.h:1525
static const uint16_t huff_sfb_b4_codes[]
Definition: atrac9tab.h:469
static const float at9_band_ext_scales_m4[]
Definition: atrac9tab.h:314
uint64_t channel_layout
Definition: atrac9tab.h:36
static const uint16_t huff_spec_b53_codes[]
Definition: atrac9tab.h:1413
const int max_bit_size
Definition: atrac9tab.h:492
static const HuffmanCodebook at9_huffman_coeffs[][8][4]
Definition: atrac9tab.h:1550
static const uint16_t huff_spec_a33_codes[]
Definition: atrac9tab.h:684
static const uint8_t huff_spec_b43_bits[]
Definition: atrac9tab.h:1310
static const int at9_tab_samplerates[]
Definition: atrac9tab.h:129
uint8_t
static const uint8_t huff_spec_b52_bits[]
Definition: atrac9tab.h:1398
static const uint8_t huff_sfb_a6_bits[]
Definition: atrac9tab.h:433
#define f(width, name)
Definition: cbs_vp9.c:255
static const uint16_t huff_sfb_b2_codes[]
Definition: atrac9tab.h:453
static const uint8_t huff_spec_b33_bits[]
Definition: atrac9tab.h:1234
static const uint16_t huff_spec_b54_codes[]
Definition: atrac9tab.h:1423
static const uint16_t huff_spec_b72_codes[]
Definition: atrac9tab.h:1486
static const uint8_t at9_tab_sf_weights[][32]
Definition: atrac9tab.h:348
static const uint16_t huff_spec_a72_codes[]
Definition: atrac9tab.h:1025
static const uint16_t huff_spec_a23_codes[]
Definition: atrac9tab.h:580
static const uint16_t huff_spec_b34_codes[]
Definition: atrac9tab.h:1257
static const float at9_quant_step_fine[]
Definition: atrac9tab.h:328
static const uint16_t huff_spec_a64_codes[]
Definition: atrac9tab.h:982
#define AV_CH_LAYOUT_5POINT1
static const uint8_t huff_spec_b53_bits[]
Definition: atrac9tab.h:1408
const uint8_t * bits
Definition: atrac9tab.h:486
static const uint8_t huff_spec_b23_bits[]
Definition: atrac9tab.h:1130
static const uint16_t huff_spec_a61_codes[]
Definition: atrac9tab.h:934
static const uint8_t huff_spec_a51_bits[]
Definition: atrac9tab.h:883
static const uint8_t at9_tab_band_q_unit_map[]
Definition: atrac9tab.h:106
static const uint16_t huff_spec_a43_codes[]
Definition: atrac9tab.h:814
static const uint8_t huff_sfb_b5_bits[]
Definition: atrac9tab.h:474
const uint8_t at9_q_unit_to_codebookidx[]
Definition: atrac9tab.h:120
#define AV_CH_LAYOUT_QUAD
static const uint16_t huff_spec_a44_codes[]
Definition: atrac9tab.h:858
static const uint8_t huff_sfb_b2_bits[]
Definition: atrac9tab.h:449
const int size
Definition: atrac9tab.h:488
static const uint8_t huff_spec_a21_bits[]
Definition: atrac9tab.h:514
static const uint8_t huff_sfb_b3_bits[]
Definition: atrac9tab.h:457
static const uint8_t huff_spec_b44_bits[]
Definition: atrac9tab.h:1354
static const uint8_t huff_sfb_a2_bits[]
Definition: atrac9tab.h:397
static const uint16_t huff_spec_a63_codes[]
Definition: atrac9tab.h:966
static const uint8_t huff_spec_a42_bits[]
Definition: atrac9tab.h:751
static const uint8_t huff_spec_a24_bits[]
Definition: atrac9tab.h:605
static const uint8_t huff_spec_a22_bits[]
Definition: atrac9tab.h:523
static const uint8_t huff_spec_a32_bits[]
Definition: atrac9tab.h:663
static const uint16_t huff_sfb_a2_codes[]
Definition: atrac9tab.h:401
static const uint16_t huff_spec_a41_codes[]
Definition: atrac9tab.h:726
audio channel layout utility functions
static const uint8_t huff_spec_a31_bits[]
Definition: atrac9tab.h:649
static const uint8_t huff_spec_b62_bits[]
Definition: atrac9tab.h:1429
static const uint16_t huff_spec_b23_codes[]
Definition: atrac9tab.h:1149
static const float at9_band_ext_scales_m0[][5][32]
Definition: atrac9tab.h:197
static const uint8_t huff_spec_a34_bits[]
Definition: atrac9tab.h:691
static const uint16_t huff_spec_a52_codes[]
Definition: atrac9tab.h:899
static const float at9_scalefactor_c[]
Definition: atrac9tab.h:337
static const uint16_t huff_spec_a24_codes[]
Definition: atrac9tab.h:624
static const uint8_t huff_spec_b34_bits[]
Definition: atrac9tab.h:1250
static const uint16_t huff_sfb_b3_codes[]
Definition: atrac9tab.h:461
static const uint8_t huff_spec_b73_bits[]
Definition: atrac9tab.h:1500
static const uint16_t huff_sfb_a4_codes[]
Definition: atrac9tab.h:417
static const uint16_t huff_spec_b52_codes[]
Definition: atrac9tab.h:1403
static const uint8_t huff_spec_b63_bits[]
Definition: atrac9tab.h:1443
static const uint16_t huff_spec_b43_codes[]
Definition: atrac9tab.h:1329
static const uint16_t huff_spec_a71_codes[]
Definition: atrac9tab.h:1003
static const uint16_t huff_spec_a62_codes[]
Definition: atrac9tab.h:950
static const uint16_t huff_spec_b44_codes[]
Definition: atrac9tab.h:1373
static const uint8_t huff_spec_b32_bits[]
Definition: atrac9tab.h:1218
static const uint16_t huff_spec_b33_codes[]
Definition: atrac9tab.h:1241
const int value_bits
Definition: atrac9tab.h:491
static const uint8_t huff_spec_a53_bits[]
Definition: atrac9tab.h:905
static const uint16_t huff_spec_b64_codes[]
Definition: atrac9tab.h:1466
static const uint8_t huff_sfb_a4_bits[]
Definition: atrac9tab.h:413
const int value_cnt_pow
Definition: atrac9tab.h:490
static const uint16_t huff_spec_b74_codes[]
Definition: atrac9tab.h:1536
static const uint8_t huff_spec_a74_bits[]
Definition: atrac9tab.h:1061
GLint GLenum type
Definition: opengl_enc.c:105
static const uint8_t at9_q_unit_to_coeff_cnt[]
Definition: atrac9tab.h:110
static const uint8_t huff_spec_b42_bits[]
Definition: atrac9tab.h:1266
static const uint8_t huff_spec_b24_bits[]
Definition: atrac9tab.h:1174
static const uint8_t huff_spec_a43_bits[]
Definition: atrac9tab.h:795
static const uint8_t huff_sfb_b4_bits[]
Definition: atrac9tab.h:465
static const uint8_t huff_spec_a41_bits[]
Definition: atrac9tab.h:707
static const uint8_t at9_tab_band_ext_group[][3]
Definition: atrac9tab.h:143
static const uint8_t at9_tab_band_ext_cnt[][6]
Definition: atrac9tab.h:134
static const uint8_t huff_spec_a44_bits[]
Definition: atrac9tab.h:839
static const float at9_band_ext_scales_m2[]
Definition: atrac9tab.h:284
static const uint8_t huff_spec_a23_bits[]
Definition: atrac9tab.h:561
static const float at9_quant_step_coarse[]
Definition: atrac9tab.h:319
static const uint16_t huff_spec_a34_codes[]
Definition: atrac9tab.h:698
static const HuffmanCodebook at9_huffman_sf_unsigned[]
Definition: atrac9tab.h:495
static const uint8_t huff_spec_b64_bits[]
Definition: atrac9tab.h:1459
const int value_cnt
Definition: atrac9tab.h:489
static const uint8_t huff_spec_a54_bits[]
Definition: atrac9tab.h:916
static const uint8_t at9_tab_sri_frame_log2[]
Definition: atrac9tab.h:102
int plane_map[5][2]
Definition: atrac9tab.h:38
static const float at9_band_ext_scales_m3[][2]
Definition: atrac9tab.h:303
const uint16_t * codes
Definition: atrac9tab.h:487
static const uint8_t huff_sfb_a3_bits[]
Definition: atrac9tab.h:405
static const uint16_t huff_spec_b42_codes[]
Definition: atrac9tab.h:1285
static const uint16_t huff_sfb_a5_codes[]
Definition: atrac9tab.h:427
static const HuffmanCodebook at9_huffman_sf_signed[]
Definition: atrac9tab.h:505
static const uint8_t huff_sfb_a1_bits[]
Definition: atrac9tab.h:389
static const uint8_t huff_spec_a72_bits[]
Definition: atrac9tab.h:1014
static const uint16_t huff_spec_a54_codes[]
Definition: atrac9tab.h:921
static const ATRAC9BlockConfig at9_block_layout[]
Definition: atrac9tab.h:42
static const uint8_t at9_tab_b_dist[]
Definition: atrac9tab.h:383
static const uint16_t huff_spec_a73_codes[]
Definition: atrac9tab.h:1047
static const uint16_t huff_spec_b24_codes[]
Definition: atrac9tab.h:1193
static const uint16_t huff_spec_b63_codes[]
Definition: atrac9tab.h:1450
static const uint8_t huff_spec_a71_bits[]
Definition: atrac9tab.h:992
static const uint16_t huff_spec_a74_codes[]
Definition: atrac9tab.h:1072
#define AV_CH_LAYOUT_MONO
ATRAC9BlockType
Definition: atrac9tab.h:29
static const uint8_t huff_spec_a61_bits[]
Definition: atrac9tab.h:927
static const uint16_t huff_spec_b32_codes[]
Definition: atrac9tab.h:1225
static const int at9_q_unit_to_coeff_idx[]
Definition: atrac9tab.h:115
static const uint8_t at9_tab_band_ext_lengths[][6][4]
Definition: atrac9tab.h:154
static const uint8_t huff_spec_a63_bits[]
Definition: atrac9tab.h:959