FFmpeg
hqxvlc.h
Go to the documentation of this file.
1 /*
2  * Canopus HQX decoder
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVCODEC_HQXVLC_H
22 #define AVCODEC_HQXVLC_H
23 
24 #include <stdint.h>
25 
26 #include "vlc.h"
27 
28 #include "libavutil/attributes.h"
29 #include "libavutil/macros.h"
30 
31 #define HQX_DC_VLC_BITS 9
32 
33 enum HQXACMode {
34  HQX_AC_Q0 = 0,
41 };
42 
43 typedef struct HQXAC {
44  int bits;
45  const RL_VLC_ELEM *lut;
46 } HQXAC;
47 
48 static const uint16_t dc9_vlc_bits[512] = {
49  0x0010, 0x0008, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
50  0x002E, 0x0030, 0x0032, 0x0034, 0x0074, 0x0076, 0x0078, 0x007A,
51  0x007C, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
52  0x000E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
53  0x005E, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
54  0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038, 0x003A, 0x003C,
55  0x003E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
56  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
57  0x00DE, 0x01C0, 0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC,
58  0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC,
59  0x01DE, 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC,
60  0x01EE, 0x01F0, 0x01F2, 0x01F4, 0x01F6, 0x01F8, 0x01FA, 0x01FC,
61  0x01FE, 0x06C0, 0x06C2, 0x06C4, 0x06C6, 0x06C8, 0x06CA, 0x06CC,
62  0x06CE, 0x06D0, 0x06D2, 0x06D4, 0x06D6, 0x06D8, 0x06DA, 0x06DC,
63  0x06DE, 0x06E0, 0x06E2, 0x06E4, 0x06E6, 0x06E8, 0x06EA, 0x06EC,
64  0x06EE, 0x06F0, 0x06F2, 0x06F4, 0x06F6, 0x06F8, 0x06FA, 0x06FC,
65  0x06FE, 0x0E00, 0x0E02, 0x0E04, 0x0E06, 0x0E08, 0x0E0A, 0x0E0C,
66  0x0E0E, 0x0E10, 0x0E12, 0x0E14, 0x0E16, 0x0E18, 0x0E1A, 0x0E1C,
67  0x0E1E, 0x0E20, 0x0E22, 0x0E24, 0x0E26, 0x0E28, 0x0E2A, 0x0E2C,
68  0x0E2E, 0x0E30, 0x0E32, 0x0E34, 0x0E36, 0x0E38, 0x0E3A, 0x0E3C,
69  0x0E3E, 0x0E40, 0x0E42, 0x0E44, 0x0E46, 0x0E48, 0x0E4A, 0x0E4C,
70  0x0E4E, 0x0E50, 0x0E52, 0x0E54, 0x0E56, 0x0E58, 0x0E5A, 0x0E5C,
71  0x0E5E, 0x0E60, 0x0E62, 0x0E64, 0x0E66, 0x0E68, 0x0E6A, 0x0E6C,
72  0x0E6E, 0x0E70, 0x0E72, 0x0E74, 0x0E76, 0x0E78, 0x0E7A, 0x0E7C,
73  0x0E7E, 0x1F80, 0x1F82, 0x1F84, 0x1F86, 0x1F88, 0x1F8A, 0x1F8C,
74  0x1F8E, 0x1F90, 0x1F92, 0x1F94, 0x1F96, 0x1F98, 0x1F9A, 0x1F9C,
75  0x1F9E, 0x1FA0, 0x1FA2, 0x1FA4, 0x1FA6, 0x1FA8, 0x1FAA, 0x1FAC,
76  0x1FAE, 0x1FB0, 0x1FB2, 0x1FB4, 0x1FB6, 0x1FB8, 0x1FBA, 0x1FBC,
77  0x1FBE, 0x1FC0, 0x1FC2, 0x1FC4, 0x1FC6, 0x1FC8, 0x1FCA, 0x1FCC,
78  0x1FCE, 0x1FD0, 0x1FD2, 0x1FD4, 0x1FD6, 0x1FD8, 0x1FDA, 0x1FDC,
79  0x1FDE, 0x1FE0, 0x1FE2, 0x1FE4, 0x1FE6, 0x1FE8, 0x1FEA, 0x1FEC,
80  0x1FEE, 0x1FF0, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FF8, 0x1FFA, 0x1FFC,
81  0x0FFF, 0x1FFD, 0x1FFB, 0x1FF9, 0x1FF7, 0x1FF5, 0x1FF3, 0x1FF1,
82  0x1FEF, 0x1FED, 0x1FEB, 0x1FE9, 0x1FE7, 0x1FE5, 0x1FE3, 0x1FE1,
83  0x1FDF, 0x1FDD, 0x1FDB, 0x1FD9, 0x1FD7, 0x1FD5, 0x1FD3, 0x1FD1,
84  0x1FCF, 0x1FCD, 0x1FCB, 0x1FC9, 0x1FC7, 0x1FC5, 0x1FC3, 0x1FC1,
85  0x1FBF, 0x1FBD, 0x1FBB, 0x1FB9, 0x1FB7, 0x1FB5, 0x1FB3, 0x1FB1,
86  0x1FAF, 0x1FAD, 0x1FAB, 0x1FA9, 0x1FA7, 0x1FA5, 0x1FA3, 0x1FA1,
87  0x1F9F, 0x1F9D, 0x1F9B, 0x1F99, 0x1F97, 0x1F95, 0x1F93, 0x1F91,
88  0x1F8F, 0x1F8D, 0x1F8B, 0x1F89, 0x1F87, 0x1F85, 0x1F83, 0x1F81,
89  0x0E7F, 0x0E7D, 0x0E7B, 0x0E79, 0x0E77, 0x0E75, 0x0E73, 0x0E71,
90  0x0E6F, 0x0E6D, 0x0E6B, 0x0E69, 0x0E67, 0x0E65, 0x0E63, 0x0E61,
91  0x0E5F, 0x0E5D, 0x0E5B, 0x0E59, 0x0E57, 0x0E55, 0x0E53, 0x0E51,
92  0x0E4F, 0x0E4D, 0x0E4B, 0x0E49, 0x0E47, 0x0E45, 0x0E43, 0x0E41,
93  0x0E3F, 0x0E3D, 0x0E3B, 0x0E39, 0x0E37, 0x0E35, 0x0E33, 0x0E31,
94  0x0E2F, 0x0E2D, 0x0E2B, 0x0E29, 0x0E27, 0x0E25, 0x0E23, 0x0E21,
95  0x0E1F, 0x0E1D, 0x0E1B, 0x0E19, 0x0E17, 0x0E15, 0x0E13, 0x0E11,
96  0x0E0F, 0x0E0D, 0x0E0B, 0x0E09, 0x0E07, 0x0E05, 0x0E03, 0x0E01,
97  0x06FF, 0x06FD, 0x06FB, 0x06F9, 0x06F7, 0x06F5, 0x06F3, 0x06F1,
98  0x06EF, 0x06ED, 0x06EB, 0x06E9, 0x06E7, 0x06E5, 0x06E3, 0x06E1,
99  0x06DF, 0x06DD, 0x06DB, 0x06D9, 0x06D7, 0x06D5, 0x06D3, 0x06D1,
100  0x06CF, 0x06CD, 0x06CB, 0x06C9, 0x06C7, 0x06C5, 0x06C3, 0x06C1,
101  0x01FF, 0x01FD, 0x01FB, 0x01F9, 0x01F7, 0x01F5, 0x01F3, 0x01F1,
102  0x01EF, 0x01ED, 0x01EB, 0x01E9, 0x01E7, 0x01E5, 0x01E3, 0x01E1,
103  0x01DF, 0x01DD, 0x01DB, 0x01D9, 0x01D7, 0x01D5, 0x01D3, 0x01D1,
104  0x01CF, 0x01CD, 0x01CB, 0x01C9, 0x01C7, 0x01C5, 0x01C3, 0x01C1,
105  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
106  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
107  0x003F, 0x003D, 0x003B, 0x0039, 0x0037, 0x0035, 0x0033, 0x0031,
108  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0021,
109  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
110  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
111  0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0035, 0x0033, 0x0031,
112  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0009,
113 };
114 
115 static const uint8_t dc9_vlc_lens[512] = {
116  5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7,
117  7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
118  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
119  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
120  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
121  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
122  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
123  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
124  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
125  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
126  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
127  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
128  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
129  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
130  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
131  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
132  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
133  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
134  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
135  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
136  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
137  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
138  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
139  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
140  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
141  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
142  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
143  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
144  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
145  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
146  8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
147  7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5,
148 };
149 
150 static const uint16_t dc10_vlc_bits[1024] = {
151  0x0014, 0x002A, 0x002C, 0x002E, 0x0064, 0x0066, 0x0068, 0x006A,
152  0x006C, 0x006E, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x007A,
153  0x007C, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
154  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
155  0x005E, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
156  0x000E, 0x0010, 0x0012, 0x0014, 0x0016, 0x0018, 0x001A, 0x001C,
157  0x001E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
158  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
159  0x00DE, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
160  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
161  0x005E, 0x0060, 0x0062, 0x0064, 0x0066, 0x0068, 0x006A, 0x006C,
162  0x006E, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x007A, 0x007C,
163  0x007E, 0x01C0, 0x01C2, 0x01C4, 0x01C6, 0x01C8, 0x01CA, 0x01CC,
164  0x01CE, 0x01D0, 0x01D2, 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC,
165  0x01DE, 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC,
166  0x01EE, 0x01F0, 0x01F2, 0x01F4, 0x01F6, 0x01F8, 0x01FA, 0x01FC,
167  0x01FE, 0x0400, 0x0402, 0x0404, 0x0406, 0x0408, 0x040A, 0x040C,
168  0x040E, 0x0410, 0x0412, 0x0414, 0x0416, 0x0418, 0x041A, 0x041C,
169  0x041E, 0x0420, 0x0422, 0x0424, 0x0426, 0x0428, 0x042A, 0x042C,
170  0x042E, 0x0430, 0x0432, 0x0434, 0x0436, 0x0438, 0x043A, 0x043C,
171  0x043E, 0x0440, 0x0442, 0x0444, 0x0446, 0x0448, 0x044A, 0x044C,
172  0x044E, 0x0450, 0x0452, 0x0454, 0x0456, 0x0458, 0x045A, 0x045C,
173  0x045E, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, 0x046A, 0x046C,
174  0x046E, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047A, 0x047C,
175  0x047E, 0x0C00, 0x0C02, 0x0C04, 0x0C06, 0x0C08, 0x0C0A, 0x0C0C,
176  0x0C0E, 0x0C10, 0x0C12, 0x0C14, 0x0C16, 0x0C18, 0x0C1A, 0x0C1C,
177  0x0C1E, 0x0C20, 0x0C22, 0x0C24, 0x0C26, 0x0C28, 0x0C2A, 0x0C2C,
178  0x0C2E, 0x0C30, 0x0C32, 0x0C34, 0x0C36, 0x0C38, 0x0C3A, 0x0C3C,
179  0x0C3E, 0x0C40, 0x0C42, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4C,
180  0x0C4E, 0x0C50, 0x0C52, 0x0C54, 0x0C56, 0x0C58, 0x0C5A, 0x0C5C,
181  0x0C5E, 0x0C60, 0x0C62, 0x0C64, 0x0C66, 0x0C68, 0x0C6A, 0x0C6C,
182  0x0C6E, 0x0C70, 0x0C72, 0x0C74, 0x0C76, 0x0C78, 0x0C7A, 0x0C7C,
183  0x0C7E, 0x0900, 0x0902, 0x0904, 0x0906, 0x0908, 0x090A, 0x090C,
184  0x090E, 0x0910, 0x0912, 0x0914, 0x0916, 0x0918, 0x091A, 0x091C,
185  0x091E, 0x0920, 0x0922, 0x0924, 0x0926, 0x0928, 0x092A, 0x092C,
186  0x092E, 0x0930, 0x0932, 0x0934, 0x0936, 0x0938, 0x093A, 0x093C,
187  0x093E, 0x0940, 0x0942, 0x0944, 0x0946, 0x0948, 0x094A, 0x094C,
188  0x094E, 0x0950, 0x0952, 0x0954, 0x0956, 0x0958, 0x095A, 0x095C,
189  0x095E, 0x0960, 0x0962, 0x0964, 0x0966, 0x0968, 0x096A, 0x096C,
190  0x096E, 0x0970, 0x0972, 0x0974, 0x0976, 0x0978, 0x097A, 0x097C,
191  0x097E, 0x0980, 0x0982, 0x0984, 0x0986, 0x0988, 0x098A, 0x098C,
192  0x098E, 0x0990, 0x0992, 0x0994, 0x0996, 0x0998, 0x099A, 0x099C,
193  0x099E, 0x09A0, 0x09A2, 0x09A4, 0x09A6, 0x09A8, 0x09AA, 0x09AC,
194  0x09AE, 0x09B0, 0x09B2, 0x09B4, 0x09B6, 0x09B8, 0x09BA, 0x09BC,
195  0x09BE, 0x09C0, 0x09C2, 0x09C4, 0x09C6, 0x09C8, 0x09CA, 0x09CC,
196  0x09CE, 0x09D0, 0x09D2, 0x09D4, 0x09D6, 0x09D8, 0x09DA, 0x09DC,
197  0x09DE, 0x09E0, 0x09E2, 0x09E4, 0x09E6, 0x09E8, 0x09EA, 0x09EC,
198  0x09EE, 0x09F0, 0x09F2, 0x09F4, 0x09F6, 0x09F8, 0x09FA, 0x09FC,
199  0x09FE, 0x3F00, 0x3F02, 0x3F04, 0x3F06, 0x3F08, 0x3F0A, 0x3F0C,
200  0x3F0E, 0x3F10, 0x3F12, 0x3F14, 0x3F16, 0x3F18, 0x3F1A, 0x3F1C,
201  0x3F1E, 0x3F20, 0x3F22, 0x3F24, 0x3F26, 0x3F28, 0x3F2A, 0x3F2C,
202  0x3F2E, 0x3F30, 0x3F32, 0x3F34, 0x3F36, 0x3F38, 0x3F3A, 0x3F3C,
203  0x3F3E, 0x3F40, 0x3F42, 0x3F44, 0x3F46, 0x3F48, 0x3F4A, 0x3F4C,
204  0x3F4E, 0x3F50, 0x3F52, 0x3F54, 0x3F56, 0x3F58, 0x3F5A, 0x3F5C,
205  0x3F5E, 0x3F60, 0x3F62, 0x3F64, 0x3F66, 0x3F68, 0x3F6A, 0x3F6C,
206  0x3F6E, 0x3F70, 0x3F72, 0x3F74, 0x3F76, 0x3F78, 0x3F7A, 0x3F7C,
207  0x3F7E, 0x3F80, 0x3F82, 0x3F84, 0x3F86, 0x3F88, 0x3F8A, 0x3F8C,
208  0x3F8E, 0x3F90, 0x3F92, 0x3F94, 0x3F96, 0x3F98, 0x3F9A, 0x3F9C,
209  0x3F9E, 0x3FA0, 0x3FA2, 0x3FA4, 0x3FA6, 0x3FA8, 0x3FAA, 0x3FAC,
210  0x3FAE, 0x3FB0, 0x3FB2, 0x3FB4, 0x3FB6, 0x3FB8, 0x3FBA, 0x3FBC,
211  0x3FBE, 0x3FC0, 0x3FC2, 0x3FC4, 0x3FC6, 0x3FC8, 0x3FCA, 0x3FCC,
212  0x3FCE, 0x3FD0, 0x3FD2, 0x3FD4, 0x3FD6, 0x3FD8, 0x3FDA, 0x3FDC,
213  0x3FDE, 0x3FE0, 0x3FE2, 0x3FE4, 0x3FE6, 0x3FE8, 0x3FEA, 0x3FEC,
214  0x3FEE, 0x3FF0, 0x3FF2, 0x3FF4, 0x3FF6, 0x3FF8, 0x3FFA, 0x3FFC,
215  0x1FFF, 0x3FFD, 0x3FFB, 0x3FF9, 0x3FF7, 0x3FF5, 0x3FF3, 0x3FF1,
216  0x3FEF, 0x3FED, 0x3FEB, 0x3FE9, 0x3FE7, 0x3FE5, 0x3FE3, 0x3FE1,
217  0x3FDF, 0x3FDD, 0x3FDB, 0x3FD9, 0x3FD7, 0x3FD5, 0x3FD3, 0x3FD1,
218  0x3FCF, 0x3FCD, 0x3FCB, 0x3FC9, 0x3FC7, 0x3FC5, 0x3FC3, 0x3FC1,
219  0x3FBF, 0x3FBD, 0x3FBB, 0x3FB9, 0x3FB7, 0x3FB5, 0x3FB3, 0x3FB1,
220  0x3FAF, 0x3FAD, 0x3FAB, 0x3FA9, 0x3FA7, 0x3FA5, 0x3FA3, 0x3FA1,
221  0x3F9F, 0x3F9D, 0x3F9B, 0x3F99, 0x3F97, 0x3F95, 0x3F93, 0x3F91,
222  0x3F8F, 0x3F8D, 0x3F8B, 0x3F89, 0x3F87, 0x3F85, 0x3F83, 0x3F81,
223  0x3F7F, 0x3F7D, 0x3F7B, 0x3F79, 0x3F77, 0x3F75, 0x3F73, 0x3F71,
224  0x3F6F, 0x3F6D, 0x3F6B, 0x3F69, 0x3F67, 0x3F65, 0x3F63, 0x3F61,
225  0x3F5F, 0x3F5D, 0x3F5B, 0x3F59, 0x3F57, 0x3F55, 0x3F53, 0x3F51,
226  0x3F4F, 0x3F4D, 0x3F4B, 0x3F49, 0x3F47, 0x3F45, 0x3F43, 0x3F41,
227  0x3F3F, 0x3F3D, 0x3F3B, 0x3F39, 0x3F37, 0x3F35, 0x3F33, 0x3F31,
228  0x3F2F, 0x3F2D, 0x3F2B, 0x3F29, 0x3F27, 0x3F25, 0x3F23, 0x3F21,
229  0x3F1F, 0x3F1D, 0x3F1B, 0x3F19, 0x3F17, 0x3F15, 0x3F13, 0x3F11,
230  0x3F0F, 0x3F0D, 0x3F0B, 0x3F09, 0x3F07, 0x3F05, 0x3F03, 0x3F01,
231  0x09FF, 0x09FD, 0x09FB, 0x09F9, 0x09F7, 0x09F5, 0x09F3, 0x09F1,
232  0x09EF, 0x09ED, 0x09EB, 0x09E9, 0x09E7, 0x09E5, 0x09E3, 0x09E1,
233  0x09DF, 0x09DD, 0x09DB, 0x09D9, 0x09D7, 0x09D5, 0x09D3, 0x09D1,
234  0x09CF, 0x09CD, 0x09CB, 0x09C9, 0x09C7, 0x09C5, 0x09C3, 0x09C1,
235  0x09BF, 0x09BD, 0x09BB, 0x09B9, 0x09B7, 0x09B5, 0x09B3, 0x09B1,
236  0x09AF, 0x09AD, 0x09AB, 0x09A9, 0x09A7, 0x09A5, 0x09A3, 0x09A1,
237  0x099F, 0x099D, 0x099B, 0x0999, 0x0997, 0x0995, 0x0993, 0x0991,
238  0x098F, 0x098D, 0x098B, 0x0989, 0x0987, 0x0985, 0x0983, 0x0981,
239  0x097F, 0x097D, 0x097B, 0x0979, 0x0977, 0x0975, 0x0973, 0x0971,
240  0x096F, 0x096D, 0x096B, 0x0969, 0x0967, 0x0965, 0x0963, 0x0961,
241  0x095F, 0x095D, 0x095B, 0x0959, 0x0957, 0x0955, 0x0953, 0x0951,
242  0x094F, 0x094D, 0x094B, 0x0949, 0x0947, 0x0945, 0x0943, 0x0941,
243  0x093F, 0x093D, 0x093B, 0x0939, 0x0937, 0x0935, 0x0933, 0x0931,
244  0x092F, 0x092D, 0x092B, 0x0929, 0x0927, 0x0925, 0x0923, 0x0921,
245  0x091F, 0x091D, 0x091B, 0x0919, 0x0917, 0x0915, 0x0913, 0x0911,
246  0x090F, 0x090D, 0x090B, 0x0909, 0x0907, 0x0905, 0x0903, 0x0901,
247  0x0C7F, 0x0C7D, 0x0C7B, 0x0C79, 0x0C77, 0x0C75, 0x0C73, 0x0C71,
248  0x0C6F, 0x0C6D, 0x0C6B, 0x0C69, 0x0C67, 0x0C65, 0x0C63, 0x0C61,
249  0x0C5F, 0x0C5D, 0x0C5B, 0x0C59, 0x0C57, 0x0C55, 0x0C53, 0x0C51,
250  0x0C4F, 0x0C4D, 0x0C4B, 0x0C49, 0x0C47, 0x0C45, 0x0C43, 0x0C41,
251  0x0C3F, 0x0C3D, 0x0C3B, 0x0C39, 0x0C37, 0x0C35, 0x0C33, 0x0C31,
252  0x0C2F, 0x0C2D, 0x0C2B, 0x0C29, 0x0C27, 0x0C25, 0x0C23, 0x0C21,
253  0x0C1F, 0x0C1D, 0x0C1B, 0x0C19, 0x0C17, 0x0C15, 0x0C13, 0x0C11,
254  0x0C0F, 0x0C0D, 0x0C0B, 0x0C09, 0x0C07, 0x0C05, 0x0C03, 0x0C01,
255  0x047F, 0x047D, 0x047B, 0x0479, 0x0477, 0x0475, 0x0473, 0x0471,
256  0x046F, 0x046D, 0x046B, 0x0469, 0x0467, 0x0465, 0x0463, 0x0461,
257  0x045F, 0x045D, 0x045B, 0x0459, 0x0457, 0x0455, 0x0453, 0x0451,
258  0x044F, 0x044D, 0x044B, 0x0449, 0x0447, 0x0445, 0x0443, 0x0441,
259  0x043F, 0x043D, 0x043B, 0x0439, 0x0437, 0x0435, 0x0433, 0x0431,
260  0x042F, 0x042D, 0x042B, 0x0429, 0x0427, 0x0425, 0x0423, 0x0421,
261  0x041F, 0x041D, 0x041B, 0x0419, 0x0417, 0x0415, 0x0413, 0x0411,
262  0x040F, 0x040D, 0x040B, 0x0409, 0x0407, 0x0405, 0x0403, 0x0401,
263  0x01FF, 0x01FD, 0x01FB, 0x01F9, 0x01F7, 0x01F5, 0x01F3, 0x01F1,
264  0x01EF, 0x01ED, 0x01EB, 0x01E9, 0x01E7, 0x01E5, 0x01E3, 0x01E1,
265  0x01DF, 0x01DD, 0x01DB, 0x01D9, 0x01D7, 0x01D5, 0x01D3, 0x01D1,
266  0x01CF, 0x01CD, 0x01CB, 0x01C9, 0x01C7, 0x01C5, 0x01C3, 0x01C1,
267  0x007F, 0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0073, 0x0071,
268  0x006F, 0x006D, 0x006B, 0x0069, 0x0067, 0x0065, 0x0063, 0x0061,
269  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
270  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
271  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
272  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
273  0x001F, 0x001D, 0x001B, 0x0019, 0x0017, 0x0015, 0x0013, 0x0011,
274  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
275  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
276  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
277  0x007D, 0x007B, 0x0079, 0x0077, 0x0075, 0x0073, 0x0071, 0x006F,
278  0x006D, 0x006B, 0x0069, 0x0067, 0x0065, 0x002F, 0x002D, 0x002B,
279 };
280 
281 static const uint8_t dc10_vlc_lens[1024] = {
282  5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
283  7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
284  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
285  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
286  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
287  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
288  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
289  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
290  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
291  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
292  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
293  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
294  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
295  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
296  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
297  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
298  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
299  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
300  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
301  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
302  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
303  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
304  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
305  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
306  12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
307  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
308  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
309  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
310  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
311  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
312  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
313  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
314  13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
315  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
316  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
317  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
318  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
319  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
320  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
321  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
322  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
323  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
324  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
325  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
326  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
327  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
328  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
329  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
330  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
331  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
332  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
333  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
334  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
335  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
336  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
337  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
338  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
339  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
340  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
341  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
342  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
343  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
344  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
345  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6,
346 };
347 
348 static const uint16_t dc11_vlc_bits[2048] = {
349  0x0032, 0x0066, 0x0068, 0x006A, 0x006C, 0x006E, 0x0070, 0x0072,
350  0x0074, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
351  0x00FE, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004A, 0x004C,
352  0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058, 0x005A, 0x005C,
353  0x005E, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
354  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
355  0x00DE, 0x00E0, 0x00E2, 0x00E4, 0x00E6, 0x00E8, 0x00EA, 0x00EC,
356  0x00EE, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
357  0x00FE, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C,
358  0x000E, 0x0010, 0x0012, 0x0014, 0x0016, 0x0018, 0x001A, 0x001C,
359  0x001E, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002A, 0x002C,
360  0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038, 0x003A, 0x003C,
361  0x003E, 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020A, 0x020C,
362  0x020E, 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021A, 0x021C,
363  0x021E, 0x0220, 0x0222, 0x0224, 0x0226, 0x0228, 0x022A, 0x022C,
364  0x022E, 0x0230, 0x0232, 0x0234, 0x0236, 0x0238, 0x023A, 0x023C,
365  0x023E, 0x0080, 0x0082, 0x0084, 0x0086, 0x0088, 0x008A, 0x008C,
366  0x008E, 0x0090, 0x0092, 0x0094, 0x0096, 0x0098, 0x009A, 0x009C,
367  0x009E, 0x00A0, 0x00A2, 0x00A4, 0x00A6, 0x00A8, 0x00AA, 0x00AC,
368  0x00AE, 0x00B0, 0x00B2, 0x00B4, 0x00B6, 0x00B8, 0x00BA, 0x00BC,
369  0x00BE, 0x00C0, 0x00C2, 0x00C4, 0x00C6, 0x00C8, 0x00CA, 0x00CC,
370  0x00CE, 0x00D0, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00DA, 0x00DC,
371  0x00DE, 0x00E0, 0x00E2, 0x00E4, 0x00E6, 0x00E8, 0x00EA, 0x00EC,
372  0x00EE, 0x00F0, 0x00F2, 0x00F4, 0x00F6, 0x00F8, 0x00FA, 0x00FC,
373  0x00FE, 0x0480, 0x0482, 0x0484, 0x0486, 0x0488, 0x048A, 0x048C,
374  0x048E, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, 0x049A, 0x049C,
375  0x049E, 0x04A0, 0x04A2, 0x04A4, 0x04A6, 0x04A8, 0x04AA, 0x04AC,
376  0x04AE, 0x04B0, 0x04B2, 0x04B4, 0x04B6, 0x04B8, 0x04BA, 0x04BC,
377  0x04BE, 0x04C0, 0x04C2, 0x04C4, 0x04C6, 0x04C8, 0x04CA, 0x04CC,
378  0x04CE, 0x04D0, 0x04D2, 0x04D4, 0x04D6, 0x04D8, 0x04DA, 0x04DC,
379  0x04DE, 0x04E0, 0x04E2, 0x04E4, 0x04E6, 0x04E8, 0x04EA, 0x04EC,
380  0x04EE, 0x04F0, 0x04F2, 0x04F4, 0x04F6, 0x04F8, 0x04FA, 0x04FC,
381  0x04FE, 0x0A00, 0x0A02, 0x0A04, 0x0A06, 0x0A08, 0x0A0A, 0x0A0C,
382  0x0A0E, 0x0A10, 0x0A12, 0x0A14, 0x0A16, 0x0A18, 0x0A1A, 0x0A1C,
383  0x0A1E, 0x0A20, 0x0A22, 0x0A24, 0x0A26, 0x0A28, 0x0A2A, 0x0A2C,
384  0x0A2E, 0x0A30, 0x0A32, 0x0A34, 0x0A36, 0x0A38, 0x0A3A, 0x0A3C,
385  0x0A3E, 0x0A40, 0x0A42, 0x0A44, 0x0A46, 0x0A48, 0x0A4A, 0x0A4C,
386  0x0A4E, 0x0A50, 0x0A52, 0x0A54, 0x0A56, 0x0A58, 0x0A5A, 0x0A5C,
387  0x0A5E, 0x0A60, 0x0A62, 0x0A64, 0x0A66, 0x0A68, 0x0A6A, 0x0A6C,
388  0x0A6E, 0x0A70, 0x0A72, 0x0A74, 0x0A76, 0x0A78, 0x0A7A, 0x0A7C,
389  0x0A7E, 0x0A80, 0x0A82, 0x0A84, 0x0A86, 0x0A88, 0x0A8A, 0x0A8C,
390  0x0A8E, 0x0A90, 0x0A92, 0x0A94, 0x0A96, 0x0A98, 0x0A9A, 0x0A9C,
391  0x0A9E, 0x0AA0, 0x0AA2, 0x0AA4, 0x0AA6, 0x0AA8, 0x0AAA, 0x0AAC,
392  0x0AAE, 0x0AB0, 0x0AB2, 0x0AB4, 0x0AB6, 0x0AB8, 0x0ABA, 0x0ABC,
393  0x0ABE, 0x0AC0, 0x0AC2, 0x0AC4, 0x0AC6, 0x0AC8, 0x0ACA, 0x0ACC,
394  0x0ACE, 0x0AD0, 0x0AD2, 0x0AD4, 0x0AD6, 0x0AD8, 0x0ADA, 0x0ADC,
395  0x0ADE, 0x0AE0, 0x0AE2, 0x0AE4, 0x0AE6, 0x0AE8, 0x0AEA, 0x0AEC,
396  0x0AEE, 0x0AF0, 0x0AF2, 0x0AF4, 0x0AF6, 0x0AF8, 0x0AFA, 0x0AFC,
397  0x0AFE, 0x1800, 0x1802, 0x1804, 0x1806, 0x1808, 0x180A, 0x180C,
398  0x180E, 0x1810, 0x1812, 0x1814, 0x1816, 0x1818, 0x181A, 0x181C,
399  0x181E, 0x1820, 0x1822, 0x1824, 0x1826, 0x1828, 0x182A, 0x182C,
400  0x182E, 0x1830, 0x1832, 0x1834, 0x1836, 0x1838, 0x183A, 0x183C,
401  0x183E, 0x1840, 0x1842, 0x1844, 0x1846, 0x1848, 0x184A, 0x184C,
402  0x184E, 0x1850, 0x1852, 0x1854, 0x1856, 0x1858, 0x185A, 0x185C,
403  0x185E, 0x1860, 0x1862, 0x1864, 0x1866, 0x1868, 0x186A, 0x186C,
404  0x186E, 0x1870, 0x1872, 0x1874, 0x1876, 0x1878, 0x187A, 0x187C,
405  0x187E, 0x1880, 0x1882, 0x1884, 0x1886, 0x1888, 0x188A, 0x188C,
406  0x188E, 0x1890, 0x1892, 0x1894, 0x1896, 0x1898, 0x189A, 0x189C,
407  0x189E, 0x18A0, 0x18A2, 0x18A4, 0x18A6, 0x18A8, 0x18AA, 0x18AC,
408  0x18AE, 0x18B0, 0x18B2, 0x18B4, 0x18B6, 0x18B8, 0x18BA, 0x18BC,
409  0x18BE, 0x18C0, 0x18C2, 0x18C4, 0x18C6, 0x18C8, 0x18CA, 0x18CC,
410  0x18CE, 0x18D0, 0x18D2, 0x18D4, 0x18D6, 0x18D8, 0x18DA, 0x18DC,
411  0x18DE, 0x18E0, 0x18E2, 0x18E4, 0x18E6, 0x18E8, 0x18EA, 0x18EC,
412  0x18EE, 0x18F0, 0x18F2, 0x18F4, 0x18F6, 0x18F8, 0x18FA, 0x18FC,
413  0x18FE, 0x1600, 0x1602, 0x1604, 0x1606, 0x1608, 0x160A, 0x160C,
414  0x160E, 0x1610, 0x1612, 0x1614, 0x1616, 0x1618, 0x161A, 0x161C,
415  0x161E, 0x1620, 0x1622, 0x1624, 0x1626, 0x1628, 0x162A, 0x162C,
416  0x162E, 0x1630, 0x1632, 0x1634, 0x1636, 0x1638, 0x163A, 0x163C,
417  0x163E, 0x1640, 0x1642, 0x1644, 0x1646, 0x1648, 0x164A, 0x164C,
418  0x164E, 0x1650, 0x1652, 0x1654, 0x1656, 0x1658, 0x165A, 0x165C,
419  0x165E, 0x1660, 0x1662, 0x1664, 0x1666, 0x1668, 0x166A, 0x166C,
420  0x166E, 0x1670, 0x1672, 0x1674, 0x1676, 0x1678, 0x167A, 0x167C,
421  0x167E, 0x1680, 0x1682, 0x1684, 0x1686, 0x1688, 0x168A, 0x168C,
422  0x168E, 0x1690, 0x1692, 0x1694, 0x1696, 0x1698, 0x169A, 0x169C,
423  0x169E, 0x16A0, 0x16A2, 0x16A4, 0x16A6, 0x16A8, 0x16AA, 0x16AC,
424  0x16AE, 0x16B0, 0x16B2, 0x16B4, 0x16B6, 0x16B8, 0x16BA, 0x16BC,
425  0x16BE, 0x16C0, 0x16C2, 0x16C4, 0x16C6, 0x16C8, 0x16CA, 0x16CC,
426  0x16CE, 0x16D0, 0x16D2, 0x16D4, 0x16D6, 0x16D8, 0x16DA, 0x16DC,
427  0x16DE, 0x16E0, 0x16E2, 0x16E4, 0x16E6, 0x16E8, 0x16EA, 0x16EC,
428  0x16EE, 0x16F0, 0x16F2, 0x16F4, 0x16F6, 0x16F8, 0x16FA, 0x16FC,
429  0x16FE, 0x1700, 0x1702, 0x1704, 0x1706, 0x1708, 0x170A, 0x170C,
430  0x170E, 0x1710, 0x1712, 0x1714, 0x1716, 0x1718, 0x171A, 0x171C,
431  0x171E, 0x1720, 0x1722, 0x1724, 0x1726, 0x1728, 0x172A, 0x172C,
432  0x172E, 0x1730, 0x1732, 0x1734, 0x1736, 0x1738, 0x173A, 0x173C,
433  0x173E, 0x1740, 0x1742, 0x1744, 0x1746, 0x1748, 0x174A, 0x174C,
434  0x174E, 0x1750, 0x1752, 0x1754, 0x1756, 0x1758, 0x175A, 0x175C,
435  0x175E, 0x1760, 0x1762, 0x1764, 0x1766, 0x1768, 0x176A, 0x176C,
436  0x176E, 0x1770, 0x1772, 0x1774, 0x1776, 0x1778, 0x177A, 0x177C,
437  0x177E, 0x1780, 0x1782, 0x1784, 0x1786, 0x1788, 0x178A, 0x178C,
438  0x178E, 0x1790, 0x1792, 0x1794, 0x1796, 0x1798, 0x179A, 0x179C,
439  0x179E, 0x17A0, 0x17A2, 0x17A4, 0x17A6, 0x17A8, 0x17AA, 0x17AC,
440  0x17AE, 0x17B0, 0x17B2, 0x17B4, 0x17B6, 0x17B8, 0x17BA, 0x17BC,
441  0x17BE, 0x17C0, 0x17C2, 0x17C4, 0x17C6, 0x17C8, 0x17CA, 0x17CC,
442  0x17CE, 0x17D0, 0x17D2, 0x17D4, 0x17D6, 0x17D8, 0x17DA, 0x17DC,
443  0x17DE, 0x17E0, 0x17E2, 0x17E4, 0x17E6, 0x17E8, 0x17EA, 0x17EC,
444  0x17EE, 0x17F0, 0x17F2, 0x17F4, 0x17F6, 0x17F8, 0x17FA, 0x17FC,
445  0x17FE, 0x7600, 0x7602, 0x7604, 0x7606, 0x7608, 0x760A, 0x760C,
446  0x760E, 0x7610, 0x7612, 0x7614, 0x7616, 0x7618, 0x761A, 0x761C,
447  0x761E, 0x7620, 0x7622, 0x7624, 0x7626, 0x7628, 0x762A, 0x762C,
448  0x762E, 0x7630, 0x7632, 0x7634, 0x7636, 0x7638, 0x763A, 0x763C,
449  0x763E, 0x7640, 0x7642, 0x7644, 0x7646, 0x7648, 0x764A, 0x764C,
450  0x764E, 0x7650, 0x7652, 0x7654, 0x7656, 0x7658, 0x765A, 0x765C,
451  0x765E, 0x7660, 0x7662, 0x7664, 0x7666, 0x7668, 0x766A, 0x766C,
452  0x766E, 0x7670, 0x7672, 0x7674, 0x7676, 0x7678, 0x767A, 0x767C,
453  0x767E, 0x7680, 0x7682, 0x7684, 0x7686, 0x7688, 0x768A, 0x768C,
454  0x768E, 0x7690, 0x7692, 0x7694, 0x7696, 0x7698, 0x769A, 0x769C,
455  0x769E, 0x76A0, 0x76A2, 0x76A4, 0x76A6, 0x76A8, 0x76AA, 0x76AC,
456  0x76AE, 0x76B0, 0x76B2, 0x76B4, 0x76B6, 0x76B8, 0x76BA, 0x76BC,
457  0x76BE, 0x76C0, 0x76C2, 0x76C4, 0x76C6, 0x76C8, 0x76CA, 0x76CC,
458  0x76CE, 0x76D0, 0x76D2, 0x76D4, 0x76D6, 0x76D8, 0x76DA, 0x76DC,
459  0x76DE, 0x76E0, 0x76E2, 0x76E4, 0x76E6, 0x76E8, 0x76EA, 0x76EC,
460  0x76EE, 0x76F0, 0x76F2, 0x76F4, 0x76F6, 0x76F8, 0x76FA, 0x76FC,
461  0x76FE, 0x7700, 0x7702, 0x7704, 0x7706, 0x7708, 0x770A, 0x770C,
462  0x770E, 0x7710, 0x7712, 0x7714, 0x7716, 0x7718, 0x771A, 0x771C,
463  0x771E, 0x7720, 0x7722, 0x7724, 0x7726, 0x7728, 0x772A, 0x772C,
464  0x772E, 0x7730, 0x7732, 0x7734, 0x7736, 0x7738, 0x773A, 0x773C,
465  0x773E, 0x7740, 0x7742, 0x7744, 0x7746, 0x7748, 0x774A, 0x774C,
466  0x774E, 0x7750, 0x7752, 0x7754, 0x7756, 0x7758, 0x775A, 0x775C,
467  0x775E, 0x7760, 0x7762, 0x7764, 0x7766, 0x7768, 0x776A, 0x776C,
468  0x776E, 0x7770, 0x7772, 0x7774, 0x7776, 0x7778, 0x777A, 0x777C,
469  0x777E, 0x7780, 0x7782, 0x7784, 0x7786, 0x7788, 0x778A, 0x778C,
470  0x778E, 0x7790, 0x7792, 0x7794, 0x7796, 0x7798, 0x779A, 0x779C,
471  0x779E, 0x77A0, 0x77A2, 0x77A4, 0x77A6, 0x77A8, 0x77AA, 0x77AC,
472  0x77AE, 0x77B0, 0x77B2, 0x77B4, 0x77B6, 0x77B8, 0x77BA, 0x77BC,
473  0x77BE, 0x77C0, 0x77C2, 0x77C4, 0x77C6, 0x77C8, 0x77CA, 0x77CC,
474  0x77CE, 0x77D0, 0x77D2, 0x77D4, 0x77D6, 0x77D8, 0x77DA, 0x77DC,
475  0x77DE, 0x77E0, 0x77E2, 0x77E4, 0x77E6, 0x77E8, 0x77EA, 0x77EC,
476  0x77EE, 0x77F0, 0x77F2, 0x77F4, 0x77F6, 0x77F8, 0x77FA, 0x77FC,
477  0x3BFF, 0x77FD, 0x77FB, 0x77F9, 0x77F7, 0x77F5, 0x77F3, 0x77F1,
478  0x77EF, 0x77ED, 0x77EB, 0x77E9, 0x77E7, 0x77E5, 0x77E3, 0x77E1,
479  0x77DF, 0x77DD, 0x77DB, 0x77D9, 0x77D7, 0x77D5, 0x77D3, 0x77D1,
480  0x77CF, 0x77CD, 0x77CB, 0x77C9, 0x77C7, 0x77C5, 0x77C3, 0x77C1,
481  0x77BF, 0x77BD, 0x77BB, 0x77B9, 0x77B7, 0x77B5, 0x77B3, 0x77B1,
482  0x77AF, 0x77AD, 0x77AB, 0x77A9, 0x77A7, 0x77A5, 0x77A3, 0x77A1,
483  0x779F, 0x779D, 0x779B, 0x7799, 0x7797, 0x7795, 0x7793, 0x7791,
484  0x778F, 0x778D, 0x778B, 0x7789, 0x7787, 0x7785, 0x7783, 0x7781,
485  0x777F, 0x777D, 0x777B, 0x7779, 0x7777, 0x7775, 0x7773, 0x7771,
486  0x776F, 0x776D, 0x776B, 0x7769, 0x7767, 0x7765, 0x7763, 0x7761,
487  0x775F, 0x775D, 0x775B, 0x7759, 0x7757, 0x7755, 0x7753, 0x7751,
488  0x774F, 0x774D, 0x774B, 0x7749, 0x7747, 0x7745, 0x7743, 0x7741,
489  0x773F, 0x773D, 0x773B, 0x7739, 0x7737, 0x7735, 0x7733, 0x7731,
490  0x772F, 0x772D, 0x772B, 0x7729, 0x7727, 0x7725, 0x7723, 0x7721,
491  0x771F, 0x771D, 0x771B, 0x7719, 0x7717, 0x7715, 0x7713, 0x7711,
492  0x770F, 0x770D, 0x770B, 0x7709, 0x7707, 0x7705, 0x7703, 0x7701,
493  0x76FF, 0x76FD, 0x76FB, 0x76F9, 0x76F7, 0x76F5, 0x76F3, 0x76F1,
494  0x76EF, 0x76ED, 0x76EB, 0x76E9, 0x76E7, 0x76E5, 0x76E3, 0x76E1,
495  0x76DF, 0x76DD, 0x76DB, 0x76D9, 0x76D7, 0x76D5, 0x76D3, 0x76D1,
496  0x76CF, 0x76CD, 0x76CB, 0x76C9, 0x76C7, 0x76C5, 0x76C3, 0x76C1,
497  0x76BF, 0x76BD, 0x76BB, 0x76B9, 0x76B7, 0x76B5, 0x76B3, 0x76B1,
498  0x76AF, 0x76AD, 0x76AB, 0x76A9, 0x76A7, 0x76A5, 0x76A3, 0x76A1,
499  0x769F, 0x769D, 0x769B, 0x7699, 0x7697, 0x7695, 0x7693, 0x7691,
500  0x768F, 0x768D, 0x768B, 0x7689, 0x7687, 0x7685, 0x7683, 0x7681,
501  0x767F, 0x767D, 0x767B, 0x7679, 0x7677, 0x7675, 0x7673, 0x7671,
502  0x766F, 0x766D, 0x766B, 0x7669, 0x7667, 0x7665, 0x7663, 0x7661,
503  0x765F, 0x765D, 0x765B, 0x7659, 0x7657, 0x7655, 0x7653, 0x7651,
504  0x764F, 0x764D, 0x764B, 0x7649, 0x7647, 0x7645, 0x7643, 0x7641,
505  0x763F, 0x763D, 0x763B, 0x7639, 0x7637, 0x7635, 0x7633, 0x7631,
506  0x762F, 0x762D, 0x762B, 0x7629, 0x7627, 0x7625, 0x7623, 0x7621,
507  0x761F, 0x761D, 0x761B, 0x7619, 0x7617, 0x7615, 0x7613, 0x7611,
508  0x760F, 0x760D, 0x760B, 0x7609, 0x7607, 0x7605, 0x7603, 0x7601,
509  0x17FF, 0x17FD, 0x17FB, 0x17F9, 0x17F7, 0x17F5, 0x17F3, 0x17F1,
510  0x17EF, 0x17ED, 0x17EB, 0x17E9, 0x17E7, 0x17E5, 0x17E3, 0x17E1,
511  0x17DF, 0x17DD, 0x17DB, 0x17D9, 0x17D7, 0x17D5, 0x17D3, 0x17D1,
512  0x17CF, 0x17CD, 0x17CB, 0x17C9, 0x17C7, 0x17C5, 0x17C3, 0x17C1,
513  0x17BF, 0x17BD, 0x17BB, 0x17B9, 0x17B7, 0x17B5, 0x17B3, 0x17B1,
514  0x17AF, 0x17AD, 0x17AB, 0x17A9, 0x17A7, 0x17A5, 0x17A3, 0x17A1,
515  0x179F, 0x179D, 0x179B, 0x1799, 0x1797, 0x1795, 0x1793, 0x1791,
516  0x178F, 0x178D, 0x178B, 0x1789, 0x1787, 0x1785, 0x1783, 0x1781,
517  0x177F, 0x177D, 0x177B, 0x1779, 0x1777, 0x1775, 0x1773, 0x1771,
518  0x176F, 0x176D, 0x176B, 0x1769, 0x1767, 0x1765, 0x1763, 0x1761,
519  0x175F, 0x175D, 0x175B, 0x1759, 0x1757, 0x1755, 0x1753, 0x1751,
520  0x174F, 0x174D, 0x174B, 0x1749, 0x1747, 0x1745, 0x1743, 0x1741,
521  0x173F, 0x173D, 0x173B, 0x1739, 0x1737, 0x1735, 0x1733, 0x1731,
522  0x172F, 0x172D, 0x172B, 0x1729, 0x1727, 0x1725, 0x1723, 0x1721,
523  0x171F, 0x171D, 0x171B, 0x1719, 0x1717, 0x1715, 0x1713, 0x1711,
524  0x170F, 0x170D, 0x170B, 0x1709, 0x1707, 0x1705, 0x1703, 0x1701,
525  0x16FF, 0x16FD, 0x16FB, 0x16F9, 0x16F7, 0x16F5, 0x16F3, 0x16F1,
526  0x16EF, 0x16ED, 0x16EB, 0x16E9, 0x16E7, 0x16E5, 0x16E3, 0x16E1,
527  0x16DF, 0x16DD, 0x16DB, 0x16D9, 0x16D7, 0x16D5, 0x16D3, 0x16D1,
528  0x16CF, 0x16CD, 0x16CB, 0x16C9, 0x16C7, 0x16C5, 0x16C3, 0x16C1,
529  0x16BF, 0x16BD, 0x16BB, 0x16B9, 0x16B7, 0x16B5, 0x16B3, 0x16B1,
530  0x16AF, 0x16AD, 0x16AB, 0x16A9, 0x16A7, 0x16A5, 0x16A3, 0x16A1,
531  0x169F, 0x169D, 0x169B, 0x1699, 0x1697, 0x1695, 0x1693, 0x1691,
532  0x168F, 0x168D, 0x168B, 0x1689, 0x1687, 0x1685, 0x1683, 0x1681,
533  0x167F, 0x167D, 0x167B, 0x1679, 0x1677, 0x1675, 0x1673, 0x1671,
534  0x166F, 0x166D, 0x166B, 0x1669, 0x1667, 0x1665, 0x1663, 0x1661,
535  0x165F, 0x165D, 0x165B, 0x1659, 0x1657, 0x1655, 0x1653, 0x1651,
536  0x164F, 0x164D, 0x164B, 0x1649, 0x1647, 0x1645, 0x1643, 0x1641,
537  0x163F, 0x163D, 0x163B, 0x1639, 0x1637, 0x1635, 0x1633, 0x1631,
538  0x162F, 0x162D, 0x162B, 0x1629, 0x1627, 0x1625, 0x1623, 0x1621,
539  0x161F, 0x161D, 0x161B, 0x1619, 0x1617, 0x1615, 0x1613, 0x1611,
540  0x160F, 0x160D, 0x160B, 0x1609, 0x1607, 0x1605, 0x1603, 0x1601,
541  0x18FF, 0x18FD, 0x18FB, 0x18F9, 0x18F7, 0x18F5, 0x18F3, 0x18F1,
542  0x18EF, 0x18ED, 0x18EB, 0x18E9, 0x18E7, 0x18E5, 0x18E3, 0x18E1,
543  0x18DF, 0x18DD, 0x18DB, 0x18D9, 0x18D7, 0x18D5, 0x18D3, 0x18D1,
544  0x18CF, 0x18CD, 0x18CB, 0x18C9, 0x18C7, 0x18C5, 0x18C3, 0x18C1,
545  0x18BF, 0x18BD, 0x18BB, 0x18B9, 0x18B7, 0x18B5, 0x18B3, 0x18B1,
546  0x18AF, 0x18AD, 0x18AB, 0x18A9, 0x18A7, 0x18A5, 0x18A3, 0x18A1,
547  0x189F, 0x189D, 0x189B, 0x1899, 0x1897, 0x1895, 0x1893, 0x1891,
548  0x188F, 0x188D, 0x188B, 0x1889, 0x1887, 0x1885, 0x1883, 0x1881,
549  0x187F, 0x187D, 0x187B, 0x1879, 0x1877, 0x1875, 0x1873, 0x1871,
550  0x186F, 0x186D, 0x186B, 0x1869, 0x1867, 0x1865, 0x1863, 0x1861,
551  0x185F, 0x185D, 0x185B, 0x1859, 0x1857, 0x1855, 0x1853, 0x1851,
552  0x184F, 0x184D, 0x184B, 0x1849, 0x1847, 0x1845, 0x1843, 0x1841,
553  0x183F, 0x183D, 0x183B, 0x1839, 0x1837, 0x1835, 0x1833, 0x1831,
554  0x182F, 0x182D, 0x182B, 0x1829, 0x1827, 0x1825, 0x1823, 0x1821,
555  0x181F, 0x181D, 0x181B, 0x1819, 0x1817, 0x1815, 0x1813, 0x1811,
556  0x180F, 0x180D, 0x180B, 0x1809, 0x1807, 0x1805, 0x1803, 0x1801,
557  0x0AFF, 0x0AFD, 0x0AFB, 0x0AF9, 0x0AF7, 0x0AF5, 0x0AF3, 0x0AF1,
558  0x0AEF, 0x0AED, 0x0AEB, 0x0AE9, 0x0AE7, 0x0AE5, 0x0AE3, 0x0AE1,
559  0x0ADF, 0x0ADD, 0x0ADB, 0x0AD9, 0x0AD7, 0x0AD5, 0x0AD3, 0x0AD1,
560  0x0ACF, 0x0ACD, 0x0ACB, 0x0AC9, 0x0AC7, 0x0AC5, 0x0AC3, 0x0AC1,
561  0x0ABF, 0x0ABD, 0x0ABB, 0x0AB9, 0x0AB7, 0x0AB5, 0x0AB3, 0x0AB1,
562  0x0AAF, 0x0AAD, 0x0AAB, 0x0AA9, 0x0AA7, 0x0AA5, 0x0AA3, 0x0AA1,
563  0x0A9F, 0x0A9D, 0x0A9B, 0x0A99, 0x0A97, 0x0A95, 0x0A93, 0x0A91,
564  0x0A8F, 0x0A8D, 0x0A8B, 0x0A89, 0x0A87, 0x0A85, 0x0A83, 0x0A81,
565  0x0A7F, 0x0A7D, 0x0A7B, 0x0A79, 0x0A77, 0x0A75, 0x0A73, 0x0A71,
566  0x0A6F, 0x0A6D, 0x0A6B, 0x0A69, 0x0A67, 0x0A65, 0x0A63, 0x0A61,
567  0x0A5F, 0x0A5D, 0x0A5B, 0x0A59, 0x0A57, 0x0A55, 0x0A53, 0x0A51,
568  0x0A4F, 0x0A4D, 0x0A4B, 0x0A49, 0x0A47, 0x0A45, 0x0A43, 0x0A41,
569  0x0A3F, 0x0A3D, 0x0A3B, 0x0A39, 0x0A37, 0x0A35, 0x0A33, 0x0A31,
570  0x0A2F, 0x0A2D, 0x0A2B, 0x0A29, 0x0A27, 0x0A25, 0x0A23, 0x0A21,
571  0x0A1F, 0x0A1D, 0x0A1B, 0x0A19, 0x0A17, 0x0A15, 0x0A13, 0x0A11,
572  0x0A0F, 0x0A0D, 0x0A0B, 0x0A09, 0x0A07, 0x0A05, 0x0A03, 0x0A01,
573  0x04FF, 0x04FD, 0x04FB, 0x04F9, 0x04F7, 0x04F5, 0x04F3, 0x04F1,
574  0x04EF, 0x04ED, 0x04EB, 0x04E9, 0x04E7, 0x04E5, 0x04E3, 0x04E1,
575  0x04DF, 0x04DD, 0x04DB, 0x04D9, 0x04D7, 0x04D5, 0x04D3, 0x04D1,
576  0x04CF, 0x04CD, 0x04CB, 0x04C9, 0x04C7, 0x04C5, 0x04C3, 0x04C1,
577  0x04BF, 0x04BD, 0x04BB, 0x04B9, 0x04B7, 0x04B5, 0x04B3, 0x04B1,
578  0x04AF, 0x04AD, 0x04AB, 0x04A9, 0x04A7, 0x04A5, 0x04A3, 0x04A1,
579  0x049F, 0x049D, 0x049B, 0x0499, 0x0497, 0x0495, 0x0493, 0x0491,
580  0x048F, 0x048D, 0x048B, 0x0489, 0x0487, 0x0485, 0x0483, 0x0481,
581  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
582  0x00EF, 0x00ED, 0x00EB, 0x00E9, 0x00E7, 0x00E5, 0x00E3, 0x00E1,
583  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
584  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
585  0x00BF, 0x00BD, 0x00BB, 0x00B9, 0x00B7, 0x00B5, 0x00B3, 0x00B1,
586  0x00AF, 0x00AD, 0x00AB, 0x00A9, 0x00A7, 0x00A5, 0x00A3, 0x00A1,
587  0x009F, 0x009D, 0x009B, 0x0099, 0x0097, 0x0095, 0x0093, 0x0091,
588  0x008F, 0x008D, 0x008B, 0x0089, 0x0087, 0x0085, 0x0083, 0x0081,
589  0x023F, 0x023D, 0x023B, 0x0239, 0x0237, 0x0235, 0x0233, 0x0231,
590  0x022F, 0x022D, 0x022B, 0x0229, 0x0227, 0x0225, 0x0223, 0x0221,
591  0x021F, 0x021D, 0x021B, 0x0219, 0x0217, 0x0215, 0x0213, 0x0211,
592  0x020F, 0x020D, 0x020B, 0x0209, 0x0207, 0x0205, 0x0203, 0x0201,
593  0x003F, 0x003D, 0x003B, 0x0039, 0x0037, 0x0035, 0x0033, 0x0031,
594  0x002F, 0x002D, 0x002B, 0x0029, 0x0027, 0x0025, 0x0023, 0x0021,
595  0x001F, 0x001D, 0x001B, 0x0019, 0x0017, 0x0015, 0x0013, 0x0011,
596  0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0003, 0x0001,
597  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
598  0x00EF, 0x00ED, 0x00EB, 0x00E9, 0x00E7, 0x00E5, 0x00E3, 0x00E1,
599  0x00DF, 0x00DD, 0x00DB, 0x00D9, 0x00D7, 0x00D5, 0x00D3, 0x00D1,
600  0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7, 0x00C5, 0x00C3, 0x00C1,
601  0x005F, 0x005D, 0x005B, 0x0059, 0x0057, 0x0055, 0x0053, 0x0051,
602  0x004F, 0x004D, 0x004B, 0x0049, 0x0047, 0x0045, 0x0043, 0x0041,
603  0x00FF, 0x00FD, 0x00FB, 0x00F9, 0x00F7, 0x00F5, 0x00F3, 0x00F1,
604  0x0075, 0x0073, 0x0071, 0x006F, 0x006D, 0x006B, 0x0069, 0x0067,
605 };
606 
607 static const uint8_t dc11_vlc_lens[2048] = {
608  6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
609  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
610  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
611  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
612  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
613  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
614  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
615  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
616  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
617  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
618  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
619  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
620  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
621  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
622  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
623  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
624  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
625  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
626  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
627  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
628  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
629  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
630  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
631  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
632  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
633  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
634  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
635  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
636  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
637  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
638  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
639  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
640  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
641  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
642  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
643  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
644  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
645  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
646  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
647  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
648  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
649  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
650  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
651  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
652  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
653  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
654  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
655  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
656  13, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
657  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
658  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
659  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
660  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
661  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
662  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
663  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
664  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
665  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
666  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
667  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
668  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
669  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
670  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
671  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
672  14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
673  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
674  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
675  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
676  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
677  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
678  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
679  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
680  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
681  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
682  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
683  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
684  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
685  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
686  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
687  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
688  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
689  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
690  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
691  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
692  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
693  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
694  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
695  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
696  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
697  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
698  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
699  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
700  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
701  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
702  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
703  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
704  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
705  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
706  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
707  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
708  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
709  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
710  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
711  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
712  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
713  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
714  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
715  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
716  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
717  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
718  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
719  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
720  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
721  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
722  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
723  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
724  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
725  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
726  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
727  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
728  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
729  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
730  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
731  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
732  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
733  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
734  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
735  8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
736 };
737 
738 
740  { 10 }, { 11 }, { 11 }, { 11 }, { 12 }, { 11 },
741 };
742 
743 // level is in -255..255 range, run 0..64, so it fits into 16 bits.
744 // We offset run by 1 in order to include the implicit run of 1.
745 #define E(level, run) ((level * 128) | (run + 1))
746 
747 static const int16_t hqx_ac_run_level[] = {
748  // AC table Q0 - 815 elements
749  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
750  E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
751  E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
752  E( -7, 0), E( 8, 0), E( -8, 0), E( 0, 0), E( 1, 0),
753  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
754  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
755  E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
756  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
757  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
758  E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
759  E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
760  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
761  E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
762  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
763  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
764  E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
765  E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
766  E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
767  E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
768  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
769  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
770  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
771  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
772  E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
773  E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
774  E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
775  E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
776  E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
777  E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
778  E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
779  E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
780  E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
781  E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
782  E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
783  E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
784  E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
785  E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
786  E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
787  E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
788  E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
789  E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
790  E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
791  E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
792  E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
793  E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
794  E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
795  E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
796  E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
797  E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
798  E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
799  E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
800  E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
801  E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
802  E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
803  E(-126, 0), E( 127, 0), E(-127, 0), E( 128, 0), E(-128, 0),
804  E( 129, 0), E(-129, 0), E( 130, 0), E(-130, 0), E( 131, 0),
805  E(-131, 0), E( 132, 0), E(-132, 0), E( 133, 0), E(-133, 0),
806  E( 134, 0), E(-134, 0), E( 135, 0), E(-135, 0), E( 136, 0),
807  E(-136, 0), E( 137, 0), E(-137, 0), E( 138, 0), E(-138, 0),
808  E( 139, 0), E(-139, 0), E( 140, 0), E(-140, 0), E( 141, 0),
809  E(-141, 0), E( 142, 0), E(-142, 0), E( 143, 0), E(-143, 0),
810  E( 144, 0), E(-144, 0), E( 145, 0), E(-145, 0), E( 146, 0),
811  E(-146, 0), E( 147, 0), E(-147, 0), E( 148, 0), E(-148, 0),
812  E( 149, 0), E(-149, 0), E( 150, 0), E(-150, 0), E( 151, 0),
813  E(-151, 0), E( 152, 0), E(-152, 0), E( 153, 0), E(-153, 0),
814  E( 154, 0), E(-154, 0), E( 155, 0), E(-155, 0), E( 156, 0),
815  E(-156, 0), E( 157, 0), E(-157, 0), E( 158, 0), E(-158, 0),
816  E( 159, 0), E(-159, 0), E( 160, 0), E(-160, 0), E( 161, 0),
817  E(-161, 0), E( 162, 0), E(-162, 0), E( 163, 0), E(-163, 0),
818  E( 164, 0), E(-164, 0), E( 165, 0), E(-165, 0), E( 166, 0),
819  E(-166, 0), E( 167, 0), E(-167, 0), E( 168, 0), E(-168, 0),
820  E( 169, 0), E(-169, 0), E( 170, 0), E(-170, 0), E( 171, 0),
821  E(-171, 0), E( 172, 0), E(-172, 0), E( 173, 0), E(-173, 0),
822  E( 174, 0), E(-174, 0), E( 175, 0), E(-175, 0), E( 176, 0),
823  E(-176, 0), E( 177, 0), E(-177, 0), E( 178, 0), E(-178, 0),
824  E( 179, 0), E(-179, 0), E( 180, 0), E(-180, 0), E( 181, 0),
825  E(-181, 0), E( 182, 0), E(-182, 0), E( 183, 0), E(-183, 0),
826  E( 184, 0), E(-184, 0), E( 185, 0), E(-185, 0), E( 186, 0),
827  E(-186, 0), E( 187, 0), E(-187, 0), E( 188, 0), E(-188, 0),
828  E( 189, 0), E(-189, 0), E( 190, 0), E(-190, 0), E( 191, 0),
829  E(-191, 0), E( 192, 0), E(-192, 0), E( 193, 0), E(-193, 0),
830  E( 194, 0), E(-194, 0), E( 195, 0), E(-195, 0), E( 196, 0),
831  E(-196, 0), E( 197, 0), E(-197, 0), E( 198, 0), E(-198, 0),
832  E( 199, 0), E(-199, 0), E( 200, 0), E(-200, 0), E( 201, 0),
833  E(-201, 0), E( 202, 0), E(-202, 0), E( 203, 0), E(-203, 0),
834  E( 204, 0), E(-204, 0), E( 205, 0), E(-205, 0), E( 206, 0),
835  E(-206, 0), E( 207, 0), E(-207, 0), E( 208, 0), E(-208, 0),
836  E( 209, 0), E(-209, 0), E( 210, 0), E(-210, 0), E( 211, 0),
837  E(-211, 0), E( 212, 0), E(-212, 0), E( 213, 0), E(-213, 0),
838  E( 214, 0), E(-214, 0), E( 215, 0), E(-215, 0), E( 216, 0),
839  E(-216, 0), E( 217, 0), E(-217, 0), E( 218, 0), E(-218, 0),
840  E( 219, 0), E(-219, 0), E( 220, 0), E(-220, 0), E( 221, 0),
841  E(-221, 0), E( 222, 0), E(-222, 0), E( 223, 0), E(-223, 0),
842  E( 224, 0), E(-224, 0), E( 225, 0), E(-225, 0), E( 226, 0),
843  E(-226, 0), E( 227, 0), E(-227, 0), E( 228, 0), E(-228, 0),
844  E( 229, 0), E(-229, 0), E( 230, 0), E(-230, 0), E( 231, 0),
845  E(-231, 0), E( 232, 0), E(-232, 0), E( 233, 0), E(-233, 0),
846  E( 234, 0), E(-234, 0), E( 235, 0), E(-235, 0), E( 236, 0),
847  E(-236, 0), E( 237, 0), E(-237, 0), E( 238, 0), E(-238, 0),
848  E( 239, 0), E(-239, 0), E( 240, 0), E(-240, 0), E( 241, 0),
849  E(-241, 0), E( 242, 0), E(-242, 0), E( 243, 0), E(-243, 0),
850  E( 244, 0), E(-244, 0), E( 245, 0), E(-245, 0), E( 246, 0),
851  E(-246, 0), E( 247, 0), E(-247, 0), E( 248, 0), E(-248, 0),
852  E( 249, 0), E(-249, 0), E( 250, 0), E(-250, 0), E( 251, 0),
853  E(-251, 0), E( 252, 0), E(-252, 0), E( 253, 0), E(-253, 0),
854  E( 254, 0), E(-254, 0), E( 255, 0), E(-255, 0), E( 0, 64),
855  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
856  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
857  E( 14, 0), E( -14, 0), E( 2, 1), E( -2, 1), E( 1, 2),
858  E( -1, 2), E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0),
859  E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0), E( 19, 0),
860  E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0), E( -21, 0),
861  E( 3, 1), E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 3),
862  E( -1, 3), E( 1, 4), E( -1, 4), E( 0, 0), E( 22, 0),
863  E( -22, 0), E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0),
864  E( 25, 0), E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0),
865  E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0),
866  E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0),
867  E( -32, 0), E( 33, 0), E( -33, 0), E( 5, 1), E( -5, 1),
868  E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 5),
869  E( -1, 5), E( 1, 6), E( -1, 6), E( 34, 0), E( -34, 0),
870  E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0),
871  E( -37, 0), E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0),
872  E( 40, 0), E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0),
873  E( -42, 0), E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0),
874  E( 45, 0), E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0),
875  E( -47, 0), E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0),
876  E( 50, 0), E( -50, 0), E( 0, 1), E( 7, 1), E( -7, 1),
877  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 10, 1),
878  E( -10, 1), E( 0, 2), E( 3, 2), E( -3, 2), E( 0, 3),
879  E( 2, 3), E( -2, 3), E( 1, 7), E( -1, 7), E( 1, 8),
880  E( -1, 8), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
881  E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
882  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
883  E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
884  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
885  E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
886  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
887  E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
888  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
889  E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
890  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
891  E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
892  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
893  E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
894  E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
895  E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
896  E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
897  E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
898  E( -63, 0), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
899  E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 4, 2),
900  E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2), E( -6, 2),
901  E( 3, 3), E( -3, 3), E( 0, 4), E( 2, 4), E( -2, 4),
902  E( 0, 5), E( 0, 6), E( 1, 9), E( -1, 9), E( 1, 10),
903  E( -1, 10), E( 15, 1), E( -15, 1), E( 16, 1), E( -16, 1),
904  E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1), E( 7, 2),
905  E( -7, 2), E( 8, 2), E( -8, 2), E( 9, 2), E( -9, 2),
906  E( 10, 2), E( -10, 2), E( 4, 3), E( -4, 3), E( 5, 3),
907  E( -5, 3), E( 6, 3), E( -6, 3), E( 2, 5), E( -2, 5),
908  E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 1, 11),
909  E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13),
910  E( 1, 14), E( -1, 14), E( 19, 1), E( -19, 1), E( 20, 1),
911  E( -20, 1), E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6),
912  // AC table Q8 - 907 elements
913  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
914  E( -3, 0), E( 4, 0), E( -4, 0), E( 0, 64), E( 5, 0),
915  E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
916  E( 8, 0), E( -8, 0), E( 1, 1), E( -1, 1), E( 2, 1),
917  E( -2, 1), E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0),
918  E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0), E( 3, 1),
919  E( -3, 1), E( 4, 1), E( -4, 1), E( 1, 2), E( -1, 2),
920  E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
921  E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0),
922  E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0),
923  E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
924  E( -10, 0), E( 11, 0), E( -11, 0), E( 12, 0), E( -12, 0),
925  E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
926  E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
927  E( 18, 0), E( -18, 0), E( 19, 0), E( -19, 0), E( 20, 0),
928  E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
929  E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
930  E( -25, 0), E( 26, 0), E( -26, 0), E( 27, 0), E( -27, 0),
931  E( 28, 0), E( -28, 0), E( 29, 0), E( -29, 0), E( 30, 0),
932  E( -30, 0), E( 31, 0), E( -31, 0), E( 32, 0), E( -32, 0),
933  E( 33, 0), E( -33, 0), E( 34, 0), E( -34, 0), E( 35, 0),
934  E( -35, 0), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
935  E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
936  E( -40, 0), E( 41, 0), E( -41, 0), E( 42, 0), E( -42, 0),
937  E( 43, 0), E( -43, 0), E( 44, 0), E( -44, 0), E( 45, 0),
938  E( -45, 0), E( 46, 0), E( -46, 0), E( 47, 0), E( -47, 0),
939  E( 48, 0), E( -48, 0), E( 49, 0), E( -49, 0), E( 50, 0),
940  E( -50, 0), E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0),
941  E( 53, 0), E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0),
942  E( -55, 0), E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0),
943  E( 58, 0), E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0),
944  E( -60, 0), E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0),
945  E( 63, 0), E( -63, 0), E( 64, 0), E( -64, 0), E( 65, 0),
946  E( -65, 0), E( 66, 0), E( -66, 0), E( 67, 0), E( -67, 0),
947  E( 68, 0), E( -68, 0), E( 69, 0), E( -69, 0), E( 70, 0),
948  E( -70, 0), E( 71, 0), E( -71, 0), E( 72, 0), E( -72, 0),
949  E( 73, 0), E( -73, 0), E( 74, 0), E( -74, 0), E( 75, 0),
950  E( -75, 0), E( 76, 0), E( -76, 0), E( 77, 0), E( -77, 0),
951  E( 78, 0), E( -78, 0), E( 79, 0), E( -79, 0), E( 80, 0),
952  E( -80, 0), E( 81, 0), E( -81, 0), E( 82, 0), E( -82, 0),
953  E( 83, 0), E( -83, 0), E( 84, 0), E( -84, 0), E( 85, 0),
954  E( -85, 0), E( 86, 0), E( -86, 0), E( 87, 0), E( -87, 0),
955  E( 88, 0), E( -88, 0), E( 89, 0), E( -89, 0), E( 90, 0),
956  E( -90, 0), E( 91, 0), E( -91, 0), E( 92, 0), E( -92, 0),
957  E( 93, 0), E( -93, 0), E( 94, 0), E( -94, 0), E( 95, 0),
958  E( -95, 0), E( 96, 0), E( -96, 0), E( 97, 0), E( -97, 0),
959  E( 98, 0), E( -98, 0), E( 99, 0), E( -99, 0), E( 100, 0),
960  E(-100, 0), E( 101, 0), E(-101, 0), E( 102, 0), E(-102, 0),
961  E( 103, 0), E(-103, 0), E( 104, 0), E(-104, 0), E( 105, 0),
962  E(-105, 0), E( 106, 0), E(-106, 0), E( 107, 0), E(-107, 0),
963  E( 108, 0), E(-108, 0), E( 109, 0), E(-109, 0), E( 110, 0),
964  E(-110, 0), E( 111, 0), E(-111, 0), E( 112, 0), E(-112, 0),
965  E( 113, 0), E(-113, 0), E( 114, 0), E(-114, 0), E( 115, 0),
966  E(-115, 0), E( 116, 0), E(-116, 0), E( 117, 0), E(-117, 0),
967  E( 118, 0), E(-118, 0), E( 119, 0), E(-119, 0), E( 120, 0),
968  E(-120, 0), E( 121, 0), E(-121, 0), E( 122, 0), E(-122, 0),
969  E( 123, 0), E(-123, 0), E( 124, 0), E(-124, 0), E( 125, 0),
970  E(-125, 0), E( 126, 0), E(-126, 0), E( 127, 0), E(-127, 0),
971  E( 128, 0), E(-128, 0), E( 129, 0), E(-129, 0), E( 130, 0),
972  E(-130, 0), E( 131, 0), E(-131, 0), E( 132, 0), E(-132, 0),
973  E( 133, 0), E(-133, 0), E( 134, 0), E(-134, 0), E( 135, 0),
974  E(-135, 0), E( 136, 0), E(-136, 0), E( 137, 0), E(-137, 0),
975  E( 138, 0), E(-138, 0), E( 139, 0), E(-139, 0), E( 140, 0),
976  E(-140, 0), E( 141, 0), E(-141, 0), E( 142, 0), E(-142, 0),
977  E( 143, 0), E(-143, 0), E( 144, 0), E(-144, 0), E( 145, 0),
978  E(-145, 0), E( 146, 0), E(-146, 0), E( 147, 0), E(-147, 0),
979  E( 148, 0), E(-148, 0), E( 149, 0), E(-149, 0), E( 150, 0),
980  E(-150, 0), E( 151, 0), E(-151, 0), E( 152, 0), E(-152, 0),
981  E( 153, 0), E(-153, 0), E( 154, 0), E(-154, 0), E( 155, 0),
982  E(-155, 0), E( 156, 0), E(-156, 0), E( 157, 0), E(-157, 0),
983  E( 158, 0), E(-158, 0), E( 159, 0), E(-159, 0), E( 160, 0),
984  E(-160, 0), E( 161, 0), E(-161, 0), E( 162, 0), E(-162, 0),
985  E( 163, 0), E(-163, 0), E( 164, 0), E(-164, 0), E( 165, 0),
986  E(-165, 0), E( 166, 0), E(-166, 0), E( 167, 0), E(-167, 0),
987  E( 168, 0), E(-168, 0), E( 169, 0), E(-169, 0), E( 170, 0),
988  E(-170, 0), E( 171, 0), E(-171, 0), E( 172, 0), E(-172, 0),
989  E( 173, 0), E(-173, 0), E( 174, 0), E(-174, 0), E( 175, 0),
990  E(-175, 0), E( 176, 0), E(-176, 0), E( 177, 0), E(-177, 0),
991  E( 178, 0), E(-178, 0), E( 179, 0), E(-179, 0), E( 180, 0),
992  E(-180, 0), E( 181, 0), E(-181, 0), E( 182, 0), E(-182, 0),
993  E( 183, 0), E(-183, 0), E( 184, 0), E(-184, 0), E( 185, 0),
994  E(-185, 0), E( 186, 0), E(-186, 0), E( 187, 0), E(-187, 0),
995  E( 188, 0), E(-188, 0), E( 189, 0), E(-189, 0), E( 190, 0),
996  E(-190, 0), E( 191, 0), E(-191, 0), E( 192, 0), E(-192, 0),
997  E( 193, 0), E(-193, 0), E( 194, 0), E(-194, 0), E( 195, 0),
998  E(-195, 0), E( 196, 0), E(-196, 0), E( 197, 0), E(-197, 0),
999  E( 198, 0), E(-198, 0), E( 199, 0), E(-199, 0), E( 200, 0),
1000  E(-200, 0), E( 201, 0), E(-201, 0), E( 202, 0), E(-202, 0),
1001  E( 203, 0), E(-203, 0), E( 204, 0), E(-204, 0), E( 205, 0),
1002  E(-205, 0), E( 206, 0), E(-206, 0), E( 207, 0), E(-207, 0),
1003  E( 208, 0), E(-208, 0), E( 209, 0), E(-209, 0), E( 210, 0),
1004  E(-210, 0), E( 211, 0), E(-211, 0), E( 212, 0), E(-212, 0),
1005  E( 213, 0), E(-213, 0), E( 214, 0), E(-214, 0), E( 215, 0),
1006  E(-215, 0), E( 216, 0), E(-216, 0), E( 217, 0), E(-217, 0),
1007  E( 218, 0), E(-218, 0), E( 219, 0), E(-219, 0), E( 220, 0),
1008  E(-220, 0), E( 221, 0), E(-221, 0), E( 222, 0), E(-222, 0),
1009  E( 223, 0), E(-223, 0), E( 224, 0), E(-224, 0), E( 225, 0),
1010  E(-225, 0), E( 226, 0), E(-226, 0), E( 227, 0), E(-227, 0),
1011  E( 228, 0), E(-228, 0), E( 229, 0), E(-229, 0), E( 230, 0),
1012  E(-230, 0), E( 231, 0), E(-231, 0), E( 232, 0), E(-232, 0),
1013  E( 233, 0), E(-233, 0), E( 234, 0), E(-234, 0), E( 235, 0),
1014  E(-235, 0), E( 236, 0), E(-236, 0), E( 237, 0), E(-237, 0),
1015  E( 238, 0), E(-238, 0), E( 239, 0), E(-239, 0), E( 240, 0),
1016  E(-240, 0), E( 241, 0), E(-241, 0), E( 242, 0), E(-242, 0),
1017  E( 243, 0), E(-243, 0), E( 244, 0), E(-244, 0), E( 245, 0),
1018  E(-245, 0), E( 246, 0), E(-246, 0), E( 247, 0), E(-247, 0),
1019  E( 248, 0), E(-248, 0), E( 249, 0), E(-249, 0), E( 250, 0),
1020  E(-250, 0), E( 251, 0), E(-251, 0), E( 252, 0), E(-252, 0),
1021  E( 253, 0), E(-253, 0), E( 254, 0), E(-254, 0), E( 255, 0),
1022  E(-255, 0), E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0),
1023  E( 15, 0), E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0),
1024  E( -17, 0), E( 18, 0), E( -18, 0), E( 5, 1), E( -5, 1),
1025  E( 6, 1), E( -6, 1), E( 2, 2), E( -2, 2), E( 1, 3),
1026  E( -1, 3), E( 0, 0), E( 19, 0), E( -19, 0), E( 20, 0),
1027  E( -20, 0), E( 21, 0), E( -21, 0), E( 22, 0), E( -22, 0),
1028  E( 23, 0), E( -23, 0), E( 24, 0), E( -24, 0), E( 25, 0),
1029  E( -25, 0), E( 7, 1), E( -7, 1), E( 8, 1), E( -8, 1),
1030  E( 3, 2), E( -3, 2), E( 2, 3), E( -2, 3), E( 1, 4),
1031  E( -1, 4), E( 1, 5), E( -1, 5), E( 26, 0), E( -26, 0),
1032  E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0), E( 29, 0),
1033  E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1034  E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1035  E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0), E( -36, 0),
1036  E( 0, 1), E( 9, 1), E( -9, 1), E( 10, 1), E( -10, 1),
1037  E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1), E( 0, 2),
1038  E( 4, 2), E( -4, 2), E( 5, 2), E( -5, 2), E( 6, 2),
1039  E( -6, 2), E( 0, 3), E( 3, 3), E( -3, 3), E( 4, 3),
1040  E( -4, 3), E( 0, 4), E( 2, 4), E( -2, 4), E( 0, 5),
1041  E( 1, 6), E( -1, 6), E( 1, 7), E( -1, 7), E( 1, 8),
1042  E( -1, 8), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1043  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1044  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1045  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1046  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1047  E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1), E( 15, 1),
1048  E( -15, 1), E( 16, 1), E( -16, 1), E( 7, 2), E( -7, 2),
1049  E( 8, 2), E( -8, 2), E( 5, 3), E( -5, 3), E( 6, 3),
1050  E( -6, 3), E( 3, 4), E( -3, 4), E( 4, 4), E( -4, 4),
1051  E( 2, 5), E( -2, 5), E( 0, 6), E( 2, 6), E( -2, 6),
1052  E( 0, 7), E( 0, 8), E( 0, 9), E( 1, 9), E( -1, 9),
1053  E( 1, 10), E( -1, 10), E( 1, 11), E( -1, 11), E( 1, 12),
1054  E( -1, 12), E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0),
1055  E( 51, 0), E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0),
1056  E( -53, 0), E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0),
1057  E( 56, 0), E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0),
1058  E( -58, 0), E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0),
1059  E( 61, 0), E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0),
1060  E( -63, 0), E( 17, 1), E( -17, 1), E( 18, 1), E( -18, 1),
1061  E( 19, 1), E( -19, 1), E( 20, 1), E( -20, 1), E( 21, 1),
1062  E( -21, 1), E( 22, 1), E( -22, 1), E( 23, 1), E( -23, 1),
1063  E( 24, 1), E( -24, 1), E( 9, 2), E( -9, 2), E( 10, 2),
1064  E( -10, 2), E( 11, 2), E( -11, 2), E( 12, 2), E( -12, 2),
1065  E( 7, 3), E( -7, 3), E( 8, 3), E( -8, 3), E( 5, 4),
1066  E( -5, 4), E( 6, 4), E( -6, 4), E( 3, 5), E( -3, 5),
1067  E( 4, 5), E( -4, 5), E( 5, 5), E( -5, 5), E( 6, 5),
1068  E( -6, 5), E( 3, 6), E( -3, 6), E( 4, 6), E( -4, 6),
1069  E( 2, 7), E( -2, 7), E( 2, 8), E( -2, 8), E( 2, 9),
1070  E( -2, 9), E( 0, 10), E( 2, 10), E( -2, 10), E( 0, 11),
1071  E( 0, 12), E( 0, 13), E( 1, 13), E( -1, 13), E( 1, 14),
1072  E( -1, 14), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3),
1073  E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1074  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13),
1075  E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1076  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23),
1077  E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1078  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33),
1079  E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1080  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43),
1081  E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1082  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53),
1083  E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1084  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63),
1085  E( 25, 1), E( -25, 1), E( 26, 1), E( -26, 1), E( 27, 1),
1086  E( -27, 1), E( 28, 1), E( -28, 1), E( 29, 1), E( -29, 1),
1087  E( 30, 1), E( -30, 1), E( 31, 1), E( -31, 1), E( 32, 1),
1088  E( -32, 1), E( 13, 2), E( -13, 2), E( 14, 2), E( -14, 2),
1089  E( 15, 2), E( -15, 2), E( 16, 2), E( -16, 2), E( 9, 3),
1090  E( -9, 3), E( 10, 3), E( -10, 3), E( 11, 3), E( -11, 3),
1091  E( 7, 4), E( -7, 4), E( 3, 7), E( -3, 7), E( 4, 7),
1092  E( -4, 7), E( 3, 8), E( -3, 8), E( 4, 8), E( -4, 8),
1093  E( 3, 9), E( -3, 9), E( 2, 11), E( -2, 11), E( 2, 12),
1094  E( -2, 12), E( 0, 14),
1095  // AC table Q16 - 512 elements
1096  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0),
1097  E( -3, 0), E( 4, 0), E( -4, 0), E( 1, 1), E( -1, 1),
1098  E( 0, 64), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1099  E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 7, 0),
1100  E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1101  E( 3, 1), E( -3, 1), E( 1, 3), E( -1, 3), E( 1, 4),
1102  E( -1, 4), E( 10, 0), E( -10, 0), E( 11, 0), E( -11, 0),
1103  E( 12, 0), E( -12, 0), E( 4, 1), E( -4, 1), E( 2, 2),
1104  E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6),
1105  E( 13, 0), E( -13, 0), E( 14, 0), E( -14, 0), E( 15, 0),
1106  E( -15, 0), E( 16, 0), E( -16, 0), E( 17, 0), E( -17, 0),
1107  E( 5, 1), E( -5, 1), E( 2, 3), E( -2, 3), E( 1, 7),
1108  E( -1, 7), E( 1, 8), E( -1, 8), E( 1, 9), E( -1, 9),
1109  E( 1, 10), E( -1, 10), E( 0, 0), E( 18, 0), E( -18, 0),
1110  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1111  E( -21, 0), E( 22, 0), E( -22, 0), E( 6, 1), E( -6, 1),
1112  E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1113  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11), E( -1, 11),
1114  E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1115  E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5),
1116  E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1117  E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15),
1118  E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1119  E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25),
1120  E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1121  E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35),
1122  E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1123  E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45),
1124  E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1125  E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55),
1126  E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1127  E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 1, 0),
1128  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1129  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0),
1130  E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1131  E( 9, 0), E( -9, 0), E( 10, 0), E( -10, 0), E( 11, 0),
1132  E( -11, 0), E( 12, 0), E( -12, 0), E( 13, 0), E( -13, 0),
1133  E( 14, 0), E( -14, 0), E( 15, 0), E( -15, 0), E( 16, 0),
1134  E( -16, 0), E( 17, 0), E( -17, 0), E( 18, 0), E( -18, 0),
1135  E( 19, 0), E( -19, 0), E( 20, 0), E( -20, 0), E( 21, 0),
1136  E( -21, 0), E( 22, 0), E( -22, 0), E( 23, 0), E( -23, 0),
1137  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1138  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1139  E( 29, 0), E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0),
1140  E( -31, 0), E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0),
1141  E( 34, 0), E( -34, 0), E( 35, 0), E( -35, 0), E( 36, 0),
1142  E( -36, 0), E( 37, 0), E( -37, 0), E( 38, 0), E( -38, 0),
1143  E( 39, 0), E( -39, 0), E( 40, 0), E( -40, 0), E( 41, 0),
1144  E( -41, 0), E( 42, 0), E( -42, 0), E( 43, 0), E( -43, 0),
1145  E( 44, 0), E( -44, 0), E( 45, 0), E( -45, 0), E( 46, 0),
1146  E( -46, 0), E( 47, 0), E( -47, 0), E( 48, 0), E( -48, 0),
1147  E( 49, 0), E( -49, 0), E( 50, 0), E( -50, 0), E( 51, 0),
1148  E( -51, 0), E( 52, 0), E( -52, 0), E( 53, 0), E( -53, 0),
1149  E( 54, 0), E( -54, 0), E( 55, 0), E( -55, 0), E( 56, 0),
1150  E( -56, 0), E( 57, 0), E( -57, 0), E( 58, 0), E( -58, 0),
1151  E( 59, 0), E( -59, 0), E( 60, 0), E( -60, 0), E( 61, 0),
1152  E( -61, 0), E( 62, 0), E( -62, 0), E( 63, 0), E( -63, 0),
1153  E( 64, 0), E( -64, 0), E( 65, 0), E( -65, 0), E( 66, 0),
1154  E( -66, 0), E( 67, 0), E( -67, 0), E( 68, 0), E( -68, 0),
1155  E( 69, 0), E( -69, 0), E( 70, 0), E( -70, 0), E( 71, 0),
1156  E( -71, 0), E( 72, 0), E( -72, 0), E( 73, 0), E( -73, 0),
1157  E( 74, 0), E( -74, 0), E( 75, 0), E( -75, 0), E( 76, 0),
1158  E( -76, 0), E( 77, 0), E( -77, 0), E( 78, 0), E( -78, 0),
1159  E( 79, 0), E( -79, 0), E( 80, 0), E( -80, 0), E( 81, 0),
1160  E( -81, 0), E( 82, 0), E( -82, 0), E( 83, 0), E( -83, 0),
1161  E( 84, 0), E( -84, 0), E( 85, 0), E( -85, 0), E( 86, 0),
1162  E( -86, 0), E( 87, 0), E( -87, 0), E( 88, 0), E( -88, 0),
1163  E( 89, 0), E( -89, 0), E( 90, 0), E( -90, 0), E( 91, 0),
1164  E( -91, 0), E( 92, 0), E( -92, 0), E( 93, 0), E( -93, 0),
1165  E( 94, 0), E( -94, 0), E( 95, 0), E( -95, 0), E( 96, 0),
1166  E( -96, 0), E( 97, 0), E( -97, 0), E( 98, 0), E( -98, 0),
1167  E( 99, 0), E( -99, 0), E( 100, 0), E(-100, 0), E( 101, 0),
1168  E(-101, 0), E( 102, 0), E(-102, 0), E( 103, 0), E(-103, 0),
1169  E( 104, 0), E(-104, 0), E( 105, 0), E(-105, 0), E( 106, 0),
1170  E(-106, 0), E( 107, 0), E(-107, 0), E( 108, 0), E(-108, 0),
1171  E( 109, 0), E(-109, 0), E( 110, 0), E(-110, 0), E( 111, 0),
1172  E(-111, 0), E( 112, 0), E(-112, 0), E( 113, 0), E(-113, 0),
1173  E( 114, 0), E(-114, 0), E( 115, 0), E(-115, 0), E( 116, 0),
1174  E(-116, 0), E( 117, 0), E(-117, 0), E( 118, 0), E(-118, 0),
1175  E( 119, 0), E(-119, 0), E( 120, 0), E(-120, 0), E( 121, 0),
1176  E(-121, 0), E( 122, 0), E(-122, 0), E( 123, 0), E(-123, 0),
1177  E( 124, 0), E(-124, 0), E( 125, 0), E(-125, 0), E( 126, 0),
1178  E(-126, 0), E( 127, 0), E(-127, 0), E( 23, 0), E( -23, 0),
1179  E( 24, 0), E( -24, 0), E( 25, 0), E( -25, 0), E( 26, 0),
1180  E( -26, 0), E( 27, 0), E( -27, 0), E( 28, 0), E( -28, 0),
1181  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2),
1182  E( -4, 2), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1183  E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7), E( 29, 0),
1184  E( -29, 0), E( 30, 0), E( -30, 0), E( 31, 0), E( -31, 0),
1185  E( 32, 0), E( -32, 0), E( 33, 0), E( -33, 0), E( 34, 0),
1186  E( -34, 0), E( 35, 0), E( -35, 0), E( 0, 1), E( 10, 1),
1187  E( -10, 1), E( 11, 1), E( -11, 1), E( 12, 1), E( -12, 1),
1188  E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3), E( 4, 3),
1189  E( -4, 3), E( 3, 5), E( -3, 5), E( 2, 8), E( -2, 8),
1190  E( 2, 9), E( -2, 9), E( 1, 14), E( -1, 14), E( 1, 15),
1191  E( -1, 15), E( 36, 0), E( -36, 0), E( 37, 0), E( -37, 0),
1192  E( 38, 0), E( -38, 0), E( 39, 0), E( -39, 0), E( 40, 0),
1193  E( -40, 0), E( 13, 1), E( -13, 1), E( 14, 1), E( -14, 1),
1194  E( 15, 1), E( -15, 1), E( 6, 2), E( -6, 2), E( 7, 2),
1195  E( -7, 2), E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4),
1196  E( -4, 4), E( 0, 5), E( 0, 6), E( 3, 6), E( -3, 6),
1197  E( 0, 7), E( 3, 7), E( -3, 7), E( 2, 10), E( -2, 10),
1198  E( 1, 16), E( -1, 16),
1199  // AC table Q32 - 354 elements
1200  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 0, 64), E( 3, 0),
1201  E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 5, 0),
1202  E( -5, 0), E( 2, 1), E( -2, 1), E( 1, 2), E( -1, 2), E( 1, 3),
1203  E( -1, 3), E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 3, 1),
1204  E( -3, 1), E( 1, 4), E( -1, 4), E( 1, 5), E( -1, 5), E( 8, 0),
1205  E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 4, 1),
1206  E( -4, 1), E( 2, 2), E( -2, 2), E( 1, 6), E( -1, 6), E( 1, 7),
1207  E( -1, 7), E( 1, 8), E( -1, 8), E( 11, 0), E(-11, 0), E( 12, 0),
1208  E(-12, 0), E( 13, 0), E(-13, 0), E( 5, 1), E( -5, 1), E( 2, 3),
1209  E( -2, 3), E( 1, 9), E( -1, 9), E( 1, 10), E( -1, 10), E( 14, 0),
1210  E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0), E(-16, 0), E( 6, 1),
1211  E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1212  E( -3, 3), E( 2, 4), E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 11),
1213  E( -1, 11), E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0),
1214  E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6),
1215  E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12),
1216  E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18),
1217  E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24),
1218  E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30),
1219  E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36),
1220  E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42),
1221  E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48),
1222  E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54),
1223  E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60),
1224  E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0), E( 17, 0), E(-17, 0),
1225  E( 18, 0), E(-18, 0), E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0),
1226  E( 8, 1), E( -8, 1), E( 9, 1), E( -9, 1), E( 4, 2), E( -4, 2),
1227  E( 3, 4), E( -3, 4), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1228  E( 2, 8), E( -2, 8), E( 1, 14), E( -1, 14), E( 0, 0), E( 1, 0),
1229  E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0), E( 4, 0),
1230  E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0), E( 7, 0),
1231  E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0), E( 10, 0),
1232  E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 13, 0),
1233  E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0), E( 16, 0),
1234  E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0), E( 19, 0),
1235  E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0), E( 22, 0),
1236  E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0), E( 25, 0),
1237  E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0), E( 28, 0),
1238  E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0), E( 31, 0),
1239  E(-31, 0), E( 32, 0), E(-32, 0), E( 33, 0), E(-33, 0), E( 34, 0),
1240  E(-34, 0), E( 35, 0), E(-35, 0), E( 36, 0), E(-36, 0), E( 37, 0),
1241  E(-37, 0), E( 38, 0), E(-38, 0), E( 39, 0), E(-39, 0), E( 40, 0),
1242  E(-40, 0), E( 41, 0), E(-41, 0), E( 42, 0), E(-42, 0), E( 43, 0),
1243  E(-43, 0), E( 44, 0), E(-44, 0), E( 45, 0), E(-45, 0), E( 46, 0),
1244  E(-46, 0), E( 47, 0), E(-47, 0), E( 48, 0), E(-48, 0), E( 49, 0),
1245  E(-49, 0), E( 50, 0), E(-50, 0), E( 51, 0), E(-51, 0), E( 52, 0),
1246  E(-52, 0), E( 53, 0), E(-53, 0), E( 54, 0), E(-54, 0), E( 55, 0),
1247  E(-55, 0), E( 56, 0), E(-56, 0), E( 57, 0), E(-57, 0), E( 58, 0),
1248  E(-58, 0), E( 59, 0), E(-59, 0), E( 60, 0), E(-60, 0), E( 61, 0),
1249  E(-61, 0), E( 62, 0), E(-62, 0), E( 63, 0), E(-63, 0), E( 21, 0),
1250  E(-21, 0), E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 0, 1),
1251  E( 10, 1), E(-10, 1), E( 11, 1), E(-11, 1), E( 0, 2), E( 5, 2),
1252  E( -5, 2), E( 6, 2), E( -6, 2), E( 0, 3), E( 4, 3), E( -4, 3),
1253  E( 0, 4), E( 3, 5), E( -3, 5), E( 3, 6), E( -3, 6), E( 2, 9),
1254  E( -2, 9), E( 1, 15), E( -1, 15), E( 24, 0), E(-24, 0), E( 25, 0),
1255  E(-25, 0), E( 26, 0), E(-26, 0), E( 12, 1), E(-12, 1), E( 13, 1),
1256  E(-13, 1), E( 5, 3), E( -5, 3), E( 4, 4), E( -4, 4), E( 0, 5),
1257  E( 4, 5), E( -4, 5), E( 0, 6), E( 0, 7), E( 3, 7), E( -3, 7),
1258  E( 0, 8), E( 3, 8), E( -3, 8), E( 0, 9), E( 1, 16), E( -1, 16),
1259  // AC table Q64 - 257 elements
1260  E( 1, 0), E( -1, 0), E( 0, 64), E( 2, 0), E( -2, 0), E( 3, 0),
1261  E( -3, 0), E( 1, 1), E( -1, 1), E( 4, 0), E( -4, 0), E( 2, 1),
1262  E( -2, 1), E( 1, 2), E( -1, 2), E( 5, 0), E( -5, 0), E( 1, 3),
1263  E( -1, 3), E( 1, 4), E( -1, 4), E( 6, 0), E( -6, 0), E( 3, 1),
1264  E( -3, 1), E( 2, 2), E( -2, 2), E( 1, 5), E( -1, 5), E( 1, 6),
1265  E( -1, 6), E( 1, 7), E( -1, 7), E( 7, 0), E( -7, 0), E( 8, 0),
1266  E( -8, 0), E( 4, 1), E( -4, 1), E( 2, 3), E( -2, 3), E( 1, 8),
1267  E( -1, 8), E( 1, 9), E( -1, 9), E( 9, 0), E( -9, 0), E( 10, 0),
1268  E(-10, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 2, 4),
1269  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 1, 11),
1270  E( -1, 11), E( 0, 0), E( 0, 1), E( 0, 2), E( 0, 3), E( 0, 4),
1271  E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8), E( 0, 9), E( 0, 10),
1272  E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14), E( 0, 15), E( 0, 16),
1273  E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20), E( 0, 21), E( 0, 22),
1274  E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26), E( 0, 27), E( 0, 28),
1275  E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32), E( 0, 33), E( 0, 34),
1276  E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38), E( 0, 39), E( 0, 40),
1277  E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44), E( 0, 45), E( 0, 46),
1278  E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50), E( 0, 51), E( 0, 52),
1279  E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56), E( 0, 57), E( 0, 58),
1280  E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62), E( 0, 63), E( 0, 0),
1281  E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0), E( 6, 1), E( -6, 1),
1282  E( 7, 1), E( -7, 1), E( 3, 3), E( -3, 3), E( 3, 4), E( -3, 4),
1283  E( 3, 5), E( -3, 5), E( 2, 6), E( -2, 6), E( 2, 7), E( -2, 7),
1284  E( 1, 12), E( -1, 12), E( 1, 13), E( -1, 13), E( 1, 14), E( -1, 14),
1285  E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 0, 1), E( 8, 1),
1286  E( -8, 1), E( 4, 2), E( -4, 2), E( 4, 3), E( -4, 3), E( 2, 8),
1287  E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 15), E( -1, 15), E( 0, 0),
1288  E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0), E( 3, 0), E( -3, 0),
1289  E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0), E( 6, 0), E( -6, 0),
1290  E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0), E( 9, 0), E( -9, 0),
1291  E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0), E( 12, 0), E(-12, 0),
1292  E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0), E( 15, 0), E(-15, 0),
1293  E( 16, 0), E(-16, 0), E( 17, 0), E(-17, 0), E( 18, 0), E(-18, 0),
1294  E( 19, 0), E(-19, 0), E( 20, 0), E(-20, 0), E( 21, 0), E(-21, 0),
1295  E( 22, 0), E(-22, 0), E( 23, 0), E(-23, 0), E( 24, 0), E(-24, 0),
1296  E( 25, 0), E(-25, 0), E( 26, 0), E(-26, 0), E( 27, 0), E(-27, 0),
1297  E( 28, 0), E(-28, 0), E( 29, 0), E(-29, 0), E( 30, 0), E(-30, 0),
1298  E( 31, 0), E(-31, 0), E( 15, 0), E(-15, 0), E( 9, 1), E( -9, 1),
1299  E( 10, 1), E(-10, 1), E( 0, 2), E( 5, 2), E( -5, 2), E( 0, 3),
1300  E( 5, 3), E( -5, 3), E( 0, 4), E( 4, 4), E( -4, 4), E( 0, 5),
1301  E( 4, 5), E( -4, 5), E( 0, 6), E( 3, 6), E( -3, 6), E( 3, 7),
1302  E( -3, 7), E( 1, 16), E( -1, 16), E( 1, 17), E( -1, 17),
1303  // AC table Q128 - 194 elements
1304  E( 1, 0), E( -1, 0), E( 0, 64), E( 1, 1), E( -1, 1), E( 2, 0),
1305  E( -2, 0), E( 3, 0), E( -3, 0), E( 2, 1), E( -2, 1), E( 1, 2),
1306  E( -1, 2), E( 1, 3), E( -1, 3), E( 1, 4), E( -1, 4), E( 4, 0),
1307  E( -4, 0), E( 1, 5), E( -1, 5), E( 1, 6), E( -1, 6), E( 1, 7),
1308  E( -1, 7), E( 5, 0), E( -5, 0), E( 3, 1), E( -3, 1), E( 2, 2),
1309  E( -2, 2), E( 2, 3), E( -2, 3), E( 1, 8), E( -1, 8), E( 1, 9),
1310  E( -1, 9), E( 6, 0), E( -6, 0), E( 4, 1), E( -4, 1), E( 2, 4),
1311  E( -2, 4), E( 2, 5), E( -2, 5), E( 1, 10), E( -1, 10), E( 7, 0),
1312  E( -7, 0), E( 5, 1), E( -5, 1), E( 3, 2), E( -3, 2), E( 3, 3),
1313  E( -3, 3), E( 2, 6), E( -2, 6), E( 0, 0), E( 0, 1), E( 0, 2),
1314  E( 0, 3), E( 0, 4), E( 0, 5), E( 0, 6), E( 0, 7), E( 0, 8),
1315  E( 0, 9), E( 0, 10), E( 0, 11), E( 0, 12), E( 0, 13), E( 0, 14),
1316  E( 0, 15), E( 0, 16), E( 0, 17), E( 0, 18), E( 0, 19), E( 0, 20),
1317  E( 0, 21), E( 0, 22), E( 0, 23), E( 0, 24), E( 0, 25), E( 0, 26),
1318  E( 0, 27), E( 0, 28), E( 0, 29), E( 0, 30), E( 0, 31), E( 0, 32),
1319  E( 0, 33), E( 0, 34), E( 0, 35), E( 0, 36), E( 0, 37), E( 0, 38),
1320  E( 0, 39), E( 0, 40), E( 0, 41), E( 0, 42), E( 0, 43), E( 0, 44),
1321  E( 0, 45), E( 0, 46), E( 0, 47), E( 0, 48), E( 0, 49), E( 0, 50),
1322  E( 0, 51), E( 0, 52), E( 0, 53), E( 0, 54), E( 0, 55), E( 0, 56),
1323  E( 0, 57), E( 0, 58), E( 0, 59), E( 0, 60), E( 0, 61), E( 0, 62),
1324  E( 0, 63), E( 6, 1), E( -6, 1), E( 7, 1), E( -7, 1), E( 3, 4),
1325  E( -3, 4), E( 3, 5), E( -3, 5), E( 2, 7), E( -2, 7), E( 2, 8),
1326  E( -2, 8), E( 2, 9), E( -2, 9), E( 1, 11), E( -1, 11), E( 1, 12),
1327  E( -1, 12), E( 1, 13), E( -1, 13), E( 0, 0), E( 8, 0), E( -8, 0),
1328  E( 9, 0), E( -9, 0), E( 8, 1), E( -8, 1), E( 4, 2), E( -4, 2),
1329  E( 4, 3), E( -4, 3), E( 3, 6), E( -3, 6), E( 1, 14), E( -1, 14),
1330  E( 1, 15), E( -1, 15), E( 1, 16), E( -1, 16), E( 0, 1), E( 0, 2),
1331  E( 0, 3), E( 0, 0), E( 1, 0), E( -1, 0), E( 2, 0), E( -2, 0),
1332  E( 3, 0), E( -3, 0), E( 4, 0), E( -4, 0), E( 5, 0), E( -5, 0),
1333  E( 6, 0), E( -6, 0), E( 7, 0), E( -7, 0), E( 8, 0), E( -8, 0),
1334  E( 9, 0), E( -9, 0), E( 10, 0), E(-10, 0), E( 11, 0), E(-11, 0),
1335  E( 12, 0), E(-12, 0), E( 13, 0), E(-13, 0), E( 14, 0), E(-14, 0),
1336  E( 15, 0), E(-15, 0),
1337 };
1338 
1339 static const uint8_t hqx_ac_lens[] = {
1340  // AC table Q0 - 815 elements
1341  4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
1342  13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1343  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1344  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1345  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1346  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1347  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1348  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1349  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1350  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1351  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1352  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1353  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1354  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1355  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1356  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1357  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1358  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1359  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1360  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1361  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1362  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1363  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1364  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1365  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1366  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1367  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1368  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1369  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1370  14, 14, 14, 14, 14, 14, 14, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1371  7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1372  8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
1373  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1374  9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1375  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1376  10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10,
1377  10, 9, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1378  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1379  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1380  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1381  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1382  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1383  11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 12, 12, 12,
1384  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1385  12, 12, 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13,
1386  13, 13, 13, 13, 13,
1387  // AC table Q8 - 907 elements
1388  4, 4, 4, 4, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1389  6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14,
1390  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1391  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1392  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1393  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1394  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1395  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1396  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1397  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1398  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1399  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1400  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1401  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1402  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1403  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1404  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1405  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1406  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1407  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1408  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1409  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1410  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1411  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1412  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1413  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1414  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1415  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1416  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1417  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1418  15, 15, 15, 15, 15, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1419  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1420  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10,
1421  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1422  10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10,
1423  10, 9, 10, 10, 10, 10, 9, 10, 10, 9, 10, 10, 10, 10, 10, 10, 11, 11,
1424  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1425  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1426  11, 11, 11, 11, 11, 11, 11, 11, 10, 11, 11, 10, 10, 10, 11, 11, 11, 11,
1427  11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1428  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1429  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1430  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1431  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 11, 11,
1432  12, 12, 12, 12, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1433  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1434  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1435  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1436  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1437  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1438  13, 13, 13, 13, 13, 13, 12,
1439  // AC table Q16 - 512 elements
1440  3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6,
1441  6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
1442  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1443  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1444  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1445  10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1446  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1447  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1448  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 17, 17, 17,
1449  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1450  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1451  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1452  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1453  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1454  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1455  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1456  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1457  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1458  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1459  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1460  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1461  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1462  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 11,
1463  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1464  11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1465  12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12,
1466  12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1467  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 13, 12, 12, 13,
1468  13, 12, 13, 13, 13, 13, 13, 13,
1469  // AC table Q32 - 354 elements
1470  3, 3, 4, 4, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1471  6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
1472  8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1473  9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1474  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15,
1475  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1476  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1477  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1478  15, 15, 15, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1479  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, 17, 17, 17, 17, 17, 17, 17,
1480  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1481  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1482  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1483  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1484  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1485  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1486  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 12, 12, 11,
1487  12, 12, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 11, 12, 12, 12, 12, 12,
1488  12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12,
1489  13, 13, 12, 12, 13, 13, 12, 13, 13, 12, 13, 13,
1490  // AC table Q64 - 257 elements
1491  3, 3, 2, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7,
1492  7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9,
1493  9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1494  10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1495  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1496  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1497  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10,
1498  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1499  11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12,
1500  12, 12, 12, 12, 12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1501  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1502  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1503  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13,
1504  13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 12, 13, 13, 13,
1505  13, 13, 13, 13, 13,
1506  // AC table Q128 - 194 elements
1507  3, 3, 2, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
1508  7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1509  8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
1510  10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1511  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1512  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1513  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11,
1514  11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12,
1515  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1516  12, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1517  17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1518 };
1519 
1520 static const uint16_t hqx_ac_nb_elems[] = { 815, 907, 512, 354, 257, 194 };
1521 
1522 static VLCElem cbp_vlc[896 /* dc9 */ + 1344 /* dc10 */
1523  + 15630 /* RL_VLC_ELEMS for hqx_ac */];
1524 
1525 static const VLCElem *dc_vlc[2];
1526 #define INIT_DC_TABLE(idx, name) \
1527  do { \
1528  dc_vlc[idx] = ff_vlc_init_tables(&state, HQX_DC_VLC_BITS, \
1529  FF_ARRAY_ELEMS(name ## _vlc_lens), \
1530  name ## _vlc_lens, 1, 1, \
1531  name ## _vlc_bits, 2, 2, 0); \
1532  } while (0)
1533 
1535 {
1537  const uint8_t *lens = hqx_ac_lens;
1538  const int16_t *run_level = hqx_ac_run_level;
1539 
1540  INIT_DC_TABLE(0, dc9);
1541  INIT_DC_TABLE(1, dc10);
1542 
1543  for (int i = 0; i < NUM_HQX_AC; ++i) {
1544  RL_VLC_ELEM *lut = state.table;
1545  unsigned nb_codes = state.size;
1546 
1547  hqx_ac[i].lut =
1549  hqx_ac_nb_elems[i], lens, 1,
1550  run_level, 2, 2, 0, 0);
1551 
1552  nb_codes -= state.size;
1553 
1554  for (unsigned j = 0; j < nb_codes; ++j) {
1555  // lut[j] is in VLC (not RL_VLC) state
1556  int sym = lut[j].sym;
1557  int len = lut[j].len;
1558  int level;
1559 
1560  if (len < 0) {
1561  level = sym;
1562  } else {
1563  level = sym >> 7;
1564  lut[j].run = sym & 0x7f;
1565  }
1566  // lut[j] is now in RL_VLC state
1567  lut[j].len8 = len;
1568  lut[j].level = level;
1569  }
1570  lens += hqx_ac_nb_elems[i];
1571  run_level += hqx_ac_nb_elems[i];
1572  }
1573 }
1574 
1575 #endif /* AVCODEC_HQXVLC_H*/
VLCElem::level
int16_t level
Definition: vlc.h:41
level
uint8_t level
Definition: svq3.c:205
HQX_AC_Q64
@ HQX_AC_Q64
Definition: hqxvlc.h:38
hqx_ac_run_level
static const int16_t hqx_ac_run_level[]
Definition: hqxvlc.h:747
HQXAC::bits
int bits
Definition: hqxvlc.h:44
cbp_vlc
static VLCElem cbp_vlc[896+1344+15630]
Definition: hqxvlc.h:1523
av_unused
#define av_unused
Definition: attributes.h:131
HQX_AC_Q0
@ HQX_AC_Q0
Definition: hqxvlc.h:34
VLCElem::len
VLCBaseType len
Definition: vlc.h:37
HQX_AC_Q8
@ HQX_AC_Q8
Definition: hqxvlc.h:35
dc9_vlc_lens
static const uint8_t dc9_vlc_lens[512]
Definition: hqxvlc.h:115
state
static struct @488 state
dc_vlc
static const VLCElem * dc_vlc[2]
Definition: hqxvlc.h:1525
macros.h
VLCElem::sym
VLCBaseType sym
Definition: vlc.h:36
E
#define E(level, run)
Definition: hqxvlc.h:745
hqx_ac
static HQXAC hqx_ac[NUM_HQX_AC]
Definition: hqxvlc.h:739
av_cold
#define av_cold
Definition: attributes.h:90
VLCInitState
For static VLCs, the number of bits can often be hardcoded at each get_vlc2() callsite.
Definition: vlc.h:220
INIT_DC_TABLE
#define INIT_DC_TABLE(idx, name)
Definition: hqxvlc.h:1526
bits
uint8_t bits
Definition: vp3data.h:128
hqx_ac_lens
static const uint8_t hqx_ac_lens[]
Definition: hqxvlc.h:1339
VLCElem::run
uint8_t run
Definition: vlc.h:43
dc9_vlc_bits
static const uint16_t dc9_vlc_bits[512]
Definition: hqxvlc.h:48
HQXACMode
HQXACMode
Definition: hqxvlc.h:33
hqx_init_static
static av_cold av_unused void hqx_init_static(void)
Definition: hqxvlc.h:1534
NUM_HQX_AC
@ NUM_HQX_AC
Definition: hqxvlc.h:40
dc10_vlc_bits
static const uint16_t dc10_vlc_bits[1024]
Definition: hqxvlc.h:150
HQXAC::lut
const RL_VLC_ELEM * lut
Definition: hqxvlc.h:45
HQX_AC_Q16
@ HQX_AC_Q16
Definition: hqxvlc.h:36
VLCElem
Definition: vlc.h:32
dc11_vlc_lens
static const uint8_t dc11_vlc_lens[2048]
Definition: hqxvlc.h:607
VLCElem::len8
int8_t len8
Definition: vlc.h:42
attributes.h
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:256
hqx_ac_nb_elems
static const uint16_t hqx_ac_nb_elems[]
Definition: hqxvlc.h:1520
HQX_AC_Q32
@ HQX_AC_Q32
Definition: hqxvlc.h:37
dc10_vlc_lens
static const uint8_t dc10_vlc_lens[1024]
Definition: hqxvlc.h:281
len
int len
Definition: vorbis_enc_data.h:426
dc11_vlc_bits
static const uint16_t dc11_vlc_bits[2048]
Definition: hqxvlc.h:348
HQXAC
Definition: hqxvlc.h:43
ff_vlc_init_tables_from_lengths
const av_cold VLCElem * ff_vlc_init_tables_from_lengths(VLCInitState *state, int nb_bits, int nb_codes, const int8_t *lens, int lens_wrap, const void *symbols, int symbols_wrap, int symbols_size, int offset, int flags)
Definition: vlc.c:366
HQX_AC_Q128
@ HQX_AC_Q128
Definition: hqxvlc.h:39
VLC_INIT_STATE
#define VLC_INIT_STATE(_table)
Definition: vlc.h:225
vlc.h