First draft of the wma decoder.
[paraslash.git] / wmadata.h
1 /*
2  * WMA compatible decoder
3  * copyright (c) 2002 The FFmpeg Project
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 /**
23  * \file wmadata.h Various WMA tables.
24  */
25
26 struct coef_vlc_table {
27         /** Total number of codes. */
28         int n;
29         /** Number of levels. */
30         int max_level;
31         /** VLC bit values. */
32         const uint32_t *huffcodes;
33         /** VLC bit size. */
34         const uint8_t *huffbits;
35         /* Table to build run/level tables. */
36         const uint16_t *levels;
37 };
38
39 static const uint16_t wma_critical_freqs[25] = {
40         100, 200, 300, 400, 510, 630, 770, 920,
41         1080, 1270, 1480, 1720, 2000, 2320, 2700, 3150,
42         3700, 4400, 5300, 6400, 7700, 9500, 12000, 15500,
43         24500,
44 };
45
46 /* first value is number of bands */
47 static const uint8_t exponent_band_22050[3][25] = {
48         {10, 4, 8, 4, 8, 8, 12, 20, 24, 24, 16,},
49         {14, 4, 8, 8, 4, 12, 12, 16, 24, 16, 20, 24, 32, 40, 36,},
50         {23, 4, 4, 4, 8, 4, 4, 8, 8, 8, 8, 8, 12, 12, 16, 16, 24, 24, 32, 44,
51                 48, 60, 84, 72,},
52 };
53
54 static const uint8_t exponent_band_32000[3][25] = {
55         {11, 4, 4, 8, 4, 4, 12, 16, 24, 20, 28, 4,},
56         {15, 4, 8, 4, 4, 8, 8, 16, 20, 12, 20, 20, 28, 40, 56, 8,},
57         {16, 8, 4, 8, 8, 12, 16, 20, 24, 40, 32, 32, 44, 56, 80, 112, 16,},
58 };
59
60 static const uint8_t exponent_band_44100[3][25] = {
61         {12, 4, 4, 4, 4, 4, 8, 8, 8, 12, 16, 20, 36,},
62         {15, 4, 8, 4, 8, 8, 4, 8, 8, 12, 12, 12, 24, 28, 40, 76,},
63         {17, 4, 8, 8, 4, 12, 12, 8, 8, 24, 16, 20, 24, 32, 40, 60, 80, 152,},
64 };
65
66 const uint16_t ff_wma_hgain_huffcodes[37] = {
67         0x00003, 0x002e7, 0x00001, 0x005cd, 0x0005d, 0x005c9, 0x0005e, 0x00003,
68         0x00016, 0x0000b, 0x00001, 0x00006, 0x00001, 0x00006, 0x00004, 0x00005,
69         0x00004, 0x00007, 0x00003, 0x00007, 0x00004, 0x0000a, 0x0000a, 0x00002,
70         0x00003, 0x00000, 0x00005, 0x00002, 0x0005f, 0x00004, 0x00003, 0x00002,
71         0x005c8, 0x000b8, 0x005ca, 0x005cb, 0x005cc,
72 };
73
74 const uint8_t ff_wma_hgain_huffbits[37] = {
75         10, 12, 10, 13, 9, 13, 9, 8,
76         7, 5, 5, 4, 4, 3, 3, 3,
77         4, 3, 4, 4, 5, 5, 6, 8,
78         7, 10, 8, 10, 9, 8, 9, 9,
79         13, 10, 13, 13, 13,
80 };
81
82 #define NB_LSP_COEFS 10
83
84 const float ff_wma_lsp_codebook[NB_LSP_COEFS][16] = {
85         {1.98732877, 1.97944528, 1.97179088, 1.96260549, 1.95038374, 1.93336114,
86          1.90719232, 1.86191415,},
87         {1.97260000, 1.96083160, 1.94982586, 1.93806164, 1.92516608, 1.91010199,
88          1.89232331, 1.87149812,
89          1.84564818, 1.81358067, 1.77620070, 1.73265264, 1.67907855, 1.60959081,
90          1.50829650, 1.33120330,},
91         {1.90109110, 1.86482426, 1.83419671, 1.80168452, 1.76650116, 1.72816320,
92          1.68502700, 1.63738256,
93          1.58501580, 1.51795181, 1.43679906, 1.33950585, 1.24176208, 1.12260729,
94          0.96749668, 0.74048265,},
95         {1.76943864, 1.67822463, 1.59946365, 1.53560582, 1.47470796, 1.41210167,
96          1.34509536, 1.27339507,
97          1.19303814, 1.09765169, 0.98818722, 0.87239446, 0.74369172, 0.59768184,
98          0.43168630, 0.17977021,},
99         {1.43428349, 1.32038354, 1.21074086, 1.10577988, 1.00561746, 0.90335924,
100          0.80437489, 0.70709671,
101          0.60427395, 0.49814048, 0.38509539, 0.27106800, 0.14407416, 0.00219910,
102          -0.16725141, -0.36936085,},
103         {0.99895687, 0.84188166, 0.70753739, 0.57906595, 0.47055563, 0.36966965,
104          0.26826648, 0.17163380,
105          0.07208392, -0.03062936, -1.40037388, -0.25128968, -0.37213937,
106          -0.51075646, -0.64887512, -0.80308031,},
107         {0.26515280, 0.06313551, -0.08872080, -0.21103548, -0.31069678,
108          -0.39680323, -0.47223474, -0.54167135,
109          -0.61444740, -0.68943343, -0.76580211, -0.85170082, -0.95289061,
110          -1.06514703, -1.20510707, -1.37617746,},
111         {-0.53940301, -0.73770929, -0.88424876, -1.01117930, -1.13389091,
112          -1.26830073, -1.42041987, -1.62033919,
113          -1.10158808, -1.16512566, -1.23337128, -1.30414401, -1.37663312,
114          -1.46853845, -1.57625798, -1.66893638,},
115         {-0.38601997, -0.56009350, -0.66978483, -0.76028471, -0.83846064,
116          -0.90868087, -0.97408881, -1.03694962,},
117         {-1.56144989, -1.65944032, -1.72689685, -1.77857740, -1.82203011,
118          -1.86220079, -1.90283983, -1.94820479,},
119 };
120
121 const uint32_t ff_wma_scale_huffcodes[121] = {
122         0x3ffe8, 0x3ffe6, 0x3ffe7, 0x3ffe5, 0x7fff5, 0x7fff1, 0x7ffed, 0x7fff6,
123         0x7ffee, 0x7ffef, 0x7fff0, 0x7fffc, 0x7fffd, 0x7ffff, 0x7fffe, 0x7fff7,
124         0x7fff8, 0x7fffb, 0x7fff9, 0x3ffe4, 0x7fffa, 0x3ffe3, 0x1ffef, 0x1fff0,
125         0x0fff5, 0x1ffee, 0x0fff2, 0x0fff3, 0x0fff4, 0x0fff1, 0x07ff6, 0x07ff7,
126         0x03ff9, 0x03ff5, 0x03ff7, 0x03ff3, 0x03ff6, 0x03ff2, 0x01ff7, 0x01ff5,
127         0x00ff9, 0x00ff7, 0x00ff6, 0x007f9, 0x00ff4, 0x007f8, 0x003f9, 0x003f7,
128         0x003f5, 0x001f8, 0x001f7, 0x000fa, 0x000f8, 0x000f6, 0x00079, 0x0003a,
129         0x00038, 0x0001a, 0x0000b, 0x00004, 0x00000, 0x0000a, 0x0000c, 0x0001b,
130         0x00039, 0x0003b, 0x00078, 0x0007a, 0x000f7, 0x000f9, 0x001f6, 0x001f9,
131         0x003f4, 0x003f6, 0x003f8, 0x007f5, 0x007f4, 0x007f6, 0x007f7, 0x00ff5,
132         0x00ff8, 0x01ff4, 0x01ff6, 0x01ff8, 0x03ff8, 0x03ff4, 0x0fff0, 0x07ff4,
133         0x0fff6, 0x07ff5, 0x3ffe2, 0x7ffd9, 0x7ffda, 0x7ffdb, 0x7ffdc, 0x7ffdd,
134         0x7ffde, 0x7ffd8, 0x7ffd2, 0x7ffd3, 0x7ffd4, 0x7ffd5, 0x7ffd6, 0x7fff2,
135         0x7ffdf, 0x7ffe7, 0x7ffe8, 0x7ffe9, 0x7ffea, 0x7ffeb, 0x7ffe6, 0x7ffe0,
136         0x7ffe1, 0x7ffe2, 0x7ffe3, 0x7ffe4, 0x7ffe5, 0x7ffd7, 0x7ffec, 0x7fff4,
137         0x7fff3,
138 };
139
140 const uint8_t ff_wma_scale_huffbits[121] = {
141         18, 18, 18, 18, 19, 19, 19, 19,
142         19, 19, 19, 19, 19, 19, 19, 19,
143         19, 19, 19, 18, 19, 18, 17, 17,
144         16, 17, 16, 16, 16, 16, 15, 15,
145         14, 14, 14, 14, 14, 14, 13, 13,
146         12, 12, 12, 11, 12, 11, 10, 10,
147         10, 9, 9, 8, 8, 8, 7, 6,
148         6, 5, 4, 3, 1, 4, 4, 5,
149         6, 6, 7, 7, 8, 8, 9, 9,
150         10, 10, 10, 11, 11, 11, 11, 12,
151         12, 13, 13, 13, 14, 14, 16, 15,
152         16, 15, 18, 19, 19, 19, 19, 19,
153         19, 19, 19, 19, 19, 19, 19, 19,
154         19, 19, 19, 19, 19, 19, 19, 19,
155         19, 19, 19, 19, 19, 19, 19, 19,
156         19,
157 };
158
159 static const uint32_t coef0_huffcodes[666] = {
160         0x00258, 0x0003d, 0x00000, 0x00005, 0x00008, 0x00008, 0x0000c, 0x0001b,
161         0x0001f, 0x00015, 0x00024, 0x00032, 0x0003a, 0x00026, 0x0002c, 0x0002f,
162         0x0004a, 0x0004d, 0x00061, 0x00070, 0x00073, 0x00048, 0x00052, 0x0005a,
163         0x0005d, 0x0006e, 0x00099, 0x0009e, 0x000c1, 0x000ce, 0x000e4, 0x000f0,
164         0x00093, 0x0009e, 0x000a2, 0x000a1, 0x000b8, 0x000d2, 0x000d3, 0x0012e,
165         0x00130, 0x000de, 0x0012d, 0x0019b, 0x001e4, 0x00139, 0x0013a, 0x0013f,
166         0x0014f, 0x0016d, 0x001a2, 0x0027c, 0x0027e, 0x00332, 0x0033c, 0x0033f,
167         0x0038b, 0x00396, 0x003c5, 0x00270, 0x0027c, 0x0025a, 0x00395, 0x00248,
168         0x004bd, 0x004fb, 0x00662, 0x00661, 0x0071b, 0x004e6, 0x004ff, 0x00666,
169         0x0071c, 0x0071a, 0x0071f, 0x00794, 0x00536, 0x004e2, 0x0078e, 0x004ee,
170         0x00518, 0x00535, 0x004fb, 0x0078d, 0x00530, 0x00680, 0x0068f, 0x005cb,
171         0x00965, 0x006a6, 0x00967, 0x0097f, 0x00682, 0x006ae, 0x00cd0, 0x00e28,
172         0x00f13, 0x00f1f, 0x009f5, 0x00cd3, 0x00f11, 0x00926, 0x00964, 0x00f32,
173         0x00f12, 0x00f30, 0x00966, 0x00d0b, 0x00a68, 0x00b91, 0x009c7, 0x00b73,
174         0x012fa, 0x0131d, 0x013f9, 0x01ca0, 0x0199c, 0x01c7a, 0x0198c, 0x01248,
175         0x01c74, 0x01c64, 0x0139e, 0x012fd, 0x00a77, 0x012fc, 0x01c7b, 0x012ca,
176         0x014cc, 0x014d2, 0x014e3, 0x014dc, 0x012dc, 0x03344, 0x02598, 0x0263c,
177         0x0333b, 0x025e6, 0x01a1c, 0x01e3c, 0x014e2, 0x033d4, 0x01a11, 0x03349,
178         0x03cce, 0x014e1, 0x01a34, 0x0273e, 0x02627, 0x0273f, 0x038ee, 0x03971,
179         0x03c67, 0x03c61, 0x0333d, 0x038c2, 0x0263f, 0x038cd, 0x02638, 0x02e41,
180         0x0351f, 0x03348, 0x03c66, 0x03562, 0x02989, 0x027d5, 0x0333c, 0x02e4f,
181         0x0343b, 0x02ddf, 0x04bc8, 0x029c0, 0x02e57, 0x04c72, 0x025b7, 0x03547,
182         0x03540, 0x029d3, 0x04c45, 0x025bb, 0x06600, 0x04c73, 0x04bce, 0x0357b,
183         0x029a6, 0x029d2, 0x0263e, 0x0298a, 0x07183, 0x06602, 0x07958, 0x04b66,
184         0x0537d, 0x05375, 0x04fe9, 0x04b67, 0x0799f, 0x04bc9, 0x051fe, 0x06a3b,
185         0x05bb6, 0x04fa8, 0x0728f, 0x05376, 0x0492c, 0x0537e, 0x0795a, 0x06a3c,
186         0x0e515, 0x07887, 0x0683a, 0x051f9, 0x051fd, 0x0cc6a, 0x06a8a, 0x0cc6d,
187         0x05bb3, 0x0683b, 0x051fc, 0x05378, 0x0728e, 0x07886, 0x05bb7, 0x0f2a4,
188         0x0795b, 0x0683c, 0x09fc1, 0x0683d, 0x0b752, 0x09678, 0x0a3e8, 0x06ac7,
189         0x051f0, 0x0b759, 0x06af3, 0x04b6b, 0x0f2a0, 0x0f2ad, 0x096c3, 0x0e518,
190         0x0b75c, 0x0d458, 0x0cc6b, 0x0537c, 0x067aa, 0x04fea, 0x0343a, 0x0cc71,
191         0x0967f, 0x09fc4, 0x096c2, 0x0e516, 0x0f2a1, 0x0d45c, 0x0d45d, 0x0d45e,
192         0x12fb9, 0x0967e, 0x1982f, 0x09883, 0x096c4, 0x0b753, 0x12fb8, 0x0f2a8,
193         0x1ca21, 0x096c5, 0x0e51a, 0x1ca27, 0x12f3c, 0x0d471, 0x0f2aa, 0x0b75b,
194         0x12fbb, 0x0f2a9, 0x0f2ac, 0x0d45a, 0x0b74f, 0x096c8, 0x16e91, 0x096ca,
195         0x12fbf, 0x0d0a7, 0x13103, 0x0d516, 0x16e99, 0x12cbd, 0x0a3ea, 0x19829,
196         0x0b755, 0x29ba7, 0x1ca28, 0x29ba5, 0x16e93, 0x1982c, 0x19828, 0x25994,
197         0x0a3eb, 0x1ca29, 0x16e90, 0x1ca25, 0x1982d, 0x1ca26, 0x16e9b, 0x0b756,
198         0x0967c, 0x25997, 0x0b75f, 0x198d3, 0x0b757, 0x19a2a, 0x0d45b, 0x0e517,
199         0x1ca24, 0x1ca23, 0x1ca22, 0x0b758, 0x16e97, 0x0cd14, 0x13100, 0x00007,
200         0x0003b, 0x0006b, 0x00097, 0x00138, 0x00125, 0x00173, 0x00258, 0x00335,
201         0x0028e, 0x004c6, 0x00715, 0x00729, 0x004ef, 0x00519, 0x004ed, 0x00532,
202         0x0068c, 0x00686, 0x00978, 0x00e5d, 0x00e31, 0x009f4, 0x00b92, 0x012f8,
203         0x00d06, 0x00a67, 0x00d44, 0x00a76, 0x00d59, 0x012cd, 0x01c78, 0x01c75,
204         0x0199f, 0x0198f, 0x01c67, 0x014c6, 0x01c79, 0x01c76, 0x00b94, 0x00d1b,
205         0x01e32, 0x01e31, 0x01ab0, 0x01a05, 0x01aa1, 0x0333a, 0x025e5, 0x02626,
206         0x03541, 0x03544, 0x03421, 0x03546, 0x02e55, 0x02e56, 0x0492d, 0x02dde,
207         0x0299b, 0x02ddc, 0x0357a, 0x0249c, 0x0668b, 0x1c77f, 0x1ca20, 0x0d45f,
208         0x09886, 0x16e9a, 0x0f2a7, 0x0b751, 0x0a3ee, 0x0cf59, 0x0cf57, 0x0b754,
209         0x0d0a6, 0x16e98, 0x0b760, 0x06ac6, 0x0a3f0, 0x12fbe, 0x13104, 0x0f2a5,
210         0x0a3ef, 0x0d472, 0x12cba, 0x1982e, 0x16e9c, 0x1c77e, 0x198d0, 0x13105,
211         0x16e92, 0x0b75d, 0x0d459, 0x0001a, 0x000c0, 0x0016c, 0x003cd, 0x00350,
212         0x0067b, 0x0051e, 0x006a9, 0x009f4, 0x00b72, 0x00d09, 0x01249, 0x01e3d,
213         0x01ca1, 0x01a1f, 0x01721, 0x01a8a, 0x016e8, 0x03347, 0x01a35, 0x0249d,
214         0x0299a, 0x02596, 0x02e4e, 0x0298b, 0x07182, 0x04c46, 0x025ba, 0x02e40,
215         0x027d6, 0x04fe8, 0x06607, 0x05310, 0x09884, 0x072e1, 0x06a3d, 0x04b6a,
216         0x04c7a, 0x06603, 0x04c7b, 0x03428, 0x06605, 0x09664, 0x09fc0, 0x071de,
217         0x06601, 0x05bb2, 0x09885, 0x0a3e2, 0x1c61f, 0x12cbb, 0x0b750, 0x0cf58,
218         0x0967d, 0x25995, 0x668ad, 0x0b75a, 0x09fc2, 0x0537f, 0x0b75e, 0x13fae,
219         0x12fbc, 0x00031, 0x001c4, 0x004c5, 0x005b8, 0x00cf4, 0x0096f, 0x00d46,
220         0x01e57, 0x01a04, 0x02625, 0x03346, 0x028f9, 0x04c47, 0x072e0, 0x04b69,
221         0x03420, 0x07957, 0x06639, 0x0799e, 0x07959, 0x07881, 0x04b68, 0x09fc3,
222         0x09fd6, 0x0cc70, 0x0a3f1, 0x12cbe, 0x0e30e, 0x0e51b, 0x06af2, 0x12cbc,
223         0x1c77d, 0x0f2ab, 0x12fbd, 0x1aa2f, 0x0a3ec, 0x0d473, 0x05377, 0x0a3e9,
224         0x1982b, 0x0e300, 0x12f3f, 0x0cf5f, 0x096c0, 0x38c3c, 0x16e94, 0x16e95,
225         0x12f3d, 0x29ba4, 0x29ba6, 0x1c77c, 0x6a8ba, 0x3545c, 0x33457, 0x668ac,
226         0x6a8bb, 0x16e9d, 0x0e519, 0x25996, 0x12f3e, 0x00036, 0x0033e, 0x006ad,
227         0x00d03, 0x012c8, 0x0124a, 0x03c42, 0x03ccd, 0x06606, 0x07880, 0x06852,
228         0x06a3a, 0x05bb4, 0x0f2a2, 0x09fc7, 0x12cb9, 0x0cc6c, 0x0a6e8, 0x096c1,
229         0x0004a, 0x00355, 0x012f9, 0x014e8, 0x01abe, 0x025b6, 0x0492e, 0x09fc6,
230         0x051ff, 0x0cc6f, 0x096cb, 0x0d071, 0x198d1, 0x12cb8, 0x38c3d, 0x13faf,
231         0x096c9, 0x0009d, 0x00539, 0x012ce, 0x0341f, 0x029c1, 0x04b33, 0x0a3e3,
232         0x0d070, 0x16e96, 0x0b763, 0x000a0, 0x009ce, 0x038cc, 0x0343d, 0x051fa,
233         0x09888, 0x12fba, 0x000df, 0x00a75, 0x029a7, 0x09fc5, 0x0e301, 0x0967b,
234         0x001e7, 0x012c9, 0x051fb, 0x09889, 0x0f2a6, 0x0016f, 0x01cb9, 0x0cf5a,
235         0x12cbf, 0x09679, 0x00272, 0x01a15, 0x0967a, 0x003cb, 0x025f6, 0x0b762,
236         0x0028d, 0x03c60, 0x0cf5e, 0x00352, 0x03ccc, 0x0072f, 0x07186, 0x004ec,
237         0x05379, 0x0068e, 0x09887, 0x006a7, 0x06af1, 0x00e29, 0x0cf5b, 0x00f31,
238         0x0d470, 0x009c6, 0x013fb, 0x13102, 0x019a5, 0x13101, 0x01983, 0x01c65,
239         0x0124f, 0x014c7, 0x01726, 0x01abf, 0x03304, 0x02624, 0x03c41, 0x027d7,
240         0x02ddd, 0x02e54, 0x0343c, 0x06604, 0x07181, 0x0663a, 0x04fa9, 0x0663b,
241         0x05311, 0x0537a, 0x06839, 0x05bb5, 0x0492f, 0x06af0, 0x096c7, 0x0cc6e,
242         0x0537b, 0x0cf5c, 0x0cf56, 0x198d2, 0x0cf5d, 0x0a3ed, 0x0f2a3, 0x1982a,
243         0x0b761, 0x096c6,
244 };
245
246 static const uint8_t coef0_huffbits[666] = {
247         11, 6, 2, 3, 4, 5, 5, 5,
248         5, 6, 6, 6, 6, 7, 7, 7,
249         7, 7, 7, 7, 7, 8, 8, 8,
250         8, 8, 8, 8, 8, 8, 8, 8,
251         9, 9, 9, 9, 9, 9, 9, 9,
252         9, 9, 9, 9, 9, 10, 10, 10,
253         10, 10, 10, 10, 10, 10, 10, 10,
254         10, 10, 10, 11, 11, 11, 10, 11,
255         11, 11, 11, 11, 11, 11, 11, 11,
256         11, 11, 11, 11, 12, 12, 11, 12,
257         12, 12, 12, 11, 12, 12, 12, 12,
258         12, 12, 12, 12, 12, 12, 12, 12,
259         12, 12, 12, 12, 12, 13, 13, 12,
260         12, 12, 13, 13, 13, 13, 13, 13,
261         13, 13, 13, 13, 13, 13, 13, 14,
262         13, 13, 13, 13, 13, 13, 13, 14,
263         14, 14, 14, 14, 14, 14, 14, 14,
264         14, 14, 14, 13, 14, 14, 14, 14,
265         14, 14, 14, 14, 14, 14, 14, 14,
266         14, 14, 14, 14, 14, 14, 14, 15,
267         15, 14, 14, 15, 15, 15, 14, 15,
268         15, 15, 15, 15, 15, 15, 15, 15,
269         15, 15, 15, 15, 15, 15, 15, 15,
270         15, 15, 14, 15, 15, 15, 15, 16,
271         16, 16, 15, 16, 15, 15, 16, 16,
272         16, 16, 15, 16, 16, 16, 15, 16,
273         16, 15, 16, 16, 16, 16, 16, 16,
274         16, 16, 16, 16, 15, 15, 16, 16,
275         15, 16, 16, 16, 17, 17, 17, 16,
276         16, 17, 16, 16, 16, 16, 17, 16,
277         17, 17, 16, 16, 15, 15, 15, 16,
278         17, 16, 17, 16, 16, 17, 17, 17,
279         17, 17, 17, 16, 17, 17, 17, 16,
280         17, 17, 16, 17, 17, 17, 16, 17,
281         17, 16, 16, 17, 17, 17, 18, 17,
282         17, 17, 17, 17, 18, 18, 17, 17,
283         17, 19, 17, 19, 18, 17, 17, 18,
284         17, 17, 18, 17, 17, 17, 18, 17,
285         17, 18, 17, 17, 17, 17, 17, 16,
286         17, 17, 17, 17, 18, 16, 17, 4,
287         6, 8, 9, 9, 10, 10, 10, 10,
288         11, 11, 11, 11, 12, 12, 12, 12,
289         12, 12, 12, 12, 12, 13, 13, 13,
290         13, 13, 13, 13, 13, 13, 13, 13,
291         13, 13, 13, 14, 13, 13, 13, 13,
292         13, 13, 14, 14, 14, 14, 14, 14,
293         15, 15, 15, 15, 15, 15, 16, 15,
294         15, 15, 15, 15, 15, 17, 17, 17,
295         16, 18, 16, 17, 17, 16, 16, 17,
296         17, 18, 17, 16, 17, 17, 17, 16,
297         17, 17, 18, 17, 18, 17, 17, 17,
298         18, 17, 17, 5, 8, 10, 10, 11,
299         11, 12, 12, 12, 13, 13, 14, 13,
300         13, 14, 14, 14, 14, 14, 14, 15,
301         15, 15, 15, 15, 15, 15, 15, 15,
302         15, 15, 15, 16, 16, 15, 16, 16,
303         15, 15, 15, 15, 15, 16, 16, 15,
304         15, 16, 16, 17, 17, 18, 17, 16,
305         17, 18, 19, 17, 16, 16, 17, 17,
306         17, 6, 9, 11, 12, 12, 13, 13,
307         13, 14, 14, 14, 15, 15, 15, 16,
308         15, 15, 15, 15, 15, 15, 16, 16,
309         16, 16, 17, 18, 16, 16, 16, 18,
310         17, 16, 17, 18, 17, 17, 16, 17,
311         17, 16, 17, 16, 17, 18, 18, 18,
312         17, 19, 19, 17, 20, 19, 18, 19,
313         20, 18, 16, 18, 17, 7, 10, 12,
314         13, 13, 14, 14, 14, 15, 15, 16,
315         16, 16, 16, 16, 18, 16, 17, 17,
316         8, 11, 13, 14, 14, 15, 16, 16,
317         16, 16, 17, 17, 17, 18, 18, 17,
318         17, 8, 12, 14, 15, 15, 15, 17,
319         17, 18, 17, 9, 12, 14, 15, 16,
320         16, 17, 9, 13, 15, 16, 16, 17,
321         9, 13, 16, 16, 16, 10, 13, 16,
322         18, 17, 10, 14, 17, 10, 14, 17,
323         11, 14, 16, 11, 14, 11, 15, 12,
324         16, 12, 16, 12, 16, 12, 16, 12,
325         17, 13, 13, 17, 13, 17, 13, 13,
326         14, 14, 14, 14, 14, 14, 14, 15,
327         15, 15, 15, 15, 15, 15, 16, 15,
328         16, 16, 16, 16, 16, 16, 17, 16,
329         16, 16, 16, 17, 16, 17, 16, 17,
330         17, 17,
331 };
332
333 static const uint32_t coef1_huffcodes[555] = {
334         0x00115, 0x00002, 0x00001, 0x00000, 0x0000d, 0x00007, 0x00013, 0x0001d,
335         0x00008, 0x0000c, 0x00023, 0x0002b, 0x0003f, 0x00017, 0x0001b, 0x00043,
336         0x00049, 0x00050, 0x00055, 0x00054, 0x00067, 0x00064, 0x0007b, 0x0002d,
337         0x00028, 0x0002a, 0x00085, 0x00089, 0x0002b, 0x00035, 0x00090, 0x00091,
338         0x00094, 0x00088, 0x000c1, 0x000c6, 0x000f2, 0x000e3, 0x000c5, 0x000e2,
339         0x00036, 0x000f0, 0x000a7, 0x000cd, 0x000fb, 0x00059, 0x00116, 0x00103,
340         0x00108, 0x0012b, 0x0012d, 0x00188, 0x0012e, 0x0014c, 0x001c3, 0x00187,
341         0x001e7, 0x0006f, 0x00094, 0x00069, 0x001e6, 0x001ca, 0x00147, 0x00195,
342         0x000a7, 0x00213, 0x00209, 0x00303, 0x00295, 0x00289, 0x0028c, 0x0028d,
343         0x00312, 0x00330, 0x0029b, 0x00308, 0x00328, 0x0029a, 0x0025e, 0x003c5,
344         0x00384, 0x0039f, 0x00397, 0x00296, 0x0032e, 0x00332, 0x003c6, 0x003e6,
345         0x0012d, 0x000d1, 0x00402, 0x000dd, 0x00161, 0x0012b, 0x00127, 0x0045d,
346         0x00601, 0x004ab, 0x0045f, 0x00410, 0x004bf, 0x00528, 0x0045c, 0x00424,
347         0x00400, 0x00511, 0x00618, 0x0073d, 0x0063a, 0x00614, 0x0073c, 0x007c0,
348         0x007cf, 0x00802, 0x00966, 0x00964, 0x00951, 0x008a0, 0x00346, 0x00803,
349         0x00a52, 0x0024a, 0x007c1, 0x0063f, 0x00126, 0x00406, 0x00789, 0x008a2,
350         0x00960, 0x00967, 0x00c05, 0x00c70, 0x00c79, 0x00a5d, 0x00c26, 0x00c4d,
351         0x00372, 0x008a5, 0x00c08, 0x002c5, 0x00f11, 0x00cc4, 0x00f8e, 0x00e16,
352         0x00496, 0x00e77, 0x00f9c, 0x00c25, 0x00f1e, 0x00c27, 0x00f1f, 0x00e17,
353         0x00ccd, 0x00355, 0x00c09, 0x00c78, 0x00f90, 0x00521, 0x00357, 0x00356,
354         0x0068e, 0x00f9d, 0x00c04, 0x00e58, 0x00a20, 0x00a2c, 0x00c4c, 0x0052f,
355         0x00f8d, 0x01178, 0x01053, 0x01097, 0x0180f, 0x0180d, 0x012fb, 0x012aa,
356         0x0202a, 0x00a40, 0x018ed, 0x01ceb, 0x01455, 0x018e3, 0x012a1, 0x00354,
357         0x00353, 0x00f1c, 0x00c7b, 0x00c37, 0x0101d, 0x012cb, 0x01142, 0x0197d,
358         0x01095, 0x01e3b, 0x0186b, 0x00588, 0x01c2a, 0x014b8, 0x01e3a, 0x018ec,
359         0x01f46, 0x012fa, 0x00a53, 0x01ce8, 0x00a55, 0x01c29, 0x0117b, 0x01052,
360         0x012a0, 0x00589, 0x00950, 0x01c2b, 0x00a50, 0x0208b, 0x0180e, 0x02027,
361         0x02556, 0x01e20, 0x006e7, 0x01c28, 0x0197a, 0x00684, 0x020a2, 0x01f22,
362         0x03018, 0x039cf, 0x03e25, 0x02557, 0x0294c, 0x028a6, 0x00d11, 0x028a9,
363         0x02979, 0x00d46, 0x00a56, 0x039ce, 0x030cc, 0x0329a, 0x0149d, 0x0510f,
364         0x0451c, 0x02028, 0x03299, 0x01ced, 0x014b9, 0x00f85, 0x00c7a, 0x01800,
365         0x00341, 0x012ca, 0x039c8, 0x0329d, 0x00d0d, 0x03e20, 0x05144, 0x00d45,
366         0x030d0, 0x0186d, 0x030d5, 0x00d0f, 0x00d40, 0x04114, 0x020a1, 0x0297f,
367         0x03e24, 0x032f1, 0x04047, 0x030d4, 0x028a8, 0x00d0e, 0x0451d, 0x04044,
368         0x0297e, 0x04042, 0x030d2, 0x030cf, 0x03e21, 0x03e26, 0x028a5, 0x0451a,
369         0x00d48, 0x01a16, 0x00d44, 0x04518, 0x0149b, 0x039ca, 0x01498, 0x0403d,
370         0x0451b, 0x0149c, 0x032f3, 0x030cb, 0x08073, 0x03e22, 0x0529a, 0x020aa,
371         0x039cc, 0x0738a, 0x06530, 0x07389, 0x06193, 0x08071, 0x04043, 0x030ce,
372         0x05147, 0x07388, 0x05145, 0x08072, 0x04521, 0x00d47, 0x0297c, 0x030cd,
373         0x030ca, 0x0000b, 0x0000c, 0x00083, 0x000e4, 0x00048, 0x00102, 0x001cc,
374         0x001f5, 0x00097, 0x0020b, 0x00124, 0x00453, 0x00627, 0x00639, 0x00605,
375         0x00517, 0x001b8, 0x00663, 0x00667, 0x007c3, 0x00823, 0x00961, 0x00963,
376         0x00e5a, 0x00e59, 0x00a2b, 0x00cbf, 0x00292, 0x00a2d, 0x007d0, 0x00953,
377         0x00cc5, 0x00f84, 0x004ab, 0x014a7, 0x0068a, 0x0117a, 0x0052e, 0x01442,
378         0x0052c, 0x00c77, 0x00f8f, 0x004aa, 0x01094, 0x01801, 0x012c4, 0x0297b,
379         0x00952, 0x01f19, 0x006a5, 0x01149, 0x012c5, 0x01803, 0x022f2, 0x0329b,
380         0x04520, 0x0149e, 0x00d13, 0x01f16, 0x01ce9, 0x0101c, 0x006e6, 0x039c9,
381         0x06191, 0x07c8e, 0x06192, 0x0ca63, 0x039cd, 0x06190, 0x06884, 0x06885,
382         0x07382, 0x00d49, 0x00d41, 0x0450c, 0x0149a, 0x030d1, 0x08077, 0x03e23,
383         0x01a15, 0x0e701, 0x0e702, 0x08079, 0x0822a, 0x0a218, 0x07887, 0x0403f,
384         0x0520b, 0x0529b, 0x0e700, 0x04519, 0x00007, 0x000e0, 0x000d0, 0x0039b,
385         0x003e5, 0x00163, 0x0063e, 0x007c9, 0x00806, 0x00954, 0x01044, 0x01f44,
386         0x0197c, 0x01f45, 0x00a51, 0x01f47, 0x00951, 0x0052d, 0x02291, 0x0092f,
387         0x00a54, 0x00d12, 0x0297d, 0x00d0c, 0x01499, 0x0329e, 0x032f0, 0x02025,
388         0x039c6, 0x00a57, 0x03e46, 0x00d42, 0x0738b, 0x05146, 0x04046, 0x08078,
389         0x0510e, 0x07886, 0x02904, 0x04156, 0x04157, 0x06032, 0x030d3, 0x08bce,
390         0x04040, 0x0403e, 0x0a414, 0x10457, 0x08075, 0x06887, 0x07c8f, 0x039c7,
391         0x07387, 0x08070, 0x08bcf, 0x1482a, 0x10456, 0x1482b, 0x01a17, 0x06886,
392         0x0450d, 0x00013, 0x0006b, 0x00615, 0x0080b, 0x0082b, 0x00952, 0x00e5b,
393         0x018e2, 0x0186c, 0x01f18, 0x0329f, 0x00d43, 0x03e29, 0x05140, 0x05141,
394         0x0ca62, 0x06033, 0x03c42, 0x03e28, 0x0450f, 0x0a21a, 0x07384, 0x0a219,
395         0x0e703, 0x0a21b, 0x01a14, 0x07383, 0x045e6, 0x0007a, 0x0012c, 0x00ccc,
396         0x0068f, 0x01802, 0x00a52, 0x00953, 0x04045, 0x01a20, 0x0451f, 0x000a4,
397         0x00735, 0x01cec, 0x02029, 0x020a3, 0x0451e, 0x00069, 0x00c24, 0x02024,
398         0x032f2, 0x05142, 0x00196, 0x00523, 0x000a6, 0x0197b, 0x0030b, 0x0092e,
399         0x003e9, 0x03e27, 0x00160, 0x05143, 0x00652, 0x04041, 0x00734, 0x028a7,
400         0x0080f, 0x01483, 0x0097c, 0x00340, 0x0068b, 0x00522, 0x01054, 0x01096,
401         0x01f17, 0x0202b, 0x01cea, 0x020a0, 0x02978, 0x02026, 0x0297a, 0x039cb,
402         0x03e2b, 0x0149f, 0x0329c, 0x07385, 0x08074, 0x0450e, 0x03e2a, 0x05149,
403         0x08076, 0x07386, 0x05148,
404 };
405
406 static const uint8_t coef1_huffbits[555] = {
407         9, 5, 2, 4, 4, 5, 5, 5,
408         6, 6, 6, 6, 6, 7, 7, 7,
409         7, 7, 7, 7, 7, 7, 7, 8,
410         8, 8, 8, 8, 8, 8, 8, 8,
411         8, 8, 8, 8, 8, 8, 8, 8,
412         9, 8, 8, 8, 8, 9, 9, 9,
413         9, 9, 9, 9, 9, 9, 9, 9,
414         9, 10, 10, 10, 9, 9, 9, 9,
415         10, 10, 10, 10, 10, 10, 10, 10,
416         10, 10, 10, 10, 10, 10, 10, 10,
417         10, 10, 10, 10, 10, 10, 10, 10,
418         11, 11, 11, 11, 11, 11, 11, 11,
419         11, 11, 11, 11, 11, 11, 11, 11,
420         11, 11, 11, 11, 11, 11, 11, 11,
421         11, 12, 12, 12, 12, 12, 12, 12,
422         12, 12, 11, 11, 11, 11, 11, 12,
423         12, 12, 12, 12, 12, 12, 12, 12,
424         13, 12, 12, 12, 12, 12, 12, 12,
425         13, 12, 12, 12, 12, 12, 12, 12,
426         12, 13, 12, 12, 12, 13, 13, 13,
427         13, 12, 12, 12, 12, 12, 12, 13,
428         12, 13, 13, 13, 13, 13, 13, 13,
429         14, 14, 13, 13, 13, 13, 13, 13,
430         13, 12, 12, 12, 13, 13, 13, 13,
431         13, 13, 13, 13, 13, 13, 13, 13,
432         13, 13, 14, 13, 14, 13, 13, 13,
433         13, 13, 14, 13, 14, 14, 13, 14,
434         14, 13, 14, 13, 13, 14, 14, 13,
435         14, 14, 14, 14, 14, 14, 14, 14,
436         14, 15, 14, 14, 14, 14, 15, 15,
437         15, 14, 14, 13, 13, 12, 12, 13,
438         13, 13, 14, 14, 15, 14, 15, 15,
439         14, 13, 14, 15, 15, 15, 14, 14,
440         14, 14, 15, 14, 14, 15, 15, 15,
441         14, 15, 14, 14, 14, 14, 14, 15,
442         15, 16, 15, 15, 15, 14, 15, 15,
443         15, 15, 14, 14, 16, 14, 15, 14,
444         14, 15, 15, 15, 15, 16, 15, 14,
445         15, 15, 15, 16, 15, 15, 14, 14,
446         14, 4, 7, 8, 8, 9, 9, 9,
447         9, 10, 10, 11, 11, 11, 11, 11,
448         11, 12, 11, 11, 11, 12, 12, 12,
449         12, 12, 12, 12, 12, 12, 11, 12,
450         12, 12, 13, 13, 13, 13, 13, 13,
451         13, 12, 12, 13, 13, 13, 13, 14,
452         14, 13, 14, 13, 13, 13, 14, 14,
453         15, 15, 14, 13, 13, 13, 14, 14,
454         15, 15, 15, 16, 14, 15, 17, 17,
455         15, 15, 15, 15, 15, 14, 16, 14,
456         16, 16, 16, 16, 16, 16, 15, 15,
457         17, 15, 16, 15, 6, 8, 10, 10,
458         10, 11, 11, 11, 12, 12, 13, 13,
459         13, 13, 14, 13, 14, 13, 14, 14,
460         14, 14, 14, 15, 15, 14, 14, 14,
461         14, 14, 14, 15, 15, 15, 15, 16,
462         15, 15, 16, 15, 15, 15, 14, 16,
463         15, 15, 18, 17, 16, 17, 15, 14,
464         15, 16, 16, 19, 17, 19, 16, 17,
465         15, 7, 10, 11, 12, 12, 12, 12,
466         13, 13, 13, 14, 15, 14, 15, 15,
467         16, 15, 14, 14, 15, 16, 15, 16,
468         16, 16, 16, 15, 15, 7, 11, 12,
469         13, 13, 14, 14, 15, 15, 15, 8,
470         11, 13, 14, 14, 15, 9, 12, 14,
471         14, 15, 9, 13, 10, 13, 10, 14,
472         10, 14, 11, 15, 11, 15, 11, 14,
473         12, 15, 12, 13, 13, 13, 13, 13,
474         13, 14, 13, 14, 14, 14, 14, 14,
475         14, 15, 14, 15, 16, 15, 14, 15,
476         16, 15, 15,
477 };
478
479 static const uint32_t coef2_huffcodes[1336] = {
480         0x003e6, 0x000f6, 0x00000, 0x00002, 0x00006, 0x0000f, 0x0001b, 0x00028,
481         0x00039, 0x0003f, 0x0006b, 0x00076, 0x000b7, 0x000e8, 0x000ef, 0x00169,
482         0x001a7, 0x001d4, 0x001dc, 0x002c4, 0x00349, 0x00355, 0x00391, 0x003dc,
483         0x00581, 0x005b2, 0x00698, 0x0070c, 0x00755, 0x0073a, 0x00774, 0x007cf,
484         0x00b0a, 0x00b66, 0x00d2e, 0x00d5e, 0x00e1b, 0x00eac, 0x00e5a, 0x00f7e,
485         0x00fa1, 0x0163e, 0x01a37, 0x01a52, 0x01c39, 0x01ab3, 0x01d5f, 0x01cb6,
486         0x01f52, 0x01dd9, 0x02c04, 0x02c2e, 0x02c2d, 0x02c23, 0x03467, 0x034a3,
487         0x0351b, 0x03501, 0x03a5d, 0x0351c, 0x03875, 0x03dea, 0x0397b, 0x039db,
488         0x03df1, 0x039d8, 0x03bb4, 0x0580a, 0x0584d, 0x05842, 0x05b13, 0x058ea,
489         0x0697d, 0x06a06, 0x068cc, 0x06ac7, 0x06a96, 0x072f4, 0x07543, 0x072b4,
490         0x07d20, 0x0b003, 0x073b5, 0x07be6, 0x0d180, 0x07bd1, 0x07cb8, 0x07d06,
491         0x07d25, 0x0d2f2, 0x0d19a, 0x0d334, 0x0e1dc, 0x0d529, 0x0d584, 0x0e1d2,
492         0x0e5e3, 0x0eec4, 0x0e564, 0x0fa49, 0x16001, 0x0eedc, 0x0f7fa, 0x1a32c,
493         0x16131, 0x16003, 0x0f9c8, 0x1ef80, 0x1d2a0, 0x1aa4b, 0x0f7ce, 0x1abfe,
494         0x1aa50, 0x1a458, 0x1a816, 0x1cae4, 0x1d2fe, 0x1d52e, 0x1aa4c, 0x2c245,
495         0x1d2a1, 0x1a35d, 0x1ca1b, 0x1d5d8, 0x1f531, 0x1ca1c, 0x1f389, 0x1f4af,
496         0x3a5e7, 0x351fb, 0x2c24b, 0x34bce, 0x2c24d, 0x2c249, 0x2c24a, 0x72dfc,
497         0x357ef, 0x35002, 0x3a5e6, 0x39431, 0x5843b, 0x34a77, 0x58431, 0x3a5f3,
498         0x3a5dd, 0x3e5e5, 0x356bd, 0x3976e, 0x6a3d2, 0x3500d, 0x694c4, 0x580bd,
499         0x3e5e8, 0x74b95, 0x34a6e, 0x3977c, 0x39432, 0x5b0d2, 0x6a3d8, 0x580b8,
500         0x5b0cb, 0x5b0d7, 0x72dee, 0x72ded, 0x72dec, 0x74b9c, 0x3977f, 0x72dea,
501         0x74b9e, 0x7be7d, 0x580bf, 0x5b0d5, 0x7cba8, 0x74b91, 0x3e5dd, 0xb6171,
502         0xd46b3, 0xd46b9, 0x7cba1, 0x74b9f, 0x72de1, 0xe59f5, 0x3e5eb, 0x00004,
503         0x00015, 0x00038, 0x00075, 0x000e8, 0x001d3, 0x00347, 0x0039c, 0x00690,
504         0x0074a, 0x00b60, 0x00e93, 0x00f74, 0x0163d, 0x01a5a, 0x01d24, 0x01cbe,
505         0x01f4b, 0x03468, 0x03562, 0x03947, 0x03e82, 0x05804, 0x05b12, 0x05803,
506         0x0696d, 0x06a9e, 0x0697c, 0x06978, 0x06afb, 0x074b2, 0x072f5, 0x073c0,
507         0x07541, 0x06944, 0x074b7, 0x070d3, 0x07ba9, 0x0b0b1, 0x0d1af, 0x0e1dd,
508         0x0e5e2, 0x0e1a3, 0x0eec3, 0x1612f, 0x0e961, 0x0eeda, 0x0e78e, 0x0fa48,
509         0x1612c, 0x0e511, 0x0e565, 0x0e953, 0x1aa4a, 0x0e59d, 0x1d52c, 0x1a811,
510         0x1cae7, 0x1abfc, 0x1d52d, 0x1cacf, 0x1cf05, 0x2c254, 0x34a72, 0x1f4ac,
511         0x3976b, 0x34a71, 0x2c6d9, 0x2d873, 0x34a6a, 0x357e7, 0x3464c, 0x3e5f5,
512         0x58433, 0x1f53a, 0x3500a, 0x357ea, 0x34a73, 0x3942f, 0x357e5, 0x39775,
513         0x694cd, 0x39772, 0x7cba5, 0x6a3ef, 0x35483, 0x74b98, 0x5b0c1, 0x39770,
514         0x3a5d7, 0x39433, 0x39434, 0x694ce, 0x580be, 0x3e5ff, 0x6a3ec, 0xb616f,
515         0xd46b1, 0x6a3d1, 0x72de5, 0x74b6e, 0x72de9, 0x3e700, 0xd46b6, 0x6a3e9,
516         0x74b69, 0xe5675, 0xd46b8, 0x7cbaa, 0x3a5d1, 0x0000c, 0x0003c, 0x000eb,
517         0x001f1, 0x003a4, 0x006a8, 0x007d5, 0x00d43, 0x00e77, 0x016c5, 0x01cb1,
518         0x02c5d, 0x03a55, 0x03a56, 0x03e51, 0x03bb5, 0x05b0a, 0x06a9f, 0x074b8,
519         0x07d28, 0x0d187, 0x0d40e, 0x0d52e, 0x0d425, 0x0eae3, 0x0e1d3, 0x1612e,
520         0x0e59e, 0x0eec2, 0x0e578, 0x0e51a, 0x0e579, 0x0e515, 0x0e960, 0x0d183,
521         0x0d220, 0x0d2cb, 0x0e512, 0x16c3e, 0x16002, 0x16c42, 0x1cae9, 0x3461a,
522         0x1d2fa, 0x1a308, 0x1a849, 0x1cf07, 0x1f38f, 0x34b65, 0x2c253, 0x1ef9e,
523         0x1cbc3, 0x1cbc1, 0x2c255, 0x1f384, 0x58435, 0x2c5cd, 0x3a5f7, 0x2c252,
524         0x3959c, 0x2c6d8, 0x3a5d3, 0x6ad78, 0x6a3f2, 0x7cba9, 0xb6176, 0x72deb,
525         0x39764, 0x3e5f6, 0x3a5d8, 0x74a8c, 0x6a3e6, 0x694d1, 0x6ad79, 0x1a4592,
526         0xe59fb, 0x7cbb3, 0x5b0cd, 0x00017, 0x000b5, 0x002c3, 0x005b7, 0x00b1c,
527         0x00e5c, 0x0163f, 0x01ab2, 0x01efa, 0x0348a, 0x0396e, 0x058da, 0x06963,
528         0x06a30, 0x072cd, 0x073cf, 0x07ce7, 0x0d2ca, 0x0d2d8, 0x0e764, 0x0e794,
529         0x16008, 0x16167, 0x1617e, 0x1aa49, 0x1a30b, 0x1a813, 0x2c6da, 0x1a580,
530         0x1cbc2, 0x0f9ca, 0x1617f, 0x1d2fe, 0x0f7fc, 0x16c40, 0x0e513, 0x0eec5,
531         0x0f7c3, 0x1d508, 0x1a81e, 0x1d2fd, 0x39430, 0x35486, 0x3e5fd, 0x2c24c,
532         0x2c75a, 0x34a74, 0x3a5f4, 0x3464d, 0x694ca, 0x3a5f1, 0x1d509, 0x1d5c0,
533         0x34648, 0x3464e, 0x6a3d5, 0x6a3e8, 0x6a3e7, 0x5b0c3, 0x2c248, 0x1f38a,
534         0x3a5f2, 0x6a3e5, 0x00029, 0x00168, 0x0058c, 0x00b67, 0x00f9d, 0x01c3d,
535         0x01cbf, 0x02c20, 0x0351d, 0x03df6, 0x06af9, 0x072b5, 0x0b1d7, 0x0b0b2,
536         0x0d40a, 0x0d52b, 0x0e952, 0x0e797, 0x163c3, 0x1c3a0, 0x1f386, 0x1ca21,
537         0x34655, 0x2c247, 0x1f53b, 0x2c250, 0x2c24f, 0x1f385, 0x1ef5d, 0x1cf15,
538         0x1caea, 0x1ab0a, 0x1cf19, 0x1f53d, 0x1d5c2, 0x1d2fb, 0x1ef58, 0x34a78,
539         0x357ec, 0x1f533, 0x3a5e1, 0x694d2, 0x58482, 0x3a5ee, 0x2c6dc, 0x357eb,
540         0x5b0c4, 0x39778, 0x6a3e1, 0x7cbb4, 0x3a5e1, 0x74b68, 0x3a5ef, 0x3a5d2,
541         0x39424, 0x72de2, 0xe59f6, 0xe59f7, 0x3e702, 0x3e5ec, 0x1f38b, 0x0003b,
542         0x001f0, 0x00777, 0x00fa8, 0x01cb2, 0x02d84, 0x03a57, 0x03dd6, 0x06917,
543         0x06a11, 0x07d07, 0x0eae2, 0x0e796, 0x0f9c9, 0x0f7fb, 0x16166, 0x16160,
544         0x1ab1b, 0x1abfa, 0x2d87b, 0x1d2f7, 0x39768, 0x1f38c, 0x34653, 0x34651,
545         0x6a3d9, 0x35001, 0x3abbd, 0x38742, 0x39426, 0x34a76, 0x3a5ec, 0x34a75,
546         0x35000, 0x35488, 0x1cf10, 0x2c6db, 0x357ed, 0x357e8, 0x357e9, 0x3a5f0,
547         0x694c2, 0xb6178, 0x72df5, 0x39425, 0x3942b, 0x74b6d, 0x74b6f, 0xb6177,
548         0xb6179, 0x74b6a, 0xb6172, 0x58487, 0x3e5ee, 0x3e5ed, 0x72df2, 0x72df4,
549         0x7cbae, 0x6a3ca, 0x70e86, 0x34bcf, 0x6a3c8, 0x00059, 0x00384, 0x00d5b,
550         0x01c38, 0x03560, 0x0395b, 0x0584e, 0x06964, 0x073cd, 0x0b1e7, 0x0e798,
551         0x0e78d, 0x0fa43, 0x1a848, 0x1a32f, 0x1aa4e, 0x3464a, 0x1f4ab, 0x1f38d,
552         0x3a5eb, 0x3a5d4, 0x3548a, 0x6a3c7, 0x5b0d0, 0x6a3c5, 0x7cbb0, 0x694cb,
553         0x3a5e5, 0x3e5e2, 0x3942c, 0x2d872, 0x1f4ae, 0x3a5d5, 0x694d3, 0x58481,
554         0x35009, 0x39774, 0x58432, 0xb616c, 0x5b0db, 0x3548b, 0xb6174, 0x1d5d95,
555         0xb004c, 0x7cbb2, 0x3a5e5, 0x74a8f, 0xe59f9, 0x72df6, 0xe59fd, 0x7cbad,
556         0xd427d, 0x72cff, 0x3977a, 0x5b0d9, 0xb616d, 0xb616b, 0x1a4593, 0x7cbaf,
557         0x5b0da, 0x00071, 0x003eb, 0x01603, 0x02c6c, 0x03961, 0x068c8, 0x06a31,
558         0x072bd, 0x0d2c2, 0x0e51b, 0x0e5e6, 0x1abfb, 0x1d2ff, 0x1cae5, 0x1ef5c,
559         0x1ef5e, 0x1cf13, 0x34a6d, 0x3976d, 0xb616a, 0x3e5f2, 0x6a3c4, 0xb6169,
560         0x3e5dc, 0x580b9, 0x74b99, 0x75764, 0x58434, 0x3a5d9, 0x6945a, 0x69459,
561         0x3548c, 0x3a5e9, 0x69457, 0x72df1, 0x6945e, 0x6a35e, 0x3e701, 0xb6168,
562         0x5b0dd, 0x3a5de, 0x6a3c2, 0xd4278, 0x6a3cc, 0x72dfd, 0xb6165, 0x16009a,
563         0x7cbb1, 0xd427c, 0xb6162, 0xe765e, 0x1cecbe, 0x7cbb6, 0x69454, 0xb6160,
564         0xd427a, 0x1d5d96, 0xb1d6d, 0xe59f4, 0x72de8, 0x3a5db, 0x0007a, 0x006ae,
565         0x01c3c, 0x03aba, 0x058e9, 0x072cc, 0x0d2dd, 0x0d22d, 0x0eec1, 0x0eedb,
566         0x1d2a2, 0x1ef5b, 0x357e2, 0x3abbf, 0x1d2f9, 0x35004, 0x3a5dc, 0x351fc,
567         0x3976c, 0x6a3c6, 0x6a3cb, 0x3e5ea, 0xe59f3, 0x6a3ce, 0x69452, 0xe59f0,
568         0x74b90, 0xd4279, 0xd427b, 0x7cbb5, 0x5b0c5, 0x3a5e3, 0x3a5e2, 0x000d0,
569         0x00775, 0x01efe, 0x03dd5, 0x0728c, 0x07cb9, 0x0e1a2, 0x0ea85, 0x0eed8,
570         0x1a30a, 0x1aa4f, 0x3a5df, 0x35008, 0x3a5e0, 0x3e5f4, 0x3e5f7, 0xb1d6c,
571         0x5843e, 0x34a70, 0x72df8, 0x74b6b, 0xd427f, 0x72df0, 0x5b0bf, 0x5b0c0,
572         0xd46b0, 0x72def, 0xe59f8, 0x162e64, 0xb1d6f, 0x3a5e0, 0x39427, 0x69166,
573         0x6a3e2, 0x6a3e3, 0x74a8d, 0xd427e, 0x1d5d97, 0xd46b4, 0x5b0d8, 0x6a3d3,
574         0x000e0, 0x00b63, 0x034cc, 0x06a33, 0x073c9, 0x0e1a0, 0x0f7fd, 0x0f9cc,
575         0x1617d, 0x1caeb, 0x1f4a9, 0x3abb3, 0x69450, 0x39420, 0x39777, 0x3e5e0,
576         0x6a3d4, 0x6a3ed, 0xb6166, 0xe59f1, 0xb1d6e, 0xe5676, 0x6a3ea, 0xe5674,
577         0xb6163, 0xd46b7, 0x7cba6, 0xd46ba, 0x1d5d94, 0xb6164, 0x6a3f1, 0x7cba2,
578         0x69451, 0x72dfa, 0xd46bb, 0x72df7, 0x74b94, 0x1cecbf, 0xe59fa,
579             0x16009b,
580         0x6a3e4, 0x000e6, 0x00e94, 0x03876, 0x070ef, 0x0d52a, 0x16015, 0x16014,
581         0x1abf9, 0x1cf17, 0x34a79, 0x34650, 0x3e705, 0x6a3d0, 0x58430, 0x74b9d,
582         0x7be7e, 0x5b0be, 0x39773, 0x6a3de, 0x000fb, 0x00f7b, 0x03dd7, 0x07bd0,
583         0x0e59c, 0x0f9cd, 0x1cf18, 0x1d2ff, 0x34a7a, 0x39429, 0x3500c, 0x72de0,
584         0x69456, 0x7be7c, 0xd46b5, 0xd46b2, 0x6a3dd, 0x001a2, 0x0163b, 0x06913,
585         0x0b016, 0x0fa42, 0x1a32d, 0x1cf06, 0x34a7c, 0x34a7d, 0xb6161, 0x35481,
586         0x3e5fa, 0x7cba0, 0x7be7f, 0x7cba3, 0x7cba7, 0x5b0d3, 0x72de6, 0x6a3dc,
587         0x001a9, 0x01ab4, 0x06a34, 0x0d46a, 0x16130, 0x1ef5f, 0x1f532, 0x1f536,
588         0x3942e, 0x58436, 0x6a3db, 0x6945b, 0x001c9, 0x01ca0, 0x0728b, 0x0eed9,
589         0x1f539, 0x1ca1d, 0x39765, 0x39766, 0x58439, 0x6945d, 0x39767, 0x001d3,
590         0x01f2c, 0x07bfc, 0x16161, 0x34652, 0x3a5ed, 0x3548d, 0x58438, 0x6a3da,
591         0x002c1, 0x02c5e, 0x0d335, 0x1ab1a, 0x2d874, 0x35006, 0x35484, 0x5b0cc,
592         0x74b9a, 0x72df3, 0x6a3d6, 0x002da, 0x034b3, 0x0d5ae, 0x1caee, 0x2d871,
593         0x357e3, 0x74b97, 0x72df9, 0x580ba, 0x5b0d4, 0x0034d, 0x0354e, 0x0f750,
594         0x1cbc0, 0x3a5e7, 0x3a5e4, 0x00385, 0x03a58, 0x16c41, 0x2c5cf, 0x3e5e1,
595         0x74b6c, 0xe5677, 0x6a3df, 0x00390, 0x03e50, 0x163c2, 0x2d876, 0x35482,
596         0x5b0d6, 0x5843a, 0x0039f, 0x0585e, 0x1a583, 0x3500f, 0x74b93, 0x39771,
597         0x003e4, 0x06912, 0x16c43, 0x357e1, 0x0058a, 0x0696f, 0x1f538, 0x5b0c9,
598         0x6a3cf, 0x005b6, 0x06af8, 0x1f534, 0x58483, 0x6a3e0, 0x00695, 0x07d02,
599         0x1cae8, 0x58485, 0x006a2, 0x0754a, 0x357ee, 0x3977b, 0x00748, 0x074b2,
600         0x34a7b, 0x00729, 0x0b1e0, 0x34649, 0x3e5e3, 0x0073d, 0x0d2c4, 0x3e5e6,
601         0x007bb, 0x0b099, 0x39762, 0x5b0ce, 0x6945f, 0x007d1, 0x0d5ab, 0x39779,
602         0x007d3, 0x0d52f, 0x39763, 0x6945c, 0x00b1a, 0x0d2c5, 0x35489, 0x00d23,
603         0x0eaed, 0x3e5f8, 0x00d32, 0x16016, 0x3e5fb, 0x00d41, 0x0e768, 0x3a5ed,
604         0x00e1f, 0x16017, 0x58027, 0x00ead, 0x0fa07, 0x69455, 0x00e54, 0x1612b,
605         0x00e55, 0x1a581, 0x00f78, 0x1a32b, 0x580bc, 0x6a3ee, 0x00f79, 0x1abfd,
606         0x00f95, 0x1ab18, 0x6a3f0, 0x01637, 0x1aa4d, 0x0162d, 0x1f53c, 0x6a3f3,
607         0x01a31, 0x1a810, 0x39769, 0x01a50, 0x1caef, 0x01a36, 0x1a32e, 0x01a67,
608         0x1f38e, 0x01a85, 0x1ef59, 0x01aa6, 0x1ef83, 0x01d51, 0x2c012, 0x01d53,
609         0x2d879, 0x01d5e, 0x35005, 0x01cba, 0x1cf04, 0x69453, 0x01d2d, 0x351ff,
610         0x01f2d, 0x2d86f, 0x01f29, 0x35007, 0x02c22, 0x351fa, 0x02c03, 0x3a5ec,
611         0x02c5f, 0x3a5eb, 0x02c58, 0x34a6b, 0x03469, 0x356be, 0x02c59, 0x34a6c,
612         0x0346a, 0x3a5ea, 0x034bd, 0x034bf, 0x356bf, 0x0386a, 0x03ab9, 0x5843f,
613         0x0386b, 0x3a5f5, 0x03a4b, 0x39421, 0x03aa4, 0x3a5e9, 0x03a5a, 0x03960,
614         0x3977e, 0x03de9, 0x03958, 0x03df7, 0x039e1, 0x3e5e4, 0x0395f, 0x69458,
615         0x03e91, 0x03df2, 0x39428, 0x058f2, 0x03e80, 0x6a3c3, 0x03e93, 0x694c0,
616         0x058b8, 0x5b0ca, 0x0584f, 0x694c1, 0x058f1, 0x068d6, 0x06a10, 0x06ac3,
617         0x06a32, 0x070d2, 0x06911, 0x074b1, 0x07494, 0x06ad4, 0x06ad6, 0x072b8,
618         0x06afa, 0x074b3, 0x07540, 0x073ce, 0x0b005, 0x074b3, 0x07495, 0x074b9,
619         0x0d336, 0x07bff, 0x07763, 0x073c8, 0x07d29, 0x0b622, 0x0d221, 0x0d181,
620         0x0b1d1, 0x074b8, 0x0b1d0, 0x0d19b, 0x0d2c3, 0x0b172, 0x0d2dc, 0x0b623,
621         0x0d5aa, 0x0d426, 0x0d182, 0x0e795, 0x0e1d1, 0x0d337, 0x0e96c, 0x0e5e4,
622         0x0e514, 0x0eaee, 0x16000, 0x0e767, 0x0e1a1, 0x0e78f, 0x16004, 0x0f7c2,
623         0x0e799, 0x0e5e7, 0x0e566, 0x0e769, 0x0f751, 0x0eede, 0x0fa06, 0x16005,
624         0x0fa9f, 0x1a5e6, 0x0e766, 0x1636f, 0x0eedd, 0x0eec0, 0x1a309, 0x1ceca,
625         0x163cd, 0x0f9cb, 0x0eedf, 0x1a582, 0x1612d, 0x0e5e5, 0x1abf8, 0x1a30c,
626         0x1ca1f, 0x163cc, 0x1a35c, 0x1ca1e, 0x1aa51, 0x163ac, 0x1a84e, 0x1a53f,
627         0x1cf16, 0x1d2fc, 0x1a5b3, 0x1ab19, 0x1a81f, 0x1d5c3, 0x16c3f, 0x1d5c1,
628         0x1d2fc, 0x1f4aa, 0x1a812, 0x1f535, 0x1cf12, 0x1a817, 0x1617c, 0x1ab0b,
629         0x1d2f8, 0x1ef82, 0x2d87a, 0x1d52f, 0x1f530, 0x1aa48, 0x35487, 0x1d2fd,
630         0x1f4ad, 0x1cf11, 0x3461b, 0x35485, 0x1ca20, 0x1caed, 0x1cae6, 0x1abff,
631         0x3464f, 0x34a6f, 0x1ef81, 0x3464b, 0x39d96, 0x1f383, 0x1f537, 0x1cf14,
632         0x2c5ce, 0x3500e, 0x2c251, 0x1caec, 0x1f387, 0x34654, 0x357e4, 0x2d878,
633         0x3500b, 0x35480, 0x3a5e8, 0x3548e, 0x34b64, 0x1f4a8, 0x35003, 0x3e5df,
634         0x2d870, 0x357e6, 0x3e5f0, 0x1ef5a, 0x3a5ea, 0x1f388, 0x3e703, 0x2c24e,
635         0x3a5e2, 0x351fd, 0x2c6dd, 0x3e704, 0x351fe, 0x2d875, 0x5b0c7, 0x3976a,
636         0x3a5e6, 0x39423, 0x58480, 0x2c246, 0x3a5e3, 0x2d877, 0x3e5f1, 0x3abbe,
637         0x58489, 0x3e5f9, 0x357e0, 0x3abbc, 0x5b0c6, 0x69167, 0x69165, 0x3e5e9,
638         0x39422, 0x3976f, 0x3977d, 0x3e5de, 0x6a3c9, 0x58b98, 0x3a5f6, 0x3a5d0,
639         0x58486, 0x6a3c1, 0x3e5fc, 0x5b0dc, 0x3548f, 0x3942d, 0x694c9, 0x58484,
640         0x3a5e8, 0x74b9b, 0x74b96, 0x694d0, 0x58488, 0x3a5e4, 0x3942a, 0x72ec2,
641         0x39776, 0x5b0d1, 0x5b0cf, 0x3a5d6, 0xe59fc, 0x5b0c8, 0x3e5e7, 0x7cbb7,
642         0x70e87, 0x7cbab, 0x5b0c2, 0x694c3, 0x74a8e, 0x3e5f3, 0x6a3cd, 0x72dfe,
643         0x73b2e, 0x72ec0, 0x694c5, 0x58437, 0x694c8, 0x72dff, 0x39435, 0x5843d,
644         0x6a3d7, 0x72ec1, 0xd22c8, 0x694cf, 0xb6173, 0x3e5fe, 0x580bb, 0xe59f2,
645         0xb616e, 0xb6175, 0x3a5da, 0x5b0bd, 0x694cc, 0x5843c, 0x694c7, 0x74b92,
646         0x72ec3, 0x694c6, 0xb6170, 0x7cbac, 0xb1733, 0x7cba4, 0xb6167, 0x72de7,
647         0x72de4, 0x6a3c0, 0x3e5ef, 0x162e65, 0x72de3, 0x72dfb, 0x6a35f, 0x6a3eb,
648 };
649
650 static const uint8_t coef2_huffbits[1336] = {
651         11, 9, 2, 3, 4, 4, 5, 6,
652         6, 7, 7, 8, 8, 8, 9, 9,
653         9, 9, 10, 10, 10, 10, 11, 11,
654         11, 11, 11, 11, 11, 12, 12, 12,
655         12, 12, 12, 12, 12, 12, 13, 13,
656         13, 13, 13, 13, 13, 13, 13, 14,
657         14, 14, 14, 14, 14, 14, 14, 14,
658         14, 14, 14, 14, 14, 15, 15, 15,
659         15, 15, 15, 15, 15, 15, 15, 15,
660         15, 15, 15, 15, 15, 16, 15, 16,
661         16, 16, 16, 16, 16, 16, 16, 16,
662         16, 16, 16, 16, 16, 16, 16, 16,
663         17, 17, 17, 17, 17, 17, 17, 17,
664         17, 17, 17, 18, 17, 17, 17, 17,
665         17, 17, 17, 18, 18, 17, 17, 18,
666         17, 17, 18, 17, 18, 18, 18, 18,
667         19, 18, 18, 18, 18, 18, 18, 20,
668         18, 18, 18, 19, 19, 18, 19, 18,
669         19, 19, 18, 19, 19, 18, 19, 19,
670         19, 19, 18, 19, 19, 19, 19, 19,
671         19, 19, 20, 20, 20, 19, 19, 20,
672         19, 20, 19, 19, 20, 19, 19, 20,
673         20, 20, 20, 19, 20, 21, 19, 3,
674         5, 7, 8, 9, 9, 10, 11, 11,
675         12, 12, 12, 13, 13, 13, 13, 14,
676         14, 14, 14, 15, 15, 15, 15, 15,
677         15, 15, 15, 15, 15, 15, 16, 16,
678         15, 15, 15, 15, 16, 16, 16, 16,
679         17, 16, 17, 17, 16, 17, 17, 17,
680         17, 17, 17, 16, 17, 17, 17, 17,
681         18, 17, 17, 18, 18, 18, 18, 18,
682         19, 18, 18, 18, 18, 18, 18, 19,
683         19, 18, 18, 18, 18, 19, 18, 19,
684         19, 19, 20, 19, 18, 19, 19, 19,
685         19, 19, 19, 19, 19, 19, 19, 20,
686         20, 19, 20, 19, 20, 19, 20, 19,
687         19, 21, 20, 20, 19, 4, 7, 8,
688         10, 11, 11, 12, 12, 13, 13, 14,
689         14, 14, 14, 15, 15, 15, 15, 15,
690         16, 16, 16, 16, 16, 16, 16, 17,
691         17, 17, 17, 17, 17, 17, 16, 16,
692         16, 16, 17, 17, 17, 17, 18, 18,
693         18, 17, 17, 18, 18, 18, 18, 18,
694         18, 18, 18, 18, 19, 18, 18, 18,
695         19, 18, 19, 19, 19, 20, 20, 20,
696         19, 19, 19, 19, 19, 19, 19, 21,
697         21, 20, 19, 5, 8, 10, 11, 12,
698         13, 13, 13, 14, 14, 15, 15, 15,
699         15, 16, 16, 16, 16, 16, 17, 17,
700         17, 17, 17, 17, 17, 17, 18, 17,
701         18, 17, 17, 17, 17, 17, 17, 17,
702         17, 17, 17, 17, 19, 18, 19, 18,
703         18, 18, 18, 18, 19, 18, 17, 17,
704         18, 18, 19, 19, 19, 19, 18, 18,
705         18, 19, 6, 9, 11, 12, 13, 13,
706         14, 14, 14, 15, 15, 16, 16, 16,
707         16, 16, 16, 17, 17, 17, 18, 18,
708         18, 18, 18, 18, 18, 18, 18, 18,
709         18, 17, 18, 18, 17, 18, 18, 18,
710         18, 18, 18, 19, 19, 18, 18, 18,
711         19, 19, 19, 20, 19, 19, 18, 19,
712         19, 20, 21, 21, 19, 19, 18, 6,
713         10, 12, 13, 14, 14, 14, 15, 15,
714         15, 16, 16, 17, 17, 17, 17, 17,
715         17, 17, 18, 18, 19, 18, 18, 18,
716         19, 18, 18, 18, 19, 18, 18, 18,
717         18, 18, 18, 18, 18, 18, 18, 18,
718         19, 20, 20, 19, 19, 19, 19, 20,
719         20, 19, 20, 19, 19, 19, 20, 20,
720         20, 19, 19, 18, 19, 7, 10, 12,
721         13, 14, 15, 15, 15, 16, 16, 17,
722         17, 17, 17, 17, 17, 18, 18, 18,
723         18, 19, 18, 19, 19, 19, 20, 19,
724         18, 19, 19, 18, 18, 19, 19, 19,
725         18, 19, 19, 20, 19, 18, 20, 21,
726         20, 20, 19, 19, 21, 20, 21, 20,
727         20, 20, 19, 19, 20, 20, 21, 20,
728         19, 7, 11, 13, 14, 15, 15, 15,
729         16, 16, 17, 17, 17, 17, 18, 18,
730         18, 18, 18, 19, 20, 19, 19, 20,
731         19, 19, 19, 19, 19, 19, 19, 19,
732         18, 18, 19, 20, 19, 19, 19, 20,
733         19, 19, 19, 20, 19, 20, 20, 21,
734         20, 20, 20, 21, 22, 20, 19, 20,
735         20, 21, 20, 21, 20, 19, 8, 11,
736         13, 14, 15, 16, 16, 16, 17, 17,
737         17, 18, 18, 18, 18, 18, 19, 18,
738         19, 19, 19, 19, 21, 19, 19, 21,
739         19, 20, 20, 20, 19, 18, 18, 8,
740         12, 14, 15, 16, 16, 16, 16, 17,
741         17, 17, 19, 18, 18, 19, 19, 20,
742         19, 18, 20, 19, 20, 20, 19, 19,
743         20, 20, 21, 21, 20, 19, 19, 19,
744         19, 19, 19, 20, 21, 20, 19, 19,
745         8, 12, 14, 15, 16, 16, 17, 17,
746         17, 18, 18, 18, 19, 19, 19, 19,
747         19, 19, 20, 21, 20, 21, 19, 21,
748         20, 20, 20, 20, 21, 20, 19, 20,
749         19, 20, 20, 20, 19, 22, 21, 21,
750         19, 9, 12, 14, 15, 16, 17, 17,
751         17, 18, 18, 18, 19, 19, 19, 19,
752         20, 19, 19, 19, 9, 13, 15, 16,
753         17, 17, 18, 18, 18, 19, 18, 20,
754         19, 20, 20, 20, 19, 9, 13, 15,
755         16, 17, 17, 18, 18, 18, 20, 18,
756         19, 20, 20, 20, 20, 19, 20, 19,
757         9, 13, 15, 16, 17, 18, 18, 18,
758         19, 19, 19, 19, 10, 14, 16, 17,
759         18, 18, 19, 19, 19, 19, 19, 10,
760         14, 16, 17, 18, 18, 18, 19, 19,
761         10, 14, 16, 17, 18, 18, 18, 19,
762         19, 20, 19, 10, 14, 16, 18, 18,
763         18, 19, 20, 19, 19, 10, 14, 17,
764         18, 18, 18, 10, 15, 17, 18, 19,
765         19, 21, 19, 11, 15, 17, 18, 18,
766         19, 19, 11, 15, 17, 18, 19, 19,
767         11, 15, 17, 18, 11, 15, 18, 19,
768         19, 11, 15, 18, 19, 19, 11, 16,
769         18, 19, 11, 15, 18, 19, 11, 16,
770         18, 12, 16, 18, 19, 12, 16, 19,
771         12, 16, 19, 19, 19, 12, 16, 19,
772         12, 16, 19, 19, 12, 16, 18, 12,
773         16, 19, 12, 17, 19, 12, 17, 19,
774         12, 17, 19, 12, 17, 19, 13, 17,
775         13, 17, 13, 17, 19, 19, 13, 17,
776         13, 17, 19, 13, 17, 13, 18, 19,
777         13, 17, 19, 13, 18, 13, 17, 13,
778         18, 13, 18, 13, 18, 13, 18, 13,
779         18, 13, 18, 14, 18, 19, 14, 18,
780         14, 18, 14, 18, 14, 18, 14, 19,
781         14, 19, 14, 18, 14, 18, 14, 18,
782         14, 19, 14, 14, 18, 14, 14, 19,
783         14, 18, 14, 19, 14, 19, 14, 15,
784         19, 15, 15, 15, 15, 19, 15, 19,
785         15, 15, 19, 15, 15, 19, 15, 19,
786         15, 19, 15, 19, 15, 15, 15, 15,
787         15, 15, 15, 15, 15, 15, 15, 16,
788         15, 15, 15, 16, 16, 16, 15, 16,
789         16, 16, 16, 16, 16, 16, 16, 16,
790         16, 16, 16, 16, 16, 16, 16, 16,
791         16, 16, 16, 17, 16, 16, 16, 17,
792         17, 16, 17, 17, 16, 17, 17, 17,
793         17, 17, 17, 17, 17, 17, 17, 17,
794         17, 17, 17, 17, 17, 17, 17, 18,
795         17, 17, 17, 17, 17, 17, 17, 17,
796         18, 17, 17, 18, 17, 17, 17, 17,
797         18, 18, 17, 17, 17, 17, 17, 17,
798         17, 18, 17, 18, 18, 17, 17, 17,
799         18, 18, 18, 17, 18, 17, 18, 18,
800         18, 18, 18, 18, 18, 18, 18, 17,
801         18, 18, 18, 18, 19, 18, 18, 18,
802         18, 18, 18, 18, 18, 18, 18, 18,
803         18, 18, 18, 18, 18, 18, 18, 19,
804         18, 18, 19, 18, 18, 18, 19, 18,
805         19, 18, 18, 19, 18, 18, 19, 19,
806         19, 19, 19, 18, 19, 18, 19, 18,
807         19, 19, 18, 18, 19, 19, 19, 19,
808         19, 19, 19, 19, 19, 19, 18, 19,
809         19, 19, 19, 19, 18, 19, 19, 19,
810         19, 19, 19, 19, 19, 19, 19, 20,
811         19, 19, 19, 19, 21, 19, 19, 20,
812         19, 20, 19, 19, 19, 19, 19, 20,
813         20, 20, 19, 19, 19, 20, 19, 19,
814         19, 20, 20, 19, 20, 19, 19, 21,
815         20, 20, 19, 19, 19, 19, 19, 19,
816         20, 19, 20, 20, 20, 20, 20, 20,
817         20, 19, 19, 21, 20, 20, 19, 19,
818 };
819
820 static const uint32_t coef3_huffcodes[1072] = {
821         0x001b2, 0x00069, 0x00000, 0x00004, 0x00006, 0x0000e, 0x00014, 0x00019,
822         0x00016, 0x0002b, 0x00030, 0x0003d, 0x0003c, 0x0005a, 0x0005f, 0x0006d,
823         0x0007e, 0x0005f, 0x0007f, 0x000b6, 0x000bc, 0x000d8, 0x000f2, 0x000fe,
824         0x000bc, 0x000fc, 0x00161, 0x0016e, 0x00174, 0x00176, 0x001a2, 0x001e3,
825         0x001f3, 0x00174, 0x0017a, 0x001ea, 0x002a8, 0x002c4, 0x002e6, 0x00314,
826         0x00346, 0x00367, 0x003e9, 0x002e5, 0x002ee, 0x003d6, 0x00555, 0x00554,
827         0x00557, 0x005c3, 0x005d6, 0x006e0, 0x0062f, 0x006e2, 0x00799, 0x00789,
828         0x007fa, 0x005ce, 0x007fe, 0x005ec, 0x007cc, 0x007af, 0x00aa7, 0x00b19,
829         0x00b94, 0x00b85, 0x00b9f, 0x00c48, 0x00c45, 0x00dd8, 0x00c4c, 0x00c4b,
830         0x00d99, 0x00d1f, 0x00dc2, 0x00f95, 0x00fa2, 0x00bb5, 0x00b9f, 0x00f5d,
831         0x00bbf, 0x00f47, 0x0154a, 0x00fd5, 0x00f45, 0x00f7f, 0x0160d, 0x01889,
832         0x01757, 0x01722, 0x018b3, 0x0172d, 0x01a39, 0x01a18, 0x01bb3, 0x01b30,
833         0x01e63, 0x0173c, 0x01b35, 0x01723, 0x01e80, 0x01fee, 0x01761, 0x01ffc,
834         0x01f7f, 0x02c7c, 0x01fa1, 0x0177b, 0x01755, 0x0175a, 0x01fa6, 0x02eab,
835         0x0310a, 0x02c69, 0x03669, 0x03127, 0x03103, 0x02e43, 0x03662, 0x03165,
836         0x03124, 0x0313b, 0x03111, 0x03668, 0x0343b, 0x03c52, 0x03efc, 0x02e6c,
837         0x03fda, 0x03ef8, 0x02e7b, 0x03ee2, 0x03cc5, 0x03d72, 0x058c0, 0x03df8,
838         0x02ea9, 0x03e7e, 0x0556d, 0x05c82, 0x03d71, 0x03e7b, 0x03c42, 0x058d7,
839         0x03f4e, 0x06200, 0x03d70, 0x05cb2, 0x05c96, 0x05cb0, 0x03f45, 0x05cb1,
840         0x02e6d, 0x03110, 0x02f68, 0x05c90, 0x07ca6, 0x07c88, 0x06204, 0x062c8,
841         0x078a6, 0x07986, 0x079d5, 0x0b1ad, 0x07989, 0x0b079, 0x05cdd, 0x0aad4,
842         0x05de8, 0x07dcd, 0x07987, 0x05d67, 0x05d99, 0x0b91d, 0x07cf1, 0x05d9b,
843         0x079d7, 0x0b07b, 0x05c85, 0x05d9a, 0x07dcc, 0x07ebf, 0x07dce, 0x07dfb,
844         0x07ec0, 0x07d1a, 0x07a07, 0x05c84, 0x0c471, 0x07cf2, 0x0baef, 0x0b9d2,
845         0x05deb, 0x07bd6, 0x0b845, 0x05d98, 0x0b91a, 0x0bae8, 0x0c4e0, 0x0dc31,
846         0x0f93d, 0x0bbce, 0x0d1d2, 0x0f7a9, 0x0d9b9, 0x0bbcb, 0x0b900, 0x0aad7,
847         0x0babd, 0x0c4e1, 0x0f46f, 0x0c588, 0x0c58b, 0x160e6, 0x0bbcf, 0x0bac3,
848         0x0f945, 0x0f7a3, 0x0d1c1, 0x0fb8e, 0x0f7a4, 0x0fb8c, 0x0f40c, 0x0c473,
849         0x0fd72, 0x0bbcd, 0x0fffa, 0x0f940, 0x0bbc9, 0x0f7a8, 0x1a1ed, 0x0bbc5,
850         0x1f26f, 0x163fd, 0x160c7, 0x1a1f5, 0x0f947, 0x163fc, 0x154b3, 0x0fff6,
851         0x163f6, 0x160e9, 0x1a1f0, 0x0bab9, 0x0baba, 0x17086, 0x0b903, 0x0fd75,
852         0x0f308, 0x176f3, 0x163ff, 0x0fd7d, 0x1bb78, 0x163fb, 0x188db, 0x1a1f7,
853         0x154b2, 0x172fd, 0x163f4, 0x1bb73, 0x172ff, 0x0babc, 0x0f97d, 0x1a1f3,
854         0x1bb6d, 0x1ffd5, 0x1a1f4, 0x1f272, 0x17380, 0x17382, 0x1ffe7, 0x0bac8,
855         0x0bbc4, 0x188d3, 0x160e0, 0x0fd7b, 0x1725f, 0x172f5, 0x1bb79, 0x1fad9,
856         0x1f269, 0x188d0, 0x0bac4, 0x0bac5, 0x31185, 0x188d2, 0x188cc, 0x31187,
857         0x3e7fe, 0x188d1, 0x1bb6c, 0x1f268, 0x1fad2, 0x1ffd9, 0x1a1ea, 0x1bb68,
858         0x1facb, 0x3fdb2, 0x1e81a, 0x188ce, 0x172fb, 0x1a1ef, 0x1face, 0x1bb70,
859         0x0bac1, 0x1bb6b, 0x172f8, 0x1bb66, 0x1ffdf, 0x1bb6a, 0x1ffd7, 0x1f266,
860         0x176f8, 0x37653, 0x1fa7e, 0x31182, 0x1fac8, 0x2c7e3, 0x370ee, 0x176ec,
861         0x176e9, 0x2e4bc, 0x160c5, 0x3765a, 0x3ce9c, 0x17373, 0x176e8, 0x188d4,
862         0x176f1, 0x176ef, 0x37659, 0x1bb7c, 0x1ffde, 0x176f2, 0x3118b, 0x2c7d4,
863         0x37651, 0x5ce9f, 0x37650, 0x31191, 0x3f4f6, 0x3f4f5, 0x7a06c, 0x1fac1,
864         0x5c97b, 0x2c7e0, 0x79d3a, 0x3e7fd, 0x2c7df, 0x3f4f0, 0x7a06d, 0x376c1,
865         0x79d3b, 0x00004, 0x00014, 0x00059, 0x000ab, 0x000b8, 0x00177, 0x001f5,
866         0x001f2, 0x00315, 0x003fc, 0x005bd, 0x0062d, 0x006e8, 0x007dd, 0x00b04,
867         0x007cd, 0x00b1e, 0x00d1e, 0x00f15, 0x00f3b, 0x00f41, 0x01548, 0x018b0,
868         0x0173b, 0x01884, 0x01a1c, 0x01bb4, 0x01f25, 0x017b5, 0x0176d, 0x01ef8,
869         0x02e73, 0x03107, 0x03125, 0x03105, 0x02e49, 0x03ce8, 0x03ef9, 0x03e5e,
870         0x02e72, 0x03471, 0x03fd9, 0x0623f, 0x078a0, 0x06867, 0x05cb3, 0x06272,
871         0x068ec, 0x06e9a, 0x079d4, 0x06e98, 0x0b1aa, 0x06e1a, 0x07985, 0x068ee,
872         0x06e9b, 0x05c88, 0x0b1ac, 0x07dfa, 0x05d65, 0x07cf0, 0x07cbf, 0x0c475,
873         0x160eb, 0x1bb7e, 0x0f7a6, 0x1fedd, 0x160e3, 0x0fffb, 0x0fb8d, 0x0fff9,
874         0x0d1c0, 0x0c58c, 0x1a1e9, 0x0bab8, 0x0f5cf, 0x0fff5, 0x376c5, 0x1a1ec,
875         0x160ed, 0x1fede, 0x1fac9, 0x1a1eb, 0x1f224, 0x176ee, 0x0fd79, 0x17080,
876         0x17387, 0x1bb7a, 0x1ffe9, 0x176f7, 0x17385, 0x17781, 0x2c7d5, 0x17785,
877         0x1ffe3, 0x163f5, 0x1fac2, 0x3e7f9, 0x3118d, 0x3fdb1, 0x1ffe2, 0x1f226,
878         0x3118a, 0x2c7d9, 0x31190, 0x3118c, 0x3f4f3, 0x1bb7f, 0x1bb72, 0x31184,
879         0xb92f4, 0x3e7fb, 0x6e1d9, 0x1faca, 0x62300, 0x3fdb8, 0x3d037, 0x3e7fc,
880         0x62301, 0x3f4f2, 0x1f26a, 0x0000e, 0x00063, 0x000f8, 0x001ee, 0x00377,
881         0x003f7, 0x006e3, 0x005cc, 0x00b05, 0x00dd2, 0x00fd4, 0x0172e, 0x0172a,
882         0x01e23, 0x01f2d, 0x01763, 0x01769, 0x0176c, 0x02e75, 0x03104, 0x02ec1,
883         0x03e58, 0x0583f, 0x03f62, 0x03f44, 0x058c5, 0x0623c, 0x05cf4, 0x07bd7,
884         0x05d9d, 0x0aad2, 0x05d66, 0x0b1a9, 0x0b078, 0x07cfe, 0x0b918, 0x0c46f,
885         0x0b919, 0x0b847, 0x06e1b, 0x0b84b, 0x0aad8, 0x0fd74, 0x172f4, 0x17081,
886         0x0f97c, 0x1f273, 0x0f7a0, 0x0fd7c, 0x172f7, 0x0fd7a, 0x1bb77, 0x172fe,
887         0x1f270, 0x0fd73, 0x1bb7b, 0x1a1bc, 0x1bb7d, 0x0bbc3, 0x172f6, 0x0baeb,
888         0x0fb8f, 0x3f4f4, 0x3fdb4, 0x376c8, 0x3e7fa, 0x1ffd0, 0x62303, 0xb92f5,
889         0x1f261, 0x31189, 0x3fdb5, 0x2c7db, 0x376c9, 0x1fad6, 0x1fad1, 0x00015,
890         0x000f0, 0x002e0, 0x0058e, 0x005d7, 0x00c4d, 0x00fa1, 0x00bdb, 0x01756,
891         0x01f70, 0x02c19, 0x0313c, 0x0370f, 0x03cc0, 0x02ea8, 0x058c6, 0x058c7,
892         0x02eb7, 0x058d0, 0x07d18, 0x0aa58, 0x0b848, 0x05d9e, 0x05d6c, 0x0b84c,
893         0x0c589, 0x0b901, 0x163f8, 0x0bac9, 0x0b9c5, 0x0f93c, 0x188d8, 0x0bbc7,
894         0x160ec, 0x0fd6f, 0x188d9, 0x160ea, 0x0f7a7, 0x0f944, 0x0baab, 0x0dc3a,
895         0x188cf, 0x176fb, 0x2c7d8, 0x2c7d7, 0x1bb75, 0x5ce9e, 0x62302, 0x370ed,
896         0x176f4, 0x1ffd1, 0x370ef, 0x3f4f8, 0x376c7, 0x1ffe1, 0x376c6, 0x176ff,
897         0x6e1d8, 0x176f6, 0x17087, 0x0f5cd, 0x00035, 0x001a0, 0x0058b, 0x00aac,
898         0x00b9a, 0x0175f, 0x01e22, 0x01e8c, 0x01fb2, 0x0310b, 0x058d1, 0x0552e,
899         0x05c27, 0x0686e, 0x07ca7, 0x0c474, 0x0dc33, 0x07bf2, 0x05de9, 0x07a35,
900         0x0baaa, 0x0b9eb, 0x0fb95, 0x0b9b8, 0x17381, 0x1f262, 0x188cd, 0x17088,
901         0x172fa, 0x0f7a2, 0x1fad3, 0x0bac0, 0x3765c, 0x1fedf, 0x1f225, 0x1fad4,
902         0x2c7da, 0x5ce9d, 0x3e7f8, 0x1e203, 0x188d7, 0x00054, 0x002c0, 0x007a1,
903         0x00f78, 0x01b36, 0x01fa3, 0x0313a, 0x03436, 0x0343a, 0x07d1d, 0x07bd8,
904         0x05cdf, 0x0b846, 0x0b189, 0x0d9b8, 0x0fff8, 0x0d9be, 0x0c58a, 0x05dea,
905         0x0d1d3, 0x160e4, 0x1f26b, 0x188da, 0x1e202, 0x2c7d2, 0x163fe, 0x31193,
906         0x17782, 0x376c2, 0x2c7d1, 0x3fdb0, 0x3765d, 0x2c7d0, 0x1fad0, 0x1e201,
907         0x188dd, 0x2c7e2, 0x37657, 0x37655, 0x376c4, 0x376c0, 0x176ea, 0x0006f,
908         0x003cf, 0x00dd5, 0x01f23, 0x02c61, 0x02ed0, 0x05d54, 0x0552d, 0x07883,
909         0x0b1a8, 0x0b91c, 0x0babf, 0x0b902, 0x0f7aa, 0x0f7a5, 0x1a1e8, 0x1ffd6,
910         0x0babe, 0x1a1bf, 0x163f3, 0x1ffd8, 0x1fad7, 0x1f275, 0x1ffdc, 0x0007d,
911         0x005bc, 0x01549, 0x02a99, 0x03def, 0x06273, 0x079d6, 0x07d1b, 0x0aad3,
912         0x0d0fc, 0x2c7dd, 0x188d6, 0x0bac2, 0x2c7e1, 0x1bb76, 0x1a1bd, 0x31186,
913         0x0fd78, 0x1a1be, 0x31183, 0x3fdb6, 0x3f4f1, 0x37652, 0x1fad5, 0x3f4f9,
914         0x3e7ff, 0x5ce9c, 0x3765b, 0x31188, 0x17372, 0x000bd, 0x0078b, 0x01f21,
915         0x03c43, 0x03ded, 0x0aad6, 0x07ec1, 0x0f942, 0x05c86, 0x17089, 0x0babb,
916         0x1ffe8, 0x2c7de, 0x1f26e, 0x1fac4, 0x3f4f7, 0x37656, 0x1fa7d, 0x376c3,
917         0x3fdb3, 0x3118f, 0x1fac6, 0x000f8, 0x007ed, 0x01efd, 0x03e7a, 0x05c91,
918         0x0aad9, 0x0baec, 0x0dc32, 0x0f46e, 0x1e200, 0x176fa, 0x3765e, 0x3fdb7,
919         0x2c7d6, 0x3fdb9, 0x37654, 0x37658, 0x3118e, 0x1ffdb, 0x000f6, 0x00c43,
920         0x03106, 0x068ef, 0x0b84d, 0x0b188, 0x0bbcc, 0x1f264, 0x1bb69, 0x17386,
921         0x1fac0, 0x00171, 0x00f39, 0x03e41, 0x068ed, 0x0d9bc, 0x0f7a1, 0x1bb67,
922         0x1ffdd, 0x176f9, 0x001b9, 0x00f7d, 0x03f63, 0x0d0fd, 0x0b9ea, 0x188dc,
923         0x1fac3, 0x1a1f2, 0x31192, 0x1ffe4, 0x001f6, 0x01754, 0x06865, 0x0f309,
924         0x160e5, 0x176f5, 0x3765f, 0x1facc, 0x001e9, 0x01a1a, 0x06201, 0x0f105,
925         0x176f0, 0x002df, 0x01756, 0x05d6d, 0x163fa, 0x176ed, 0x00342, 0x02e40,
926         0x0d0ff, 0x17082, 0x003cd, 0x02a98, 0x0fffc, 0x2c7dc, 0x1fa7f, 0x003fe,
927         0x03764, 0x0fffd, 0x176fc, 0x1fac5, 0x002f7, 0x02ed1, 0x0fb97, 0x0058a,
928         0x02edc, 0x0bbc8, 0x005d4, 0x0623d, 0x160e8, 0x0062e, 0x05830, 0x163f9,
929         0x006eb, 0x06205, 0x1f274, 0x007de, 0x062c9, 0x1f265, 0x005c9, 0x05cde,
930         0x1ffd3, 0x005d4, 0x07988, 0x007ce, 0x0b849, 0x00b1b, 0x05c89, 0x1fac7,
931         0x00b93, 0x05c83, 0x00b9e, 0x0f14f, 0x00c4a, 0x0b9c7, 0x00dd4, 0x0c470,
932         0x1f271, 0x00f38, 0x0fb96, 0x176eb, 0x00fa0, 0x163f7, 0x00bb2, 0x0b91b,
933         0x00bbe, 0x0f102, 0x00f44, 0x0f946, 0x1facd, 0x00f79, 0x0d9bd, 0x0154d,
934         0x0bbc6, 0x00fd2, 0x160e7, 0x0172b, 0x188cb, 0x0175e, 0x0fd76, 0x0175c,
935         0x1bb71, 0x0189f, 0x1a1ee, 0x01f24, 0x1a1f6, 0x01ba7, 0x0bbca, 0x01f7d,
936         0x0ffff, 0x01f2e, 0x1bb65, 0x01bb5, 0x172f9, 0x01fef, 0x1f26c, 0x01f3e,
937         0x0fd77, 0x01762, 0x1bb6e, 0x01ef9, 0x172fc, 0x01fa0, 0x02ab7, 0x02e4a,
938         0x1f267, 0x01fb3, 0x1ffda, 0x02e42, 0x03101, 0x17780, 0x0313d, 0x03475,
939         0x17784, 0x03126, 0x1facf, 0x03c51, 0x17783, 0x03e40, 0x1ffe5, 0x03663,
940         0x1ffe0, 0x03e8f, 0x1f26d, 0x0343c, 0x03cc1, 0x176fd, 0x03e45, 0x02ec0,
941         0x03f61, 0x03dee, 0x03fd8, 0x0583e, 0x02e45, 0x03e59, 0x03d02, 0x05ce8,
942         0x05568, 0x176fe, 0x02f69, 0x1fad8, 0x058c1, 0x05c83, 0x1ffe6, 0x06271,
943         0x06e1c, 0x062c7, 0x068e1, 0x0552f, 0x06864, 0x06866, 0x06e99, 0x05cbc,
944         0x07ca5, 0x078a1, 0x05c82, 0x07dcf, 0x0623b, 0x0623e, 0x068e8, 0x07a36,
945         0x05d9c, 0x0b077, 0x07cf3, 0x07a34, 0x07ca4, 0x07d19, 0x079d2, 0x07d1c,
946         0x07bd9, 0x0b84a, 0x0fb94, 0x0aad5, 0x0dc30, 0x07bf3, 0x0baee, 0x0b07a,
947         0x0c472, 0x0b91e, 0x0d9ba, 0x05d9f, 0x0d0fe, 0x0b9c6, 0x05c87, 0x0f14e,
948         0x0baed, 0x0b92e, 0x0f103, 0x0b9c4, 0x0fb91, 0x0d9bb, 0x0b1ab, 0x0c58d,
949         0x0fffe, 0x0f93b, 0x0f941, 0x0baea, 0x0b91f, 0x0f5cc, 0x0d9bf, 0x0f943,
950         0x0f104, 0x1f260, 0x0fb92, 0x0f93f, 0x0f3a6, 0x0bac7, 0x0f7ab, 0x0bac6,
951         0x17383, 0x0fd6d, 0x0bae9, 0x0fd6e, 0x1e74f, 0x188ca, 0x1f227, 0x0fb93,
952         0x0fb90, 0x0fff7, 0x17085, 0x17083, 0x160e1, 0x17084, 0x0f93e, 0x160e2,
953         0x160c6, 0x1a1f1, 0x1bb6f, 0x17384, 0x0fd70, 0x1f263, 0x188d5, 0x173a6,
954         0x0f5ce, 0x163f2, 0x0fd71, 0x1ffd2, 0x160c4, 0x1ffd4, 0x2c7d3, 0x1bb74,
955 };
956
957 static const uint8_t coef3_huffbits[1072] = {
958         9, 7, 2, 3, 4, 4, 5, 5,
959         6, 6, 6, 6, 7, 7, 7, 7,
960         7, 8, 8, 8, 8, 8, 8, 8,
961         9, 9, 9, 9, 9, 9, 9, 9,
962         9, 10, 10, 10, 10, 10, 10, 10,
963         10, 10, 10, 11, 11, 11, 11, 11,
964         11, 11, 11, 11, 11, 11, 11, 11,
965         11, 12, 11, 12, 12, 12, 12, 12,
966         12, 12, 12, 12, 12, 12, 12, 12,
967         12, 12, 12, 12, 12, 13, 13, 13,
968         13, 13, 13, 13, 13, 13, 13, 13,
969         13, 13, 13, 13, 13, 13, 13, 13,
970         13, 14, 13, 14, 14, 13, 14, 13,
971         13, 14, 14, 14, 14, 14, 14, 14,
972         14, 14, 14, 14, 14, 14, 14, 14,
973         14, 14, 14, 14, 14, 14, 14, 15,
974         14, 14, 15, 14, 14, 15, 15, 15,
975         15, 15, 15, 15, 15, 15, 14, 15,
976         15, 15, 15, 15, 15, 15, 15, 15,
977         15, 14, 15, 15, 15, 15, 15, 15,
978         15, 15, 15, 16, 15, 16, 16, 16,
979         16, 15, 15, 16, 16, 16, 16, 16,
980         15, 16, 16, 16, 15, 16, 15, 15,
981         16, 15, 16, 16, 16, 16, 16, 16,
982         16, 16, 16, 16, 16, 16, 16, 16,
983         16, 17, 16, 17, 16, 17, 17, 16,
984         17, 16, 17, 16, 16, 17, 17, 17,
985         16, 17, 16, 16, 17, 16, 17, 16,
986         17, 17, 16, 16, 17, 17, 17, 17,
987         17, 17, 17, 17, 16, 17, 17, 16,
988         17, 17, 17, 17, 17, 17, 17, 17,
989         16, 18, 17, 17, 17, 17, 17, 17,
990         17, 17, 17, 17, 17, 17, 16, 17,
991         17, 17, 17, 17, 17, 17, 17, 17,
992         17, 17, 17, 17, 17, 17, 17, 18,
993         17, 17, 17, 17, 18, 17, 17, 18,
994         19, 17, 17, 17, 18, 17, 17, 17,
995         18, 18, 18, 17, 17, 17, 18, 17,
996         17, 17, 17, 17, 17, 17, 17, 17,
997         18, 18, 18, 18, 18, 18, 18, 18,
998         18, 18, 17, 18, 18, 18, 18, 17,
999         18, 18, 18, 17, 17, 18, 18, 18,
1000         18, 19, 18, 18, 19, 19, 20, 18,
1001         19, 18, 19, 19, 18, 19, 20, 18,
1002         19, 4, 6, 7, 8, 9, 9, 9,
1003         10, 10, 10, 11, 11, 11, 11, 12,
1004         12, 12, 12, 12, 12, 13, 13, 13,
1005         13, 13, 13, 13, 13, 14, 14, 14,
1006         14, 14, 14, 14, 14, 14, 14, 14,
1007         14, 14, 14, 15, 15, 15, 15, 15,
1008         15, 15, 15, 15, 16, 15, 15, 15,
1009         15, 16, 16, 15, 16, 16, 15, 16,
1010         17, 17, 17, 17, 17, 16, 16, 16,
1011         16, 16, 17, 17, 17, 16, 18, 17,
1012         17, 17, 18, 17, 17, 18, 17, 17,
1013         17, 17, 17, 18, 17, 18, 18, 18,
1014         17, 17, 18, 19, 18, 18, 17, 17,
1015         18, 18, 18, 18, 19, 17, 17, 18,
1016         20, 19, 19, 18, 19, 18, 19, 19,
1017         19, 19, 17, 5, 7, 9, 10, 10,
1018         11, 11, 12, 12, 12, 13, 13, 13,
1019         13, 13, 14, 14, 14, 14, 14, 15,
1020         14, 15, 15, 15, 15, 15, 16, 16,
1021         16, 16, 16, 16, 16, 16, 16, 16,
1022         16, 16, 15, 16, 16, 17, 17, 17,
1023         16, 17, 17, 17, 17, 17, 17, 17,
1024         17, 17, 17, 17, 17, 17, 17, 16,
1025         16, 19, 18, 18, 19, 17, 19, 20,
1026         17, 18, 18, 18, 18, 18, 18, 6,
1027         8, 10, 11, 12, 12, 12, 13, 13,
1028         13, 14, 14, 14, 14, 15, 15, 15,
1029         15, 15, 15, 16, 16, 16, 16, 16,
1030         16, 17, 17, 17, 16, 16, 17, 17,
1031         17, 17, 17, 17, 17, 16, 16, 16,
1032         17, 18, 18, 18, 17, 19, 19, 18,
1033         18, 17, 18, 19, 18, 17, 18, 18,
1034         19, 18, 17, 17, 6, 9, 11, 12,
1035         13, 13, 13, 14, 14, 14, 15, 15,
1036         15, 15, 15, 16, 16, 16, 16, 16,
1037         16, 17, 16, 17, 17, 17, 17, 17,
1038         17, 17, 18, 17, 18, 17, 17, 18,
1039         18, 19, 19, 17, 17, 7, 10, 12,
1040         13, 13, 14, 14, 14, 14, 15, 16,
1041         16, 16, 16, 16, 16, 16, 16, 16,
1042         16, 17, 17, 17, 17, 18, 17, 18,
1043         18, 18, 18, 18, 18, 18, 18, 17,
1044         17, 18, 18, 18, 18, 18, 18, 7,
1045         10, 12, 13, 14, 15, 15, 15, 15,
1046         16, 16, 17, 17, 17, 17, 17, 17,
1047         17, 17, 17, 17, 18, 17, 17, 8,
1048         11, 13, 14, 15, 15, 15, 15, 16,
1049         16, 18, 17, 17, 18, 17, 17, 18,
1050         17, 17, 18, 18, 19, 18, 18, 19,
1051         19, 19, 18, 18, 18, 8, 11, 13,
1052         14, 15, 16, 16, 16, 16, 17, 17,
1053         17, 18, 17, 18, 19, 18, 18, 18,
1054         18, 18, 18, 8, 12, 14, 15, 15,
1055         16, 16, 16, 17, 17, 18, 18, 18,
1056         18, 18, 18, 18, 18, 17, 9, 12,
1057         14, 15, 16, 16, 17, 17, 17, 17,
1058         18, 9, 12, 14, 15, 16, 17, 17,
1059         17, 18, 9, 13, 15, 16, 17, 17,
1060         18, 17, 18, 17, 9, 13, 15, 16,
1061         17, 18, 18, 18, 10, 13, 15, 16,
1062         18, 10, 14, 16, 17, 18, 10, 14,
1063         16, 17, 10, 14, 16, 18, 18, 10,
1064         14, 16, 18, 18, 11, 15, 16, 11,
1065         15, 17, 11, 15, 17, 11, 15, 17,
1066         11, 15, 17, 11, 15, 17, 12, 16,
1067         17, 12, 15, 12, 16, 12, 16, 18,
1068         12, 16, 12, 16, 12, 16, 12, 16,
1069         17, 12, 16, 18, 12, 17, 13, 16,
1070         13, 16, 13, 16, 18, 13, 16, 13,
1071         17, 13, 17, 13, 17, 13, 17, 13,
1072         17, 13, 17, 13, 17, 13, 17, 13,
1073         16, 13, 17, 13, 17, 13, 17, 14,
1074         17, 14, 17, 14, 17, 14, 14, 14,
1075         17, 14, 17, 14, 14, 18, 14, 14,
1076         18, 14, 18, 14, 18, 14, 17, 14,
1077         17, 14, 17, 14, 14, 18, 14, 15,
1078         15, 15, 14, 15, 15, 14, 15, 15,
1079         15, 18, 15, 18, 15, 15, 17, 15,
1080         15, 15, 15, 15, 15, 15, 15, 15,
1081         15, 15, 16, 15, 15, 15, 15, 16,
1082         16, 16, 16, 16, 15, 15, 15, 15,
1083         16, 16, 16, 16, 16, 16, 16, 16,
1084         16, 16, 16, 16, 16, 16, 16, 16,
1085         16, 16, 16, 16, 16, 16, 16, 16,
1086         16, 16, 16, 16, 16, 17, 16, 16,
1087         16, 17, 16, 16, 16, 17, 17, 17,
1088         17, 17, 16, 17, 17, 17, 17, 16,
1089         16, 16, 17, 17, 17, 17, 16, 17,
1090         17, 17, 17, 17, 17, 17, 17, 17,
1091         17, 17, 17, 17, 17, 17, 18, 17,
1092 };
1093
1094 static const uint32_t coef4_huffcodes[476] = {
1095         0x00f01, 0x0001e, 0x00000, 0x00004, 0x00006, 0x0000d, 0x0000a, 0x00017,
1096         0x0001d, 0x00017, 0x0002c, 0x00031, 0x00039, 0x0003e, 0x00039, 0x0005a,
1097         0x00066, 0x00070, 0x0007b, 0x00070, 0x00077, 0x000af, 0x000c9, 0x000f2,
1098         0x000f4, 0x000b2, 0x000e3, 0x0015b, 0x0015d, 0x00181, 0x0019d, 0x001e3,
1099         0x001c5, 0x002b5, 0x002db, 0x00338, 0x003c3, 0x003cc, 0x003f0, 0x002cd,
1100         0x003fa, 0x003a1, 0x005b4, 0x00657, 0x007ab, 0x0074d, 0x0074c, 0x00ac1,
1101         0x00ac5, 0x0076b, 0x00ca8, 0x00f04, 0x00f00, 0x00fe3, 0x00f3c, 0x00f10,
1102         0x00f39, 0x00fe6, 0x00e26, 0x00e90, 0x016c5, 0x01827, 0x01954, 0x015c5,
1103         0x01958, 0x01f8a, 0x01c4a, 0x02b0f, 0x02b41, 0x02b0e, 0x033c6, 0x03050,
1104         0x01c4f, 0x02d88, 0x0305c, 0x03c18, 0x02b4f, 0x02cc2, 0x03a47, 0x05680,
1105         0x0569d, 0x06442, 0x06443, 0x06446, 0x0656e, 0x06444, 0x07120, 0x0748a,
1106         0x0c1ba, 0x07e22, 0x07aa6, 0x07f25, 0x07aa7, 0x07e20, 0x0c11b, 0x0c118,
1107         0x07aa5, 0x0ad0a, 0x0f389, 0x19ebb, 0x0caad, 0x0fe42, 0x0fe40, 0x16c34,
1108         0x2b4e5, 0x33d65, 0x16c30, 0x1e7ae, 0x1e25c, 0x18370, 0x1e703, 0x19eba,
1109         0x16c37, 0x0e234, 0x16c6e, 0x00004, 0x0002a, 0x00061, 0x00075, 0x000cb,
1110         0x000ff, 0x00190, 0x001eb, 0x001d1, 0x002b9, 0x00307, 0x00339, 0x0033f,
1111         0x003fb, 0x003b4, 0x0060c, 0x00679, 0x00645, 0x0067d, 0x0078a, 0x007e3,
1112         0x00749, 0x00ac4, 0x00ad2, 0x00ae3, 0x00c10, 0x00c16, 0x00ad1, 0x00cf4,
1113         0x00fe2, 0x01586, 0x00e9d, 0x019f1, 0x01664, 0x01e26, 0x01d38, 0x02b4d,
1114         0x033c5, 0x01fc2, 0x01fc3, 0x01d28, 0x03c1d, 0x0598e, 0x0f094, 0x07aa4,
1115         0x0ad38, 0x0ac0c, 0x0c11a, 0x079ea, 0x0c881, 0x0fe44, 0x0b635, 0x0ac0d,
1116         0x0b61e, 0x05987, 0x07121, 0x0f382, 0x0f387, 0x0e237, 0x0fe47, 0x0f383,
1117         0x0f091, 0x0f385, 0x0e233, 0x182ee, 0x19eb8, 0x1663e, 0x0f093, 0x00014,
1118         0x00058, 0x00159, 0x00167, 0x00300, 0x003d4, 0x005b5, 0x0079d, 0x0076a,
1119         0x00b67, 0x00b60, 0x00f05, 0x00cf0, 0x00f17, 0x00e95, 0x01822, 0x01913,
1120         0x016c2, 0x0182f, 0x01959, 0x01fcb, 0x01e27, 0x01c40, 0x033c7, 0x01e7b,
1121         0x01c49, 0x02d89, 0x01e23, 0x01660, 0x03f12, 0x02cc6, 0x033e1, 0x05b34,
1122         0x0609a, 0x06569, 0x07488, 0x07e21, 0x0cf5f, 0x0712c, 0x0389d, 0x067cf,
1123         0x07f28, 0x1663f, 0x33d67, 0x1663d, 0x1e25d, 0x3c1ab, 0x15c44, 0x16c36,
1124         0x0001f, 0x000ec, 0x00323, 0x005b2, 0x0079f, 0x00ac2, 0x00f16, 0x00e9e,
1125         0x01956, 0x01e0f, 0x019ea, 0x01666, 0x02b89, 0x02b02, 0x02d8c, 0x03c1b,
1126         0x03c19, 0x032b5, 0x03f9c, 0x02ccf, 0x03897, 0x05b35, 0x0ad02, 0x07f29,
1127         0x06441, 0x03884, 0x07888, 0x0784e, 0x06568, 0x0c1bb, 0x05986, 0x067cc,
1128         0x0fe49, 0x0fe48, 0x0c1bc, 0x0fe41, 0x18371, 0x1663c, 0x0e231, 0x0711e,
1129         0x0ad09, 0x0f092, 0x0002d, 0x001db, 0x00781, 0x00c1a, 0x00f55, 0x01580,
1130         0x01ea8, 0x02d9b, 0x032af, 0x03f16, 0x03c1c, 0x07834, 0x03c45, 0x0389c,
1131         0x067ce, 0x06445, 0x0c1b9, 0x07889, 0x07f3a, 0x0784f, 0x07f2b, 0x0ad0b,
1132         0x0f090, 0x0c11d, 0x0e94e, 0x0711f, 0x0e9f1, 0x0f38e, 0x079e9, 0x0ad03,
1133         0x0f09b, 0x0caae, 0x0fe46, 0x2b4e6, 0x0e9f0, 0x19eb6, 0x67ac1, 0x67ac0,
1134         0x33d66, 0x0f388, 0x00071, 0x003a0, 0x00ca9, 0x01829, 0x01d39, 0x02b43,
1135         0x02cc4, 0x06554, 0x0f09a, 0x0b61f, 0x067cd, 0x0711c, 0x0b636, 0x07f2a,
1136         0x0b634, 0x0c11f, 0x0cf5e, 0x0b61d, 0x0f06b, 0x0caab, 0x0c1be, 0x0e94c,
1137         0x0f099, 0x182ed, 0x0e94f, 0x0c119, 0x0e232, 0x2b4e4, 0x0f38a, 0x19eb4,
1138         0x1e25f, 0x0e94d, 0x000b7, 0x00785, 0x016cc, 0x03051, 0x033c4, 0x0656f,
1139         0x03891, 0x0711d, 0x0caaf, 0x0f097, 0x07489, 0x0f098, 0x0c880, 0x0caaa,
1140         0x0f386, 0x19eb7, 0x16c6f, 0x0f384, 0x182e8, 0x182e9, 0x0e230, 0x1e700,
1141         0x33d62, 0x33d63, 0x33d64, 0x16c33, 0x0e216, 0x000fd, 0x00c15, 0x01665,
1142         0x03c4a, 0x07f3b, 0x07896, 0x0c11c, 0x0e215, 0x16c32, 0x0f38b, 0x0f38d,
1143         0x182ea, 0x1e701, 0x712df, 0x15c46, 0x00194, 0x00fe0, 0x03f13, 0x0748b,
1144         0x0f096, 0x0cf80, 0x1e25e, 0xe25bd, 0x33d61, 0x16c31, 0x001f9, 0x01912,
1145         0x05710, 0x0f3d0, 0x0c1bf, 0x00301, 0x01e24, 0x0ad08, 0x003cd, 0x01c41,
1146         0x0c1bd, 0x00563, 0x03a52, 0x0f3d1, 0x00570, 0x02cce, 0x0e217, 0x0067b,
1147         0x0655d, 0x0074b, 0x06447, 0x00c12, 0x074fb, 0x00f08, 0x0b61c, 0x00e22,
1148         0x0fe43, 0x016c7, 0x01836, 0x019f2, 0x01c43, 0x01d3f, 0x01fcf, 0x02b4c,
1149         0x0304c, 0x032b6, 0x03a46, 0x05607, 0x03f17, 0x02cc5, 0x0609b, 0x0655c,
1150         0x07e23, 0x067c1, 0x07f26, 0x07f27, 0x0f095, 0x0e9f3, 0x0cf81, 0x0c11e,
1151         0x0caac, 0x0f38f, 0x0e9f2, 0x074fa, 0x0e236, 0x0fe45, 0x1c428, 0x0e235,
1152         0x182ef, 0x19eb5, 0x0f3d6, 0x182ec, 0x16c35, 0x0f38c, 0x2b4e7, 0x15c47,
1153         0xe25bc, 0x1e702, 0x1c4b6, 0x0e25a, 0x3c1aa, 0x15c45, 0x1c429, 0x19eb9,
1154         0x1e7af, 0x182eb, 0x1e0d4, 0x3896e,
1155 };
1156
1157 static const uint8_t coef4_huffbits[476] = {
1158         12, 6, 2, 3, 4, 4, 5, 5,
1159         5, 6, 6, 6, 6, 6, 7, 7,
1160         7, 7, 7, 8, 8, 8, 8, 8,
1161         8, 9, 9, 9, 9, 9, 9, 9,
1162         10, 10, 10, 10, 10, 10, 10, 11,
1163         10, 11, 11, 11, 11, 12, 12, 12,
1164         12, 12, 12, 12, 12, 12, 12, 12,
1165         12, 12, 13, 13, 13, 13, 13, 13,
1166         13, 13, 14, 14, 14, 14, 14, 14,
1167         14, 14, 14, 14, 14, 15, 15, 15,
1168         15, 15, 15, 15, 15, 15, 16, 16,
1169         16, 15, 15, 15, 15, 15, 16, 16,
1170         15, 16, 16, 17, 16, 16, 16, 17,
1171         18, 18, 17, 17, 17, 17, 17, 17,
1172         17, 17, 17, 4, 6, 7, 8, 8,
1173         8, 9, 9, 10, 10, 10, 10, 10,
1174         10, 11, 11, 11, 11, 11, 11, 11,
1175         12, 12, 12, 12, 12, 12, 12, 12,
1176         12, 13, 13, 13, 14, 13, 14, 14,
1177         14, 13, 13, 14, 14, 16, 16, 15,
1178         16, 16, 16, 15, 16, 16, 16, 16,
1179         16, 16, 16, 16, 16, 17, 16, 16,
1180         16, 16, 17, 17, 17, 18, 16, 5,
1181         8, 9, 10, 10, 10, 11, 11, 12,
1182         12, 12, 12, 12, 12, 13, 13, 13,
1183         13, 13, 13, 13, 13, 14, 14, 13,
1184         14, 14, 13, 14, 14, 15, 14, 15,
1185         15, 15, 16, 15, 16, 16, 15, 15,
1186         15, 18, 18, 18, 17, 18, 17, 17,
1187         6, 9, 10, 11, 11, 12, 12, 13,
1188         13, 13, 13, 14, 14, 14, 14, 14,
1189         14, 14, 14, 15, 15, 15, 16, 15,
1190         15, 15, 15, 15, 15, 16, 16, 15,
1191         16, 16, 16, 16, 17, 18, 17, 16,
1192         16, 16, 7, 10, 11, 12, 12, 13,
1193         13, 14, 14, 14, 14, 15, 14, 15,
1194         15, 15, 16, 15, 15, 15, 15, 16,
1195         16, 16, 17, 16, 17, 16, 15, 16,
1196         16, 16, 16, 18, 17, 17, 19, 19,
1197         18, 16, 7, 11, 12, 13, 14, 14,
1198         15, 15, 16, 16, 15, 16, 16, 15,
1199         16, 16, 16, 16, 16, 16, 16, 17,
1200         16, 17, 17, 16, 17, 18, 16, 17,
1201         17, 17, 8, 11, 13, 14, 14, 15,
1202         15, 16, 16, 16, 16, 16, 16, 16,
1203         16, 17, 17, 16, 17, 17, 17, 17,
1204         18, 18, 18, 17, 17, 8, 12, 14,
1205         14, 15, 15, 16, 17, 17, 16, 16,
1206         17, 17, 20, 17, 9, 12, 14, 16,
1207         16, 16, 17, 21, 18, 17, 9, 13,
1208         15, 16, 16, 10, 13, 16, 10, 14,
1209         16, 11, 15, 16, 11, 15, 17, 11,
1210         15, 12, 15, 12, 16, 12, 16, 13,
1211         16, 13, 13, 13, 14, 14, 13, 14,
1212         14, 14, 15, 15, 14, 15, 15, 15,
1213         15, 15, 15, 15, 16, 17, 16, 16,
1214         16, 16, 17, 16, 17, 16, 18, 17,
1215         17, 17, 16, 17, 17, 16, 18, 17,
1216         21, 17, 18, 17, 18, 17, 18, 17,
1217         17, 17, 17, 19,
1218 };
1219
1220 static const uint32_t coef5_huffcodes[435] = {
1221         0x00347, 0x0000b, 0x00001, 0x00001, 0x0000c, 0x00004, 0x00010, 0x00015,
1222         0x0001f, 0x0000b, 0x00023, 0x00026, 0x00029, 0x00035, 0x00037, 0x00001,
1223         0x00015, 0x0001a, 0x0001d, 0x0001c, 0x0001e, 0x0004e, 0x00049, 0x00051,
1224         0x00078, 0x00004, 0x00000, 0x00008, 0x0000d, 0x0007b, 0x00005, 0x00032,
1225         0x00095, 0x00091, 0x00096, 0x000a1, 0x000d9, 0x00003, 0x00019, 0x00061,
1226         0x00066, 0x00060, 0x00017, 0x0000e, 0x00063, 0x001a0, 0x001b7, 0x001e6,
1227         0x001e7, 0x001b6, 0x00018, 0x001e8, 0x00038, 0x00031, 0x00005, 0x0003d,
1228         0x00027, 0x001ea, 0x0001a, 0x000c5, 0x000f9, 0x000ff, 0x000db, 0x00250,
1229         0x000fc, 0x0025c, 0x00008, 0x00075, 0x003d7, 0x003d3, 0x001b0, 0x0007c,
1230         0x003ca, 0x00036, 0x00189, 0x004a6, 0x004a2, 0x004fb, 0x000c0, 0x0007f,
1231         0x0009a, 0x00311, 0x0006e, 0x0009b, 0x0068c, 0x006c0, 0x00484, 0x00012,
1232         0x000c3, 0x0094f, 0x00979, 0x009f9, 0x00d09, 0x00da6, 0x00da8, 0x00901,
1233         0x000c1, 0x00373, 0x00d08, 0x009fa, 0x00d8b, 0x00d85, 0x00d86, 0x000df,
1234         0x006e2, 0x000ce, 0x00f24, 0x009fe, 0x001f7, 0x007c1, 0x000cf, 0x009fc,
1235         0x009ff, 0x00d89, 0x00da9, 0x009fd, 0x001f8, 0x01a36, 0x0128c, 0x0129d,
1236         0x01a37, 0x00196, 0x003ea, 0x00f8b, 0x00d93, 0x01e45, 0x01e58, 0x01e4b,
1237         0x01e59, 0x013f1, 0x00309, 0x00265, 0x00308, 0x0243a, 0x027e1, 0x00f89,
1238         0x00324, 0x03cbc, 0x03c86, 0x03695, 0x0243c, 0x0243b, 0x0243e, 0x01e4a,
1239         0x003a5, 0x03468, 0x03428, 0x03c84, 0x027e0, 0x025e2, 0x01880, 0x00197,
1240         0x00325, 0x03cb7, 0x0791e, 0x007ec, 0x06c75, 0x004c8, 0x04bc7, 0x004c6,
1241         0x00983, 0x0481e, 0x01b53, 0x0251b, 0x01b58, 0x00984, 0x04fa8, 0x03cbb,
1242         0x00f8a, 0x00322, 0x0346a, 0x0243d, 0x00326, 0x03469, 0x0481f, 0x0481d,
1243         0x00746, 0x09032, 0x01b50, 0x01d13, 0x0d8e4, 0x0481b, 0x06c74, 0x0796b,
1244         0x07969, 0x00985, 0x0d8e3, 0x00986, 0x00fa2, 0x01301, 0x06c7c, 0x00987,
1245         0x03cb8, 0x0f4af, 0x00e88, 0x1b1c0, 0x00fce, 0x033eb, 0x03f6a, 0x03f69,
1246         0x00fcf, 0x0791f, 0x004c9, 0x04871, 0x00fcd, 0x00982, 0x00fcc, 0x00fa3,
1247         0x01d12, 0x0796c, 0x01b47, 0x00321, 0x0796a, 0x0d8e2, 0x04872, 0x04873,
1248         0x0000e, 0x00014, 0x0000a, 0x000a0, 0x00012, 0x0007d, 0x001a2, 0x0003b,
1249         0x0025f, 0x000dd, 0x0027c, 0x00343, 0x00368, 0x0036b, 0x0003e, 0x001fa,
1250         0x00485, 0x001b3, 0x0007f, 0x001b1, 0x0019e, 0x004ba, 0x007ad, 0x00339,
1251         0x00066, 0x007a4, 0x00793, 0x006c6, 0x0007e, 0x000f1, 0x00372, 0x009fb,
1252         0x00d83, 0x00d8a, 0x00947, 0x009f4, 0x001d0, 0x01b09, 0x01b4b, 0x007ec,
1253         0x003e1, 0x000ca, 0x003ec, 0x02539, 0x04fa9, 0x01b57, 0x03429, 0x03d2a,
1254         0x00d97, 0x003a7, 0x00dc0, 0x00d96, 0x00dc1, 0x007eb, 0x03cba, 0x00c43,
1255         0x00c41, 0x01b52, 0x007ef, 0x00323, 0x03cb9, 0x03c83, 0x007d0, 0x007ed,
1256         0x06c7f, 0x09033, 0x03f6c, 0x36383, 0x1e95d, 0x06c78, 0x00747, 0x01b51,
1257         0x00022, 0x00016, 0x00039, 0x00252, 0x00079, 0x00486, 0x00338, 0x00369,
1258         0x00d88, 0x00026, 0x00d87, 0x00f4b, 0x00d82, 0x00027, 0x001e1, 0x01a15,
1259         0x007c7, 0x012f0, 0x001e0, 0x006d0, 0x01a16, 0x01e44, 0x01e5f, 0x03690,
1260         0x00d90, 0x00c42, 0x00daf, 0x00d92, 0x00f80, 0x00cfb, 0x0342f, 0x0487f,
1261         0x01b46, 0x07968, 0x00d95, 0x00d91, 0x01b55, 0x03f68, 0x04bc6, 0x03cbd,
1262         0x00f81, 0x00320, 0x00069, 0x000fe, 0x006d5, 0x0033f, 0x000de, 0x007c6,
1263         0x01e40, 0x00d94, 0x00f88, 0x03c8e, 0x03694, 0x00dae, 0x00dad, 0x00267,
1264         0x003a6, 0x00327, 0x0487e, 0x007ee, 0x00749, 0x004c7, 0x03692, 0x01b56,
1265         0x00fd1, 0x07a56, 0x06c77, 0x09031, 0x00748, 0x06c7a, 0x0796d, 0x033ea,
1266         0x06c76, 0x00fd0, 0x36382, 0x1e417, 0x00745, 0x04faf, 0x0d8e1, 0x03f6b,
1267         0x1e95c, 0x04fad, 0x0009e, 0x004bd, 0x0067c, 0x01b08, 0x003eb, 0x01b45,
1268         0x03691, 0x0d8e5, 0x07904, 0x00981, 0x007ea, 0x019f4, 0x06c7d, 0x04fab,
1269         0x04fac, 0x06c7e, 0x01300, 0x06c7b, 0x0006f, 0x003f7, 0x03c85, 0x004c4,
1270         0x0001e, 0x006e1, 0x03693, 0x01b44, 0x00241, 0x01e46, 0x0019d, 0x00266,
1271         0x004bb, 0x02538, 0x007ac, 0x01b54, 0x00902, 0x04870, 0x00da7, 0x00900,
1272         0x00185, 0x06c79, 0x006e3, 0x003e9, 0x01e94, 0x003ed, 0x003f2, 0x0342e,
1273         0x0346b, 0x0251a, 0x004c5, 0x01881, 0x0481c, 0x01b59, 0x03c87, 0x04fae,
1274         0x007e9, 0x03f6d, 0x0f20a, 0x09030, 0x04faa, 0x0d8e6, 0x03f6f, 0x0481a,
1275         0x03f6e, 0x1e416, 0x0d8e7,
1276 };
1277
1278 static const uint8_t coef5_huffbits[435] = {
1279         10, 4, 2, 4, 4, 5, 5, 5,
1280         5, 6, 6, 6, 6, 6, 6, 7,
1281         7, 7, 7, 7, 7, 7, 7, 7,
1282         7, 8, 8, 8, 8, 7, 8, 8,
1283         8, 8, 8, 8, 8, 9, 9, 9,
1284         9, 9, 9, 9, 9, 9, 9, 9,
1285         9, 9, 10, 9, 10, 10, 10, 10,
1286         10, 9, 10, 10, 10, 10, 10, 10,
1287         10, 10, 11, 11, 10, 10, 11, 11,
1288         10, 11, 11, 11, 11, 11, 12, 12,
1289         12, 12, 12, 12, 11, 11, 11, 12,
1290         12, 12, 12, 12, 12, 12, 12, 12,
1291         12, 12, 12, 12, 12, 12, 12, 13,
1292         13, 13, 12, 12, 13, 13, 13, 12,
1293         12, 12, 12, 12, 13, 13, 13, 13,
1294         13, 14, 14, 14, 14, 13, 13, 13,
1295         13, 13, 14, 14, 14, 14, 14, 14,
1296         15, 14, 14, 14, 14, 14, 14, 13,
1297         14, 14, 14, 14, 14, 14, 15, 14,
1298         15, 14, 15, 15, 15, 15, 15, 15,
1299         16, 15, 15, 14, 15, 16, 15, 14,
1300         14, 15, 14, 14, 15, 14, 15, 15,
1301         15, 16, 15, 17, 16, 15, 15, 15,
1302         15, 16, 16, 16, 16, 17, 15, 16,
1303         14, 16, 16, 17, 16, 16, 16, 16,
1304         16, 15, 15, 15, 16, 16, 16, 16,
1305         17, 15, 15, 15, 15, 16, 15, 15,
1306         4, 7, 8, 8, 9, 9, 9, 10,
1307         10, 10, 10, 10, 10, 10, 11, 11,
1308         11, 11, 11, 11, 11, 11, 11, 12,
1309         12, 11, 11, 11, 12, 12, 12, 12,
1310         12, 12, 12, 12, 13, 13, 13, 13,
1311         12, 13, 14, 14, 15, 15, 14, 14,
1312         14, 14, 14, 14, 14, 15, 14, 14,
1313         14, 15, 15, 15, 14, 14, 15, 15,
1314         15, 16, 16, 18, 17, 15, 15, 15,
1315         6, 9, 10, 10, 11, 11, 12, 12,
1316         12, 13, 12, 12, 12, 13, 13, 13,
1317         13, 13, 13, 13, 13, 13, 13, 14,
1318         14, 14, 14, 14, 14, 14, 14, 15,
1319         15, 15, 14, 14, 15, 16, 15, 14,
1320         14, 15, 7, 10, 11, 12, 13, 13,
1321         13, 14, 14, 14, 14, 14, 14, 14,
1322         14, 15, 15, 15, 15, 15, 14, 15,
1323         16, 15, 15, 16, 15, 15, 15, 16,
1324         15, 16, 18, 17, 15, 15, 16, 16,
1325         17, 15, 8, 11, 13, 13, 14, 15,
1326         14, 16, 15, 16, 15, 15, 15, 15,
1327         15, 15, 17, 15, 9, 12, 14, 15,
1328         10, 13, 14, 15, 10, 13, 11, 14,
1329         11, 14, 11, 15, 12, 15, 12, 12,
1330         13, 15, 13, 14, 13, 14, 14, 14,
1331         14, 14, 15, 15, 15, 15, 14, 15,
1332         15, 16, 16, 16, 15, 16, 16, 15,
1333         16, 17, 16,
1334 };
1335
1336 static const uint16_t levels0[60] = {
1337         317, 92, 62, 60, 19, 17, 10, 7,
1338         6, 5, 5, 3, 3, 3, 2, 2,
1339         2, 2, 2, 2, 2, 1, 2, 2,
1340         1, 1, 1, 1, 1, 1, 1, 1,
1341         1, 1, 1, 1, 1, 1, 1, 1,
1342         1, 1, 1, 1, 1, 1, 1, 1,
1343         1, 1, 1, 1, 1, 1, 1, 1,
1344         1, 1, 1, 1,
1345 };
1346
1347 static const uint16_t levels1[40] = {
1348         311, 91, 61, 28, 10, 6, 5, 2,
1349         2, 2, 2, 2, 2, 2, 2, 1,
1350         1, 1, 1, 1, 1, 1, 1, 1,
1351         1, 1, 1, 1, 1, 1, 1, 1,
1352         1, 1, 1, 1, 1, 1, 1, 1,
1353 };
1354
1355 static const uint16_t levels2[340] = {
1356         181, 110, 78, 63, 61, 62, 60, 61,
1357         33, 41, 41, 19, 17, 19, 12, 11,
1358         9, 11, 10, 6, 8, 7, 6, 4,
1359         5, 5, 4, 4, 3, 4, 3, 5,
1360         3, 4, 3, 3, 3, 3, 3, 3,
1361         2, 2, 4, 2, 3, 2, 3, 3,
1362         2, 2, 2, 2, 2, 2, 2, 2,
1363         3, 2, 2, 2, 2, 2, 2, 2,
1364         2, 2, 2, 1, 2, 1, 2, 2,
1365         2, 2, 1, 2, 1, 1, 1, 2,
1366         2, 1, 2, 1, 2, 2, 2, 2,
1367         1, 1, 1, 1, 1, 1, 1, 1,
1368         1, 1, 1, 1, 1, 1, 1, 1,
1369         1, 1, 1, 1, 1, 1, 1, 1,
1370         1, 1, 1, 1, 1, 1, 1, 1,
1371         1, 1, 1, 1, 1, 1, 1, 1,
1372         1, 1, 1, 1, 1, 1, 1, 1,
1373         1, 1, 1, 1, 1, 1, 1, 1,
1374         1, 1, 1, 1, 1, 1, 1, 1,
1375         1, 1, 1, 1, 1, 1, 1, 1,
1376         1, 1, 1, 1, 1, 1, 1, 1,
1377         1, 1, 1, 1, 1, 1, 1, 1,
1378         1, 1, 1, 1, 1, 1, 1, 1,
1379         1, 1, 1, 1, 1, 1, 1, 1,
1380         1, 1, 1, 1, 1, 1, 1, 1,
1381         1, 1, 1, 1, 1, 1, 1, 1,
1382         1, 1, 1, 1, 1, 1, 1, 1,
1383         1, 1, 1, 1, 1, 1, 1, 1,
1384         1, 1, 1, 1, 1, 1, 1, 1,
1385         1, 1, 1, 1, 1, 1, 1, 1,
1386         1, 1, 1, 1, 1, 1, 1, 1,
1387         1, 1, 1, 1, 1, 1, 1, 1,
1388         1, 1, 1, 1, 1, 1, 1, 1,
1389         1, 1, 1, 1, 1, 1, 1, 1,
1390         1, 1, 1, 1, 1, 1, 1, 1,
1391         1, 1, 1, 1, 1, 1, 1, 1,
1392         1, 1, 1, 1, 1, 1, 1, 1,
1393         1, 1, 1, 1, 1, 1, 1, 1,
1394         1, 1, 1, 1, 1, 1, 1, 1,
1395         1, 1, 1, 1, 1, 1, 1, 1,
1396         1, 1, 1, 1, 1, 1, 1, 1,
1397         1, 1, 1, 1, 1, 1, 1, 1,
1398         1, 1, 1, 1,
1399 };
1400
1401 static const uint16_t levels3[180] = {
1402         351, 122, 76, 61, 41, 42, 24, 30,
1403         22, 19, 11, 9, 10, 8, 5, 5,
1404         4, 5, 5, 3, 3, 3, 3, 3,
1405         3, 3, 2, 2, 3, 2, 2, 2,
1406         3, 3, 2, 2, 2, 3, 2, 2,
1407         2, 2, 2, 2, 2, 2, 2, 2,
1408         2, 2, 2, 2, 2, 2, 1, 1,
1409         2, 2, 1, 2, 1, 2, 2, 2,
1410         2, 2, 2, 1, 2, 1, 1, 1,
1411         1, 1, 1, 1, 1, 1, 1, 2,
1412         2, 1, 2, 1, 1, 1, 1, 1,
1413         1, 1, 1, 1, 1, 1, 1, 1,
1414         1, 1, 1, 1, 1, 1, 1, 1,
1415         1, 1, 1, 1, 1, 1, 1, 1,
1416         1, 1, 1, 1, 1, 1, 1, 1,
1417         1, 1, 1, 1, 1, 1, 1, 1,
1418         1, 1, 1, 1, 1, 1, 1, 1,
1419         1, 1, 1, 1, 1, 1, 1, 1,
1420         1, 1, 1, 1, 1, 1, 1, 1,
1421         1, 1, 1, 1, 1, 1, 1, 1,
1422         1, 1, 1, 1, 1, 1, 1, 1,
1423         1, 1, 1, 1, 1, 1, 1, 1,
1424         1, 1, 1, 1,
1425 };
1426
1427 static const uint16_t levels4[70] = {
1428         113, 68, 49, 42, 40, 32, 27, 15,
1429         10, 5, 3, 3, 3, 3, 2, 2,
1430         2, 2, 2, 1, 1, 1, 1, 1,
1431         1, 1, 1, 1, 1, 1, 1, 1,
1432         1, 1, 1, 1, 1, 1, 1, 1,
1433         1, 1, 1, 1, 1, 1, 1, 1,
1434         1, 1, 1, 1, 1, 1, 1, 1,
1435         1, 1, 1, 1, 1, 1, 1, 1,
1436         1, 1, 1, 1, 1, 1,
1437 };
1438
1439 static const uint16_t levels5[40] = {
1440         214, 72, 42, 40, 18, 4, 4, 2,
1441         2, 2, 2, 2, 1, 1, 2, 1,
1442         1, 1, 1, 1, 1, 1, 1, 1,
1443         1, 1, 1, 1, 1, 1, 1, 1,
1444         1, 1, 1, 1, 1, 1, 1, 1,
1445 };
1446
1447 #define DEF_COEF_TABLE(_x) { \
1448                 .n = sizeof(coef ## _x ## _huffbits), \
1449                 .max_level = sizeof(levels ## _x) / 2, \
1450                 .huffcodes = coef ## _x ## _huffcodes, \
1451                 .huffbits = coef ## _x ##_huffbits, \
1452                 .levels = levels ## _x}
1453
1454 static const struct coef_vlc_table coef_vlcs[6] = {
1455         DEF_COEF_TABLE(0), DEF_COEF_TABLE(1), DEF_COEF_TABLE(2),
1456         DEF_COEF_TABLE(3), DEF_COEF_TABLE(4), DEF_COEF_TABLE(5)
1457 };