per file doxy
[ffmpeg.git] / libavcodec / msmpeg4data.h
1 /**
2  * @file msmpeg4data.h
3  * MSMPEG4 data tables. 
4  */
5
6 /* intra picture macro block coded block pattern */
7 static const uint16_t table_mb_intra[64][2] = {
8 { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 },
9 { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 },
10 { 0x2, 5 },{ 0x7c, 9 },{ 0x3a, 7 },{ 0x1d, 7 },
11 { 0x2, 6 },{ 0xec, 9 },{ 0x77, 8 },{ 0x0, 8 },
12 { 0x3, 5 },{ 0xb7, 9 },{ 0x2c, 7 },{ 0x13, 7 },
13 { 0x1, 6 },{ 0x168, 10 },{ 0x46, 8 },{ 0x3f, 8 },
14 { 0x1e, 6 },{ 0x712, 13 },{ 0xb5, 9 },{ 0x42, 8 },
15 { 0x22, 7 },{ 0x1c5, 11 },{ 0x11e, 10 },{ 0x87, 9 },
16 { 0x6, 4 },{ 0x3, 9 },{ 0x1e, 7 },{ 0x1c, 6 },
17 { 0x12, 7 },{ 0x388, 12 },{ 0x44, 9 },{ 0x70, 9 },
18 { 0x1f, 6 },{ 0x23e, 11 },{ 0x39, 8 },{ 0x8e, 9 },
19 { 0x1, 7 },{ 0x1c6, 11 },{ 0xb6, 9 },{ 0x45, 9 },
20 { 0x14, 6 },{ 0x23f, 11 },{ 0x7d, 9 },{ 0x18, 9 },
21 { 0x7, 7 },{ 0x1c7, 11 },{ 0x86, 9 },{ 0x19, 9 },
22 { 0x15, 6 },{ 0x1db, 10 },{ 0x2, 9 },{ 0x46, 9 },
23 { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
24 };
25
26 /* non intra picture macro block coded block pattern + mb type */
27 static const uint32_t table_mb_non_intra[128][2] = {
28 { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 },
29 { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 },
30 { 0x83a, 12 },{ 0x7f8, 17 },{ 0x3fd, 16 },{ 0x3ff, 16 },
31 { 0x79, 13 },{ 0xa82, 18 },{ 0x969d, 16 },{ 0x2a4, 16 },
32 { 0x978, 12 },{ 0x543, 17 },{ 0x41df, 15 },{ 0x7f9, 17 },
33 { 0x12f3, 13 },{ 0x25a6b, 18 },{ 0x25ef9, 18 },{ 0x3fa, 16 },
34 { 0x20ee, 14 },{ 0x969ab, 20 },{ 0x969c, 16 },{ 0x25ef8, 18 },
35 { 0x12d2, 13 },{ 0xa85, 18 },{ 0x969e, 16 },{ 0x4bc8, 15 },
36 { 0x3d, 12 },{ 0x12f7f, 17 },{ 0x2a2, 16 },{ 0x969f, 16 },
37 { 0x25ee, 14 },{ 0x12d355, 21 },{ 0x12f7d, 17 },{ 0x12f7e, 17 },
38 { 0x9e5, 12 },{ 0xa81, 18 },{ 0x4b4d4, 19 },{ 0x83bd, 16 },
39 { 0x78, 13 },{ 0x969b, 16 },{ 0x3fe, 16 },{ 0x2a5, 16 },
40 { 0x7e, 13 },{ 0xa80, 18 },{ 0x2a3, 16 },{ 0x3fb, 16 },
41 { 0x1076, 13 },{ 0xa84, 18 },{ 0x153, 15 },{ 0x4bc9, 15 },
42 { 0x55, 13 },{ 0x12d354, 21 },{ 0x4bde, 15 },{ 0x25e5, 14 },
43 { 0x25b, 10 },{ 0x4b4c, 15 },{ 0x96b, 12 },{ 0x96a, 12 },
44 { 0x1, 2 },{ 0x0, 7 },{ 0x26, 6 },{ 0x12b, 9 },
45 { 0x7, 3 },{ 0x20f, 10 },{ 0x4, 9 },{ 0x28, 12 },
46 { 0x6, 3 },{ 0x20a, 10 },{ 0x128, 9 },{ 0x2b, 12 },
47 { 0x11, 5 },{ 0x1b, 11 },{ 0x13a, 9 },{ 0x4ff, 11 },
48 { 0x3, 4 },{ 0x277, 10 },{ 0x106, 9 },{ 0x839, 12 },
49 { 0xb, 4 },{ 0x27b, 10 },{ 0x12c, 9 },{ 0x4bf, 11 },
50 { 0x9, 6 },{ 0x35, 12 },{ 0x27e, 10 },{ 0x13c8, 13 },
51 { 0x1, 6 },{ 0x4aa, 11 },{ 0x208, 10 },{ 0x29, 12 },
52 { 0x1, 4 },{ 0x254, 10 },{ 0x12e, 9 },{ 0x838, 12 },
53 { 0x24, 6 },{ 0x4f3, 11 },{ 0x276, 10 },{ 0x12f6, 13 },
54 { 0x1, 5 },{ 0x27a, 10 },{ 0x13e, 9 },{ 0x3e, 12 },
55 { 0x8, 6 },{ 0x413, 11 },{ 0xc, 10 },{ 0x4be, 11 },
56 { 0x14, 5 },{ 0x412, 11 },{ 0x253, 10 },{ 0x97a, 12 },
57 { 0x21, 6 },{ 0x4ab, 11 },{ 0x20b, 10 },{ 0x34, 12 },
58 { 0x15, 5 },{ 0x278, 10 },{ 0x252, 10 },{ 0x968, 12 },
59 { 0x5, 5 },{ 0xb, 10 },{ 0x9c, 8 },{ 0xe, 10 },
60 };
61
62 /* dc table 0 */
63
64 static const uint32_t table0_dc_lum[120][2] = {
65 { 0x1, 1 },{ 0x1, 2 },{ 0x1, 4 },{ 0x1, 5 },
66 { 0x5, 5 },{ 0x7, 5 },{ 0x8, 6 },{ 0xc, 6 },
67 { 0x0, 7 },{ 0x2, 7 },{ 0x12, 7 },{ 0x1a, 7 },
68 { 0x3, 8 },{ 0x7, 8 },{ 0x27, 8 },{ 0x37, 8 },
69 { 0x5, 9 },{ 0x4c, 9 },{ 0x6c, 9 },{ 0x6d, 9 },
70 { 0x8, 10 },{ 0x19, 10 },{ 0x9b, 10 },{ 0x1b, 10 },
71 { 0x9a, 10 },{ 0x13, 11 },{ 0x34, 11 },{ 0x35, 11 },
72 { 0x61, 12 },{ 0x48, 13 },{ 0xc4, 13 },{ 0x4a, 13 },
73 { 0xc6, 13 },{ 0xc7, 13 },{ 0x92, 14 },{ 0x18b, 14 },
74 { 0x93, 14 },{ 0x183, 14 },{ 0x182, 14 },{ 0x96, 14 },
75 { 0x97, 14 },{ 0x180, 14 },{ 0x314, 15 },{ 0x315, 15 },
76 { 0x605, 16 },{ 0x604, 16 },{ 0x606, 16 },{ 0xc0e, 17 },
77 { 0x303cd, 23 },{ 0x303c9, 23 },{ 0x303c8, 23 },{ 0x303ca, 23 },
78 { 0x303cb, 23 },{ 0x303cc, 23 },{ 0x303ce, 23 },{ 0x303cf, 23 },
79 { 0x303d0, 23 },{ 0x303d1, 23 },{ 0x303d2, 23 },{ 0x303d3, 23 },
80 { 0x303d4, 23 },{ 0x303d5, 23 },{ 0x303d6, 23 },{ 0x303d7, 23 },
81 { 0x303d8, 23 },{ 0x303d9, 23 },{ 0x303da, 23 },{ 0x303db, 23 },
82 { 0x303dc, 23 },{ 0x303dd, 23 },{ 0x303de, 23 },{ 0x303df, 23 },
83 { 0x303e0, 23 },{ 0x303e1, 23 },{ 0x303e2, 23 },{ 0x303e3, 23 },
84 { 0x303e4, 23 },{ 0x303e5, 23 },{ 0x303e6, 23 },{ 0x303e7, 23 },
85 { 0x303e8, 23 },{ 0x303e9, 23 },{ 0x303ea, 23 },{ 0x303eb, 23 },
86 { 0x303ec, 23 },{ 0x303ed, 23 },{ 0x303ee, 23 },{ 0x303ef, 23 },
87 { 0x303f0, 23 },{ 0x303f1, 23 },{ 0x303f2, 23 },{ 0x303f3, 23 },
88 { 0x303f4, 23 },{ 0x303f5, 23 },{ 0x303f6, 23 },{ 0x303f7, 23 },
89 { 0x303f8, 23 },{ 0x303f9, 23 },{ 0x303fa, 23 },{ 0x303fb, 23 },
90 { 0x303fc, 23 },{ 0x303fd, 23 },{ 0x303fe, 23 },{ 0x303ff, 23 },
91 { 0x60780, 24 },{ 0x60781, 24 },{ 0x60782, 24 },{ 0x60783, 24 },
92 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
93 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
94 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
95 };
96
97 static const uint32_t table0_dc_chroma[120][2] = {
98 { 0x0, 2 },{ 0x1, 2 },{ 0x5, 3 },{ 0x9, 4 },
99 { 0xd, 4 },{ 0x11, 5 },{ 0x1d, 5 },{ 0x1f, 5 },
100 { 0x21, 6 },{ 0x31, 6 },{ 0x38, 6 },{ 0x33, 6 },
101 { 0x39, 6 },{ 0x3d, 6 },{ 0x61, 7 },{ 0x79, 7 },
102 { 0x80, 8 },{ 0xc8, 8 },{ 0xca, 8 },{ 0xf0, 8 },
103 { 0x81, 8 },{ 0xc0, 8 },{ 0xc9, 8 },{ 0x107, 9 },
104 { 0x106, 9 },{ 0x196, 9 },{ 0x183, 9 },{ 0x1e3, 9 },
105 { 0x1e2, 9 },{ 0x20a, 10 },{ 0x20b, 10 },{ 0x609, 11 },
106 { 0x412, 11 },{ 0x413, 11 },{ 0x60b, 11 },{ 0x411, 11 },
107 { 0x60a, 11 },{ 0x65f, 11 },{ 0x410, 11 },{ 0x65d, 11 },
108 { 0x65e, 11 },{ 0xcb8, 12 },{ 0xc10, 12 },{ 0xcb9, 12 },
109 { 0x1823, 13 },{ 0x3045, 14 },{ 0x6089, 15 },{ 0xc110, 16 },
110 { 0x304448, 22 },{ 0x304449, 22 },{ 0x30444a, 22 },{ 0x30444b, 22 },
111 { 0x30444c, 22 },{ 0x30444d, 22 },{ 0x30444e, 22 },{ 0x30444f, 22 },
112 { 0x304450, 22 },{ 0x304451, 22 },{ 0x304452, 22 },{ 0x304453, 22 },
113 { 0x304454, 22 },{ 0x304455, 22 },{ 0x304456, 22 },{ 0x304457, 22 },
114 { 0x304458, 22 },{ 0x304459, 22 },{ 0x30445a, 22 },{ 0x30445b, 22 },
115 { 0x30445c, 22 },{ 0x30445d, 22 },{ 0x30445e, 22 },{ 0x30445f, 22 },
116 { 0x304460, 22 },{ 0x304461, 22 },{ 0x304462, 22 },{ 0x304463, 22 },
117 { 0x304464, 22 },{ 0x304465, 22 },{ 0x304466, 22 },{ 0x304467, 22 },
118 { 0x304468, 22 },{ 0x304469, 22 },{ 0x30446a, 22 },{ 0x30446b, 22 },
119 { 0x30446c, 22 },{ 0x30446d, 22 },{ 0x30446e, 22 },{ 0x30446f, 22 },
120 { 0x304470, 22 },{ 0x304471, 22 },{ 0x304472, 22 },{ 0x304473, 22 },
121 { 0x304474, 22 },{ 0x304475, 22 },{ 0x304476, 22 },{ 0x304477, 22 },
122 { 0x304478, 22 },{ 0x304479, 22 },{ 0x30447a, 22 },{ 0x30447b, 22 },
123 { 0x30447c, 22 },{ 0x30447d, 22 },{ 0x30447e, 22 },{ 0x30447f, 22 },
124 { 0x608880, 23 },{ 0x608881, 23 },{ 0x608882, 23 },{ 0x608883, 23 },
125 { 0x608884, 23 },{ 0x608885, 23 },{ 0x608886, 23 },{ 0x608887, 23 },
126 { 0x608888, 23 },{ 0x608889, 23 },{ 0x60888a, 23 },{ 0x60888b, 23 },
127 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
128 };
129
130 /* dc table 1 */
131
132 static const uint32_t table1_dc_lum[120][2] = {
133 { 0x2, 2 },{ 0x3, 2 },{ 0x3, 3 },{ 0x2, 4 },
134 { 0x5, 4 },{ 0x1, 5 },{ 0x3, 5 },{ 0x8, 5 },
135 { 0x0, 6 },{ 0x5, 6 },{ 0xd, 6 },{ 0xf, 6 },
136 { 0x13, 6 },{ 0x8, 7 },{ 0x18, 7 },{ 0x1c, 7 },
137 { 0x24, 7 },{ 0x4, 8 },{ 0x6, 8 },{ 0x12, 8 },
138 { 0x32, 8 },{ 0x3b, 8 },{ 0x4a, 8 },{ 0x4b, 8 },
139 { 0xb, 9 },{ 0x26, 9 },{ 0x27, 9 },{ 0x66, 9 },
140 { 0x74, 9 },{ 0x75, 9 },{ 0x14, 10 },{ 0x1c, 10 },
141 { 0x1f, 10 },{ 0x1d, 10 },{ 0x2b, 11 },{ 0x3d, 11 },
142 { 0x19d, 11 },{ 0x19f, 11 },{ 0x54, 12 },{ 0x339, 12 },
143 { 0x338, 12 },{ 0x33d, 12 },{ 0xab, 13 },{ 0xf1, 13 },
144 { 0x678, 13 },{ 0xf2, 13 },{ 0x1e0, 14 },{ 0x1e1, 14 },
145 { 0x154, 14 },{ 0xcf2, 14 },{ 0x3cc, 15 },{ 0x2ab, 15 },
146 { 0x19e7, 15 },{ 0x3ce, 15 },{ 0x19e6, 15 },{ 0x554, 16 },
147 { 0x79f, 16 },{ 0x555, 16 },{ 0xf3d, 17 },{ 0xf37, 17 },
148 { 0xf3c, 17 },{ 0xf35, 17 },{ 0x1e6d, 18 },{ 0x1e68, 18 },
149 { 0x3cd8, 19 },{ 0x3cd3, 19 },{ 0x3cd9, 19 },{ 0x79a4, 20 },
150 { 0xf34ba, 25 },{ 0xf34b4, 25 },{ 0xf34b5, 25 },{ 0xf34b6, 25 },
151 { 0xf34b7, 25 },{ 0xf34b8, 25 },{ 0xf34b9, 25 },{ 0xf34bb, 25 },
152 { 0xf34bc, 25 },{ 0xf34bd, 25 },{ 0xf34be, 25 },{ 0xf34bf, 25 },
153 { 0x1e6940, 26 },{ 0x1e6941, 26 },{ 0x1e6942, 26 },{ 0x1e6943, 26 },
154 { 0x1e6944, 26 },{ 0x1e6945, 26 },{ 0x1e6946, 26 },{ 0x1e6947, 26 },
155 { 0x1e6948, 26 },{ 0x1e6949, 26 },{ 0x1e694a, 26 },{ 0x1e694b, 26 },
156 { 0x1e694c, 26 },{ 0x1e694d, 26 },{ 0x1e694e, 26 },{ 0x1e694f, 26 },
157 { 0x1e6950, 26 },{ 0x1e6951, 26 },{ 0x1e6952, 26 },{ 0x1e6953, 26 },
158 { 0x1e6954, 26 },{ 0x1e6955, 26 },{ 0x1e6956, 26 },{ 0x1e6957, 26 },
159 { 0x1e6958, 26 },{ 0x1e6959, 26 },{ 0x1e695a, 26 },{ 0x1e695b, 26 },
160 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
161 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
162 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
163 };
164
165 static const uint32_t table1_dc_chroma[120][2] = {
166 { 0x0, 2 },{ 0x1, 2 },{ 0x4, 3 },{ 0x7, 3 },
167 { 0xb, 4 },{ 0xd, 4 },{ 0x15, 5 },{ 0x28, 6 },
168 { 0x30, 6 },{ 0x32, 6 },{ 0x52, 7 },{ 0x62, 7 },
169 { 0x66, 7 },{ 0xa6, 8 },{ 0xc6, 8 },{ 0xcf, 8 },
170 { 0x14f, 9 },{ 0x18e, 9 },{ 0x19c, 9 },{ 0x29d, 10 },
171 { 0x33a, 10 },{ 0x538, 11 },{ 0x63c, 11 },{ 0x63e, 11 },
172 { 0x63f, 11 },{ 0x676, 11 },{ 0xa73, 12 },{ 0xc7a, 12 },
173 { 0xcef, 12 },{ 0x14e5, 13 },{ 0x19dd, 13 },{ 0x29c8, 14 },
174 { 0x29c9, 14 },{ 0x63dd, 15 },{ 0x33b8, 14 },{ 0x33b9, 14 },
175 { 0xc7b6, 16 },{ 0x63d8, 15 },{ 0x63df, 15 },{ 0xc7b3, 16 },
176 { 0xc7b4, 16 },{ 0xc7b5, 16 },{ 0x63de, 15 },{ 0xc7b7, 16 },
177 { 0xc7b8, 16 },{ 0xc7b9, 16 },{ 0x18f65, 17 },{ 0x31ec8, 18 },
178 { 0xc7b248, 24 },{ 0xc7b249, 24 },{ 0xc7b24a, 24 },{ 0xc7b24b, 24 },
179 { 0xc7b24c, 24 },{ 0xc7b24d, 24 },{ 0xc7b24e, 24 },{ 0xc7b24f, 24 },
180 { 0xc7b250, 24 },{ 0xc7b251, 24 },{ 0xc7b252, 24 },{ 0xc7b253, 24 },
181 { 0xc7b254, 24 },{ 0xc7b255, 24 },{ 0xc7b256, 24 },{ 0xc7b257, 24 },
182 { 0xc7b258, 24 },{ 0xc7b259, 24 },{ 0xc7b25a, 24 },{ 0xc7b25b, 24 },
183 { 0xc7b25c, 24 },{ 0xc7b25d, 24 },{ 0xc7b25e, 24 },{ 0xc7b25f, 24 },
184 { 0xc7b260, 24 },{ 0xc7b261, 24 },{ 0xc7b262, 24 },{ 0xc7b263, 24 },
185 { 0xc7b264, 24 },{ 0xc7b265, 24 },{ 0xc7b266, 24 },{ 0xc7b267, 24 },
186 { 0xc7b268, 24 },{ 0xc7b269, 24 },{ 0xc7b26a, 24 },{ 0xc7b26b, 24 },
187 { 0xc7b26c, 24 },{ 0xc7b26d, 24 },{ 0xc7b26e, 24 },{ 0xc7b26f, 24 },
188 { 0xc7b270, 24 },{ 0xc7b271, 24 },{ 0xc7b272, 24 },{ 0xc7b273, 24 },
189 { 0xc7b274, 24 },{ 0xc7b275, 24 },{ 0xc7b276, 24 },{ 0xc7b277, 24 },
190 { 0xc7b278, 24 },{ 0xc7b279, 24 },{ 0xc7b27a, 24 },{ 0xc7b27b, 24 },
191 { 0xc7b27c, 24 },{ 0xc7b27d, 24 },{ 0xc7b27e, 24 },{ 0xc7b27f, 24 },
192 { 0x18f6480, 25 },{ 0x18f6481, 25 },{ 0x18f6482, 25 },{ 0x18f6483, 25 },
193 { 0x18f6484, 25 },{ 0x18f6485, 25 },{ 0x18f6486, 25 },{ 0x18f6487, 25 },
194 { 0x18f6488, 25 },{ 0x18f6489, 25 },{ 0x18f648a, 25 },{ 0x18f648b, 25 },
195 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
196 };
197
198 /* vlc table 0, for intra luma */
199
200 static const uint16_t table0_vlc[133][2] = {
201 { 0x1, 2 },{ 0x6, 3 },{ 0xf, 4 },{ 0x16, 5 },
202 { 0x20, 6 },{ 0x18, 7 },{ 0x8, 8 },{ 0x9a, 8 },
203 { 0x56, 9 },{ 0x13e, 9 },{ 0xf0, 10 },{ 0x3a5, 10 },
204 { 0x77, 11 },{ 0x1ef, 11 },{ 0x9a, 12 },{ 0x5d, 13 },
205 { 0x1, 4 },{ 0x11, 5 },{ 0x2, 7 },{ 0xb, 8 },
206 { 0x12, 9 },{ 0x1d6, 9 },{ 0x27e, 10 },{ 0x191, 11 },
207 { 0xea, 12 },{ 0x3dc, 12 },{ 0x13b, 13 },{ 0x4, 5 },
208 { 0x14, 7 },{ 0x9e, 8 },{ 0x9, 10 },{ 0x1ac, 11 },
209 { 0x1e2, 11 },{ 0x3ca, 12 },{ 0x5f, 13 },{ 0x17, 5 },
210 { 0x4e, 7 },{ 0x5e, 9 },{ 0xf3, 10 },{ 0x1ad, 11 },
211 { 0xec, 12 },{ 0x5f0, 13 },{ 0xe, 6 },{ 0xe1, 8 },
212 { 0x3a4, 10 },{ 0x9c, 12 },{ 0x13d, 13 },{ 0x3b, 6 },
213 { 0x1c, 9 },{ 0x14, 11 },{ 0x9be, 12 },{ 0x6, 7 },
214 { 0x7a, 9 },{ 0x190, 11 },{ 0x137, 13 },{ 0x1b, 7 },
215 { 0x8, 10 },{ 0x75c, 11 },{ 0x71, 7 },{ 0xd7, 10 },
216 { 0x9bf, 12 },{ 0x7, 8 },{ 0xaf, 10 },{ 0x4cc, 11 },
217 { 0x34, 8 },{ 0x265, 10 },{ 0x9f, 12 },{ 0xe0, 8 },
218 { 0x16, 11 },{ 0x327, 12 },{ 0x15, 9 },{ 0x17d, 11 },
219 { 0xebb, 12 },{ 0x14, 9 },{ 0xf6, 10 },{ 0x1e4, 11 },
220 { 0xcb, 10 },{ 0x99d, 12 },{ 0xca, 10 },{ 0x2fc, 12 },
221 { 0x17f, 11 },{ 0x4cd, 11 },{ 0x2fd, 12 },{ 0x4fe, 11 },
222 { 0x13a, 13 },{ 0xa, 4 },{ 0x42, 7 },{ 0x1d3, 9 },
223 { 0x4dd, 11 },{ 0x12, 5 },{ 0xe8, 8 },{ 0x4c, 11 },
224 { 0x136, 13 },{ 0x39, 6 },{ 0x264, 10 },{ 0xeba, 12 },
225 { 0x0, 7 },{ 0xae, 10 },{ 0x99c, 12 },{ 0x1f, 7 },
226 { 0x4de, 11 },{ 0x43, 7 },{ 0x4dc, 11 },{ 0x3, 8 },
227 { 0x3cb, 12 },{ 0x6, 8 },{ 0x99e, 12 },{ 0x2a, 8 },
228 { 0x5f1, 13 },{ 0xf, 8 },{ 0x9fe, 12 },{ 0x33, 8 },
229 { 0x9ff, 12 },{ 0x98, 8 },{ 0x99f, 12 },{ 0xea, 8 },
230 { 0x13c, 13 },{ 0x2e, 8 },{ 0x192, 11 },{ 0x136, 9 },
231 { 0x6a, 9 },{ 0x15, 11 },{ 0x3af, 10 },{ 0x1e3, 11 },
232 { 0x74, 11 },{ 0xeb, 12 },{ 0x2f9, 12 },{ 0x5c, 13 },
233 { 0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{ 0x5e, 13 },
234 { 0x16, 7 },
235 };
236
237 static const int8_t table0_level[132] = {
238   1,  2,  3,  4,  5,  6,  7,  8,
239   9, 10, 11, 12, 13, 14, 15, 16,
240   1,  2,  3,  4,  5,  6,  7,  8,
241   9, 10, 11,  1,  2,  3,  4,  5,
242   6,  7,  8,  1,  2,  3,  4,  5,
243   6,  7,  1,  2,  3,  4,  5,  1,
244   2,  3,  4,  1,  2,  3,  4,  1,
245   2,  3,  1,  2,  3,  1,  2,  3,
246   1,  2,  3,  1,  2,  3,  1,  2,
247   3,  1,  2,  3,  1,  2,  1,  2,
248   1,  1,  1,  1,  1,  1,  2,  3,
249   4,  1,  2,  3,  4,  1,  2,  3,
250   1,  2,  3,  1,  2,  1,  2,  1,
251   2,  1,  2,  1,  2,  1,  2,  1,
252   2,  1,  2,  1,  2,  1,  2,  1,
253   1,  1,  1,  1,  1,  1,  1,  1,
254   1,  1,  1,  1,
255 };
256
257 static const int8_t table0_run[132] = {
258   0,  0,  0,  0,  0,  0,  0,  0,
259   0,  0,  0,  0,  0,  0,  0,  0,
260   1,  1,  1,  1,  1,  1,  1,  1,
261   1,  1,  1,  2,  2,  2,  2,  2,
262   2,  2,  2,  3,  3,  3,  3,  3,
263   3,  3,  4,  4,  4,  4,  4,  5,
264   5,  5,  5,  6,  6,  6,  6,  7,
265   7,  7,  8,  8,  8,  9,  9,  9,
266  10, 10, 10, 11, 11, 11, 12, 12,
267  12, 13, 13, 13, 14, 14, 15, 15,
268  16, 17, 18, 19, 20,  0,  0,  0,
269   0,  1,  1,  1,  1,  2,  2,  2,
270   3,  3,  3,  4,  4,  5,  5,  6,
271   6,  7,  7,  8,  8,  9,  9, 10,
272  10, 11, 11, 12, 12, 13, 13, 14,
273  15, 16, 17, 18, 19, 20, 21, 22,
274  23, 24, 25, 26,
275 };
276
277 /* vlc table 1, for intra chroma and P macro blocks */
278
279 static const uint16_t table1_vlc[149][2] = {
280 { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 },
281 { 0x154, 9 },{ 0x1f2, 10 },{ 0xbf, 11 },{ 0x65, 12 },
282 { 0xaaa, 12 },{ 0x630, 13 },{ 0x1597, 13 },{ 0x3b7, 14 },
283 { 0x2b22, 14 },{ 0xbe6, 15 },{ 0xb, 4 },{ 0x37, 7 },
284 { 0x62, 9 },{ 0x7, 11 },{ 0x166, 12 },{ 0xce, 13 },
285 { 0x1590, 13 },{ 0x5f6, 14 },{ 0xbe7, 15 },{ 0x7, 5 },
286 { 0x6d, 8 },{ 0x3, 11 },{ 0x31f, 12 },{ 0x5f2, 14 },
287 { 0x2, 6 },{ 0x61, 9 },{ 0x55, 12 },{ 0x1df, 14 },
288 { 0x1a, 6 },{ 0x1e, 10 },{ 0xac9, 12 },{ 0x2b23, 14 },
289 { 0x1e, 6 },{ 0x1f, 10 },{ 0xac3, 12 },{ 0x2b2b, 14 },
290 { 0x6, 7 },{ 0x4, 11 },{ 0x2f8, 13 },{ 0x19, 7 },
291 { 0x6, 11 },{ 0x63d, 13 },{ 0x57, 7 },{ 0x182, 11 },
292 { 0x2aa2, 14 },{ 0x4, 8 },{ 0x180, 11 },{ 0x59c, 14 },
293 { 0x7d, 8 },{ 0x164, 12 },{ 0x76d, 15 },{ 0x2, 9 },
294 { 0x18d, 11 },{ 0x1581, 13 },{ 0xad, 8 },{ 0x60, 12 },
295 { 0xc67, 14 },{ 0x1c, 9 },{ 0xee, 13 },{ 0x3, 9 },
296 { 0x2cf, 13 },{ 0xd9, 9 },{ 0x1580, 13 },{ 0x2, 11 },
297 { 0x183, 11 },{ 0x57, 12 },{ 0x61, 12 },{ 0x31, 11 },
298 { 0x66, 12 },{ 0x631, 13 },{ 0x632, 13 },{ 0xac, 13 },
299 { 0x31d, 12 },{ 0x76, 12 },{ 0x3a, 11 },{ 0x165, 12 },
300 { 0xc66, 14 },{ 0x3, 2 },{ 0x54, 7 },{ 0x2ab, 10 },
301 { 0x16, 13 },{ 0x5f7, 14 },{ 0x5, 4 },{ 0xf8, 9 },
302 { 0xaa9, 12 },{ 0x5f, 15 },{ 0x4, 4 },{ 0x1c, 10 },
303 { 0x1550, 13 },{ 0x4, 5 },{ 0x77, 11 },{ 0x76c, 15 },
304 { 0xe, 5 },{ 0xa, 12 },{ 0xc, 5 },{ 0x562, 11 },
305 { 0x4, 6 },{ 0x31c, 12 },{ 0x6, 6 },{ 0xc8, 13 },
306 { 0xd, 6 },{ 0x1da, 13 },{ 0x7, 6 },{ 0xc9, 13 },
307 { 0x1, 7 },{ 0x2e, 14 },{ 0x14, 7 },{ 0x1596, 13 },
308 { 0xa, 7 },{ 0xac2, 12 },{ 0x16, 7 },{ 0x15b, 14 },
309 { 0x15, 7 },{ 0x15a, 14 },{ 0xf, 8 },{ 0x5e, 15 },
310 { 0x7e, 8 },{ 0xab, 8 },{ 0x2d, 9 },{ 0xd8, 9 },
311 { 0xb, 9 },{ 0x14, 10 },{ 0x2b3, 10 },{ 0x1f3, 10 },
312 { 0x3a, 10 },{ 0x0, 10 },{ 0x58, 10 },{ 0x2e, 9 },
313 { 0x5e, 10 },{ 0x563, 11 },{ 0xec, 12 },{ 0x54, 12 },
314 { 0xac1, 12 },{ 0x1556, 13 },{ 0x2fa, 13 },{ 0x181, 11 },
315 { 0x1557, 13 },{ 0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
316 { 0x1de, 14 },{ 0x63c, 13 },{ 0xcf, 13 },{ 0x1594, 13 },
317 { 0xd, 9 },
318 };
319
320 static const int8_t table1_level[148] = {
321   1,  2,  3,  4,  5,  6,  7,  8,
322   9, 10, 11, 12, 13, 14,  1,  2,
323   3,  4,  5,  6,  7,  8,  9,  1,
324   2,  3,  4,  5,  1,  2,  3,  4,
325   1,  2,  3,  4,  1,  2,  3,  4,
326   1,  2,  3,  1,  2,  3,  1,  2,
327   3,  1,  2,  3,  1,  2,  3,  1,
328   2,  3,  1,  2,  3,  1,  2,  1,
329   2,  1,  2,  1,  1,  1,  1,  1,
330   1,  1,  1,  1,  1,  1,  1,  1,
331   1,  1,  2,  3,  4,  5,  1,  2,
332   3,  4,  1,  2,  3,  1,  2,  3,
333   1,  2,  1,  2,  1,  2,  1,  2,
334   1,  2,  1,  2,  1,  2,  1,  2,
335   1,  2,  1,  2,  1,  2,  1,  2,
336   1,  1,  1,  1,  1,  1,  1,  1,
337   1,  1,  1,  1,  1,  1,  1,  1,
338   1,  1,  1,  1,  1,  1,  1,  1,
339   1,  1,  1,  1,
340 };
341
342 static const int8_t table1_run[148] = {
343   0,  0,  0,  0,  0,  0,  0,  0,
344   0,  0,  0,  0,  0,  0,  1,  1,
345   1,  1,  1,  1,  1,  1,  1,  2,
346   2,  2,  2,  2,  3,  3,  3,  3,
347   4,  4,  4,  4,  5,  5,  5,  5,
348   6,  6,  6,  7,  7,  7,  8,  8,
349   8,  9,  9,  9, 10, 10, 10, 11,
350  11, 11, 12, 12, 12, 13, 13, 14,
351  14, 15, 15, 16, 17, 18, 19, 20,
352  21, 22, 23, 24, 25, 26, 27, 28,
353  29,  0,  0,  0,  0,  0,  1,  1,
354   1,  1,  2,  2,  2,  3,  3,  3,
355   4,  4,  5,  5,  6,  6,  7,  7,
356   8,  8,  9,  9, 10, 10, 11, 11,
357  12, 12, 13, 13, 14, 14, 15, 15,
358  16, 17, 18, 19, 20, 21, 22, 23,
359  24, 25, 26, 27, 28, 29, 30, 31,
360  32, 33, 34, 35, 36, 37, 38, 39,
361  40, 41, 42, 43,
362 };
363
364 /* third vlc table */
365
366 static const uint16_t table2_vlc[186][2] = {
367 { 0x1, 2 },{ 0x5, 3 },{ 0xd, 4 },{ 0x12, 5 },
368 { 0xe, 6 },{ 0x15, 7 },{ 0x13, 8 },{ 0x3f, 8 },
369 { 0x4b, 9 },{ 0x11f, 9 },{ 0xb8, 10 },{ 0x3e3, 10 },
370 { 0x172, 11 },{ 0x24d, 12 },{ 0x3da, 12 },{ 0x2dd, 13 },
371 { 0x1f55, 13 },{ 0x5b9, 14 },{ 0x3eae, 14 },{ 0x0, 4 },
372 { 0x10, 5 },{ 0x8, 7 },{ 0x20, 8 },{ 0x29, 9 },
373 { 0x1f4, 9 },{ 0x233, 10 },{ 0x1e0, 11 },{ 0x12a, 12 },
374 { 0x3dd, 12 },{ 0x50a, 13 },{ 0x1f29, 13 },{ 0xa42, 14 },
375 { 0x1272, 15 },{ 0x1737, 15 },{ 0x3, 5 },{ 0x11, 7 },
376 { 0xc4, 8 },{ 0x4b, 10 },{ 0xb4, 11 },{ 0x7d4, 11 },
377 { 0x345, 12 },{ 0x2d7, 13 },{ 0x7bf, 13 },{ 0x938, 14 },
378 { 0xbbb, 14 },{ 0x95e, 15 },{ 0x13, 5 },{ 0x78, 7 },
379 { 0x69, 9 },{ 0x232, 10 },{ 0x461, 11 },{ 0x3ec, 12 },
380 { 0x520, 13 },{ 0x1f2a, 13 },{ 0x3e50, 14 },{ 0x3e51, 14 },
381 { 0x1486, 15 },{ 0xc, 6 },{ 0x24, 9 },{ 0x94, 11 },
382 { 0x8c0, 12 },{ 0xf09, 14 },{ 0x1ef0, 15 },{ 0x3d, 6 },
383 { 0x53, 9 },{ 0x1a0, 11 },{ 0x2d6, 13 },{ 0xf08, 14 },
384 { 0x13, 7 },{ 0x7c, 9 },{ 0x7c1, 11 },{ 0x4ac, 14 },
385 { 0x1b, 7 },{ 0xa0, 10 },{ 0x344, 12 },{ 0xf79, 14 },
386 { 0x79, 7 },{ 0x3e1, 10 },{ 0x2d4, 13 },{ 0x2306, 14 },
387 { 0x21, 8 },{ 0x23c, 10 },{ 0xfae, 12 },{ 0x23de, 14 },
388 { 0x35, 8 },{ 0x175, 11 },{ 0x7b3, 13 },{ 0xc5, 8 },
389 { 0x174, 11 },{ 0x785, 13 },{ 0x48, 9 },{ 0x1a3, 11 },
390 { 0x49e, 13 },{ 0x2c, 9 },{ 0xfa, 10 },{ 0x7d6, 11 },
391 { 0x92, 10 },{ 0x5cc, 13 },{ 0x1ef1, 15 },{ 0xa3, 10 },
392 { 0x3ed, 12 },{ 0x93e, 14 },{ 0x1e2, 11 },{ 0x1273, 15 },
393 { 0x7c4, 11 },{ 0x1487, 15 },{ 0x291, 12 },{ 0x293, 12 },
394 { 0xf8a, 12 },{ 0x509, 13 },{ 0x508, 13 },{ 0x78d, 13 },
395 { 0x7be, 13 },{ 0x78c, 13 },{ 0x4ae, 14 },{ 0xbba, 14 },
396 { 0x2307, 14 },{ 0xb9a, 14 },{ 0x1736, 15 },{ 0xe, 4 },
397 { 0x45, 7 },{ 0x1f3, 9 },{ 0x47a, 11 },{ 0x5dc, 13 },
398 { 0x23df, 14 },{ 0x19, 5 },{ 0x28, 9 },{ 0x176, 11 },
399 { 0x49d, 13 },{ 0x23dd, 14 },{ 0x30, 6 },{ 0xa2, 10 },
400 { 0x2ef, 12 },{ 0x5b8, 14 },{ 0x3f, 6 },{ 0xa5, 10 },
401 { 0x3db, 12 },{ 0x93f, 14 },{ 0x44, 7 },{ 0x7cb, 11 },
402 { 0x95f, 15 },{ 0x63, 7 },{ 0x3c3, 12 },{ 0x15, 8 },
403 { 0x8f6, 12 },{ 0x17, 8 },{ 0x498, 13 },{ 0x2c, 8 },
404 { 0x7b2, 13 },{ 0x2f, 8 },{ 0x1f54, 13 },{ 0x8d, 8 },
405 { 0x7bd, 13 },{ 0x8e, 8 },{ 0x1182, 13 },{ 0xfb, 8 },
406 { 0x50b, 13 },{ 0x2d, 8 },{ 0x7c0, 11 },{ 0x79, 9 },
407 { 0x1f5f, 13 },{ 0x7a, 9 },{ 0x1f56, 13 },{ 0x231, 10 },
408 { 0x3e4, 10 },{ 0x1a1, 11 },{ 0x143, 11 },{ 0x1f7, 11 },
409 { 0x16f, 12 },{ 0x292, 12 },{ 0x2e7, 12 },{ 0x16c, 12 },
410 { 0x16d, 12 },{ 0x3dc, 12 },{ 0xf8b, 12 },{ 0x499, 13 },
411 { 0x3d8, 12 },{ 0x78e, 13 },{ 0x2d5, 13 },{ 0x1f5e, 13 },
412 { 0x1f2b, 13 },{ 0x78f, 13 },{ 0x4ad, 14 },{ 0x3eaf, 14 },
413 { 0x23dc, 14 },{ 0x4a, 9 },
414 };
415
416 static const int8_t table2_level[185] = {
417   1,  2,  3,  4,  5,  6,  7,  8,
418   9, 10, 11, 12, 13, 14, 15, 16,
419  17, 18, 19,  1,  2,  3,  4,  5,
420   6,  7,  8,  9, 10, 11, 12, 13,
421  14, 15,  1,  2,  3,  4,  5,  6,
422   7,  8,  9, 10, 11, 12,  1,  2,
423   3,  4,  5,  6,  7,  8,  9, 10,
424  11,  1,  2,  3,  4,  5,  6,  1,
425   2,  3,  4,  5,  1,  2,  3,  4,
426   1,  2,  3,  4,  1,  2,  3,  4,
427   1,  2,  3,  4,  1,  2,  3,  1,
428   2,  3,  1,  2,  3,  1,  2,  3,
429   1,  2,  3,  1,  2,  3,  1,  2,
430   1,  2,  1,  1,  1,  1,  1,  1,
431   1,  1,  1,  1,  1,  1,  1,  1,
432   2,  3,  4,  5,  6,  1,  2,  3,
433   4,  5,  1,  2,  3,  4,  1,  2,
434   3,  4,  1,  2,  3,  1,  2,  1,
435   2,  1,  2,  1,  2,  1,  2,  1,
436   2,  1,  2,  1,  2,  1,  2,  1,
437   2,  1,  2,  1,  1,  1,  1,  1,
438   1,  1,  1,  1,  1,  1,  1,  1,
439   1,  1,  1,  1,  1,  1,  1,  1,
440   1,
441 };
442
443 static const int8_t table2_run[185] = {
444   0,  0,  0,  0,  0,  0,  0,  0,
445   0,  0,  0,  0,  0,  0,  0,  0,
446   0,  0,  0,  1,  1,  1,  1,  1,
447   1,  1,  1,  1,  1,  1,  1,  1,
448   1,  1,  2,  2,  2,  2,  2,  2,
449   2,  2,  2,  2,  2,  2,  3,  3,
450   3,  3,  3,  3,  3,  3,  3,  3,
451   3,  4,  4,  4,  4,  4,  4,  5,
452   5,  5,  5,  5,  6,  6,  6,  6,
453   7,  7,  7,  7,  8,  8,  8,  8,
454   9,  9,  9,  9, 10, 10, 10, 11,
455  11, 11, 12, 12, 12, 13, 13, 13,
456  14, 14, 14, 15, 15, 15, 16, 16,
457  17, 17, 18, 19, 20, 21, 22, 23,
458  24, 25, 26, 27, 28, 29, 30,  0,
459   0,  0,  0,  0,  0,  1,  1,  1,
460   1,  1,  2,  2,  2,  2,  3,  3,
461   3,  3,  4,  4,  4,  5,  5,  6,
462   6,  7,  7,  8,  8,  9,  9, 10,
463  10, 11, 11, 12, 12, 13, 13, 14,
464  14, 15, 15, 16, 17, 18, 19, 20,
465  21, 22, 23, 24, 25, 26, 27, 28,
466  29, 30, 31, 32, 33, 34, 35, 36,
467  37,
468 };
469
470 /* second non intra vlc table */
471 static const uint16_t table4_vlc[169][2] = {
472 { 0x0, 3 },{ 0x3, 4 },{ 0xb, 5 },{ 0x14, 6 },
473 { 0x3f, 6 },{ 0x5d, 7 },{ 0xa2, 8 },{ 0xac, 9 },
474 { 0x16e, 9 },{ 0x20a, 10 },{ 0x2e2, 10 },{ 0x432, 11 },
475 { 0x5c9, 11 },{ 0x827, 12 },{ 0xb54, 12 },{ 0x4e6, 13 },
476 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
477 { 0x39f0, 14 },{ 0x4175, 15 },{ 0x5a9e, 15 },{ 0x4, 4 },
478 { 0x1e, 5 },{ 0x42, 7 },{ 0xb6, 8 },{ 0x173, 9 },
479 { 0x395, 10 },{ 0x72e, 11 },{ 0xb94, 12 },{ 0x16a4, 13 },
480 { 0x20b3, 14 },{ 0x2e45, 14 },{ 0x5, 5 },{ 0x40, 7 },
481 { 0x49, 9 },{ 0x28f, 10 },{ 0x5cb, 11 },{ 0x48a, 13 },
482 { 0x9dd, 14 },{ 0x73e2, 15 },{ 0x18, 5 },{ 0x25, 8 },
483 { 0x8a, 10 },{ 0x51b, 11 },{ 0xe5f, 12 },{ 0x9c9, 14 },
484 { 0x139c, 15 },{ 0x29, 6 },{ 0x4f, 9 },{ 0x412, 11 },
485 { 0x48d, 13 },{ 0x2e41, 14 },{ 0x38, 6 },{ 0x10e, 9 },
486 { 0x5a8, 11 },{ 0x105c, 13 },{ 0x39f2, 14 },{ 0x58, 7 },
487 { 0x21f, 10 },{ 0xe7e, 12 },{ 0x39ff, 14 },{ 0x23, 8 },
488 { 0x2e3, 10 },{ 0x4e5, 13 },{ 0x2e40, 14 },{ 0xa1, 8 },
489 { 0x5be, 11 },{ 0x9c8, 14 },{ 0x83, 8 },{ 0x13a, 11 },
490 { 0x1721, 13 },{ 0x44, 9 },{ 0x276, 12 },{ 0x39f6, 14 },
491 { 0x8b, 10 },{ 0x4ef, 13 },{ 0x5a9b, 15 },{ 0x208, 10 },
492 { 0x1cfe, 13 },{ 0x399, 10 },{ 0x1cb4, 13 },{ 0x39e, 10 },
493 { 0x39f3, 14 },{ 0x5ab, 11 },{ 0x73e3, 15 },{ 0x737, 11 },
494 { 0x5a9f, 15 },{ 0x82d, 12 },{ 0xe69, 12 },{ 0xe68, 12 },
495 { 0x433, 11 },{ 0xb7b, 12 },{ 0x2df8, 14 },{ 0x2e56, 14 },
496 { 0x2e57, 14 },{ 0x39f7, 14 },{ 0x51a5, 15 },{ 0x3, 3 },
497 { 0x2a, 6 },{ 0xe4, 8 },{ 0x28e, 10 },{ 0x735, 11 },
498 { 0x1058, 13 },{ 0x1cfa, 13 },{ 0x2df9, 14 },{ 0x4174, 15 },
499 { 0x9, 4 },{ 0x54, 8 },{ 0x398, 10 },{ 0x48b, 13 },
500 { 0x139d, 15 },{ 0xd, 4 },{ 0xad, 9 },{ 0x826, 12 },
501 { 0x2d4c, 14 },{ 0x11, 5 },{ 0x16b, 9 },{ 0xb7f, 12 },
502 { 0x51a4, 15 },{ 0x19, 5 },{ 0x21b, 10 },{ 0x16fd, 13 },
503 { 0x1d, 5 },{ 0x394, 10 },{ 0x28d3, 14 },{ 0x2b, 6 },
504 { 0x5bc, 11 },{ 0x5a9a, 15 },{ 0x2f, 6 },{ 0x247, 12 },
505 { 0x10, 7 },{ 0xa35, 12 },{ 0x3e, 6 },{ 0xb7a, 12 },
506 { 0x59, 7 },{ 0x105e, 13 },{ 0x26, 8 },{ 0x9cf, 14 },
507 { 0x55, 8 },{ 0x1cb5, 13 },{ 0x57, 8 },{ 0xe5b, 12 },
508 { 0xa0, 8 },{ 0x1468, 13 },{ 0x170, 9 },{ 0x90, 10 },
509 { 0x1ce, 9 },{ 0x21a, 10 },{ 0x218, 10 },{ 0x168, 9 },
510 { 0x21e, 10 },{ 0x244, 12 },{ 0x736, 11 },{ 0x138, 11 },
511 { 0x519, 11 },{ 0xe5e, 12 },{ 0x72c, 11 },{ 0xb55, 12 },
512 { 0x9dc, 14 },{ 0x20bb, 14 },{ 0x48c, 13 },{ 0x1723, 13 },
513 { 0x2e44, 14 },{ 0x16a5, 13 },{ 0x518, 11 },{ 0x39fe, 14 },
514 { 0x169, 9 },
515 };
516
517 static const int8_t table4_level[168] = {
518   1,  2,  3,  4,  5,  6,  7,  8,
519   9, 10, 11, 12, 13, 14, 15, 16,
520  17, 18, 19, 20, 21, 22, 23,  1,
521   2,  3,  4,  5,  6,  7,  8,  9,
522  10, 11,  1,  2,  3,  4,  5,  6,
523   7,  8,  1,  2,  3,  4,  5,  6,
524   7,  1,  2,  3,  4,  5,  1,  2,
525   3,  4,  5,  1,  2,  3,  4,  1,
526   2,  3,  4,  1,  2,  3,  1,  2,
527   3,  1,  2,  3,  1,  2,  3,  1,
528   2,  1,  2,  1,  2,  1,  2,  1,
529   2,  1,  1,  1,  1,  1,  1,  1,
530   1,  1,  1,  1,  2,  3,  4,  5,
531   6,  7,  8,  9,  1,  2,  3,  4,
532   5,  1,  2,  3,  4,  1,  2,  3,
533   4,  1,  2,  3,  1,  2,  3,  1,
534   2,  3,  1,  2,  1,  2,  1,  2,
535   1,  2,  1,  2,  1,  2,  1,  2,
536   1,  2,  1,  1,  1,  1,  1,  1,
537   1,  1,  1,  1,  1,  1,  1,  1,
538   1,  1,  1,  1,  1,  1,  1,  1,
539 };
540
541 static const int8_t table4_run[168] = {
542   0,  0,  0,  0,  0,  0,  0,  0,
543   0,  0,  0,  0,  0,  0,  0,  0,
544   0,  0,  0,  0,  0,  0,  0,  1,
545   1,  1,  1,  1,  1,  1,  1,  1,
546   1,  1,  2,  2,  2,  2,  2,  2,
547   2,  2,  3,  3,  3,  3,  3,  3,
548   3,  4,  4,  4,  4,  4,  5,  5,
549   5,  5,  5,  6,  6,  6,  6,  7,
550   7,  7,  7,  8,  8,  8,  9,  9,
551   9, 10, 10, 10, 11, 11, 11, 12,
552  12, 13, 13, 14, 14, 15, 15, 16,
553  16, 17, 18, 19, 20, 21, 22, 23,
554  24, 25, 26,  0,  0,  0,  0,  0,
555   0,  0,  0,  0,  1,  1,  1,  1,
556   1,  2,  2,  2,  2,  3,  3,  3,
557   3,  4,  4,  4,  5,  5,  5,  6,
558   6,  6,  7,  7,  8,  8,  9,  9,
559  10, 10, 11, 11, 12, 12, 13, 13,
560  14, 14, 15, 16, 17, 18, 19, 20,
561  21, 22, 23, 24, 25, 26, 27, 28,
562  29, 30, 31, 32, 33, 34, 35, 36,
563 };
564
565 extern const uint16_t inter_vlc[103][2];
566 extern const int8_t inter_level[102];
567 extern const int8_t inter_run[102];
568
569 extern const uint16_t intra_vlc[103][2];
570 extern const int8_t intra_level[102];
571 extern const int8_t intra_run[102];
572
573 extern const uint8_t DCtab_lum[13][2];
574 extern const uint8_t DCtab_chrom[13][2];
575
576 extern const uint8_t cbpy_tab[16][2];
577 extern const uint8_t mvtab[33][2];
578
579 extern const uint8_t intra_MCBPC_code[8];
580 extern const uint8_t intra_MCBPC_bits[8];
581
582 extern const uint8_t inter_MCBPC_code[25];
583 extern const uint8_t inter_MCBPC_bits[25];
584
585 #define NB_RL_TABLES  6
586
587 static RLTable rl_table[NB_RL_TABLES] = {
588     /* intra luminance tables */
589     {
590         132,
591         85,
592         table0_vlc,
593         table0_run,
594         table0_level,
595     },
596     {
597         185,
598         119,
599         table2_vlc,
600         table2_run,
601         table2_level,
602     },
603     {
604         102,
605         67,
606         intra_vlc,
607         intra_run,
608         intra_level,
609     },
610     /* intra chrominance / non intra tables */
611     {
612         148,
613         81,
614         table1_vlc,
615         table1_run,
616         table1_level,
617     },
618     {
619         168,
620         99,
621         table4_vlc,
622         table4_run,
623         table4_level,
624     },
625     {
626         102,
627         58,
628         inter_vlc,
629         inter_run,
630         inter_level,
631     },
632 };
633
634 /* motion vector table 0 */
635
636 static const uint16_t table0_mv_code[1100] = {
637  0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
638  0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
639  0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
640  0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
641  0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
642  0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
643  0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
644  0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
645  0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
646  0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
647  0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
648  0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
649  0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
650  0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
651  0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
652  0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
653  0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
654  0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
655  0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
656  0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
657  0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
658  0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
659  0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
660  0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
661  0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
662  0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
663  0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
664  0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
665  0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
666  0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
667  0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
668  0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
669  0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
670  0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
671  0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
672  0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
673  0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
674  0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
675  0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
676  0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
677  0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
678  0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
679  0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
680  0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
681  0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
682  0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
683  0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
684  0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
685  0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
686  0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
687  0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
688  0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
689  0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
690  0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
691  0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
692  0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
693  0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
694  0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
695  0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
696  0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
697  0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
698  0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
699  0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
700  0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
701  0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
702  0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
703  0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
704  0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
705  0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
706  0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
707  0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
708  0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
709  0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
710  0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
711  0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
712  0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
713  0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
714  0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
715  0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
716  0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
717  0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
718  0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
719  0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
720  0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
721  0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
722  0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
723  0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
724  0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
725  0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
726  0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
727  0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
728  0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
729  0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
730  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
731  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
732  0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
733  0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
734  0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
735  0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
736  0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
737  0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
738  0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
739  0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
740  0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
741  0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
742  0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
743  0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
744  0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
745  0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
746  0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
747  0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
748  0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
749  0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
750  0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
751  0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
752  0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
753  0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
754  0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
755  0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
756  0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
757  0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
758  0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
759  0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
760  0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
761  0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
762  0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
763  0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
764  0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
765  0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
766  0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
767  0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
768  0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
769  0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
770  0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
771  0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
772  0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
773  0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
774  0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
775 };
776
777 static const uint8_t table0_mv_bits[1100] = {
778   1,  4,  4,  4,  5,  5,  5,  6,
779   6,  6,  7,  7,  7,  8,  8,  8,
780   8,  8,  8,  8,  8,  8,  8,  8,
781   8,  9,  9,  9,  9,  9,  9,  9,
782   9,  9,  9,  9,  9, 10, 10, 10,
783  10, 10, 10, 10, 10, 10, 10, 10,
784  10, 10, 10, 10, 10, 10, 10, 10,
785  10, 10, 10, 10, 11, 11, 11, 11,
786  11, 11, 11, 11, 11, 11, 11, 11,
787  11, 11, 11, 11, 11, 11, 11, 11,
788  11, 11, 11, 11, 11, 11, 11, 11,
789  12, 12, 12, 12, 12, 12, 12, 12,
790  12, 12, 12, 12, 12, 12, 12, 12,
791  12, 12, 12, 12, 12, 12, 12, 12,
792  12, 12, 12, 12, 12, 12, 12, 12,
793  12, 12, 12, 12, 12, 12, 12, 12,
794  12, 12, 12, 12, 12, 12, 12, 12,
795  12, 12, 12, 13, 13, 13, 13, 13,
796  13, 13, 13, 13, 13, 13, 13, 13,
797  13, 13, 13, 13, 13, 13, 13, 13,
798  13, 13, 13, 13, 13, 13, 13, 13,
799  13, 13, 13, 13, 13, 13, 13, 13,
800  13, 13, 13, 13, 13, 13, 13, 13,
801  13, 13, 13, 13, 13, 13, 13, 13,
802  13, 13, 13, 13, 13, 13, 13, 13,
803  13, 13, 14, 14, 14, 14, 14, 14,
804  14, 14, 14, 14, 14, 14, 14, 14,
805  14, 14, 14, 14, 14, 14, 14, 14,
806  14, 14, 14, 14, 14, 14, 14, 14,
807  14, 14, 14, 14, 14, 14, 14, 14,
808  14, 14, 14, 14, 14, 14, 14, 14,
809  14, 14, 14, 14, 14, 14, 14, 14,
810  14, 14, 14, 14, 14, 14, 14, 14,
811  14, 14, 14, 14, 14, 14, 14, 14,
812  14, 14, 14, 14, 14, 14, 14, 14,
813  14, 14, 14, 14, 14, 14, 14, 14,
814  14, 14, 14, 14, 14, 14, 14, 14,
815  14, 14, 14, 14, 14, 14, 14, 14,
816  14, 15, 15, 15, 15, 15, 15, 15,
817  15, 15, 15, 15, 15, 15, 15, 15,
818  15, 15, 15, 15, 15, 15, 15, 15,
819  15, 15, 15, 15, 15, 15, 15, 15,
820  15, 15, 15, 15, 15, 15, 15, 15,
821  15, 15, 15, 15, 15, 15, 15, 15,
822  15, 15, 15, 15, 15, 15, 15, 15,
823  15, 15, 15, 15, 15, 15, 15, 15,
824  15, 15, 15, 15, 15, 15, 15, 15,
825  15, 15, 15, 15, 15, 15, 15, 15,
826  15, 15, 15, 15, 15, 15, 15, 15,
827  15, 15, 15, 15, 15, 15, 15, 15,
828  15, 15, 15, 15, 15, 15, 15, 15,
829  15, 15, 15, 15, 15, 15, 15, 15,
830  15, 15, 15, 15, 15, 15, 15, 15,
831  15, 15, 15, 15, 15, 15, 15, 15,
832  15, 15, 15, 15, 15, 15, 15, 15,
833  15, 15, 15, 15, 15, 15, 15, 15,
834  15, 15, 15, 15, 15, 15, 15, 15,
835  15, 15, 15, 15, 15, 15, 15, 15,
836  15, 15, 15, 15, 16, 16, 16, 16,
837  16, 16, 16, 16, 16, 16, 16, 16,
838  16, 16, 16, 16, 16, 16, 16, 16,
839  16, 16, 16, 16, 16, 16, 16, 16,
840  16, 16, 16, 16, 16, 16, 16, 16,
841  16, 16, 16, 16, 16, 16, 16, 16,
842  16, 16, 16, 16, 16, 16, 16, 16,
843  16, 16, 16, 16, 16, 16, 16, 16,
844  16, 16, 16, 16, 16, 16, 16, 16,
845  16, 16, 16, 16, 16, 16, 16, 16,
846  16, 16, 16, 16, 16, 16, 16, 16,
847  16, 16, 16, 16, 16, 16, 16, 16,
848  16, 16, 16, 16, 16, 16, 16, 16,
849  16, 16, 16, 16, 16, 16, 16, 16,
850  16, 16, 16, 16, 16, 16, 16, 16,
851  16, 16, 16, 16, 16, 16, 16, 16,
852  16, 16, 16, 16, 16, 16, 16, 16,
853  16, 16, 16, 16, 16, 16, 16, 16,
854  16, 16, 16, 16, 16, 16, 16, 16,
855  16, 16, 16, 16, 16, 16, 16, 16,
856  16, 16, 16, 16, 16, 16, 16, 16,
857  16, 16, 16, 16, 16, 16, 16, 16,
858  16, 16, 16, 16, 16, 16, 16, 16,
859  16, 16, 16, 16, 16, 16, 16, 16,
860  16, 16, 16, 16, 16, 16, 16, 16,
861  16, 16, 16, 16, 16, 16, 16, 16,
862  16, 16, 16, 16, 16, 16, 16, 16,
863  16, 16, 16, 16, 16, 16, 16, 16,
864  16, 16, 16, 16, 16, 16, 16, 16,
865  16, 16, 16, 16, 16, 16, 16, 16,
866  16, 16, 16, 16, 16, 16, 16, 16,
867  16, 17, 17, 17, 17, 17, 17, 17,
868  17, 17, 17, 17, 17, 17, 17, 17,
869  17, 17, 17, 17, 17, 17, 17, 17,
870  17, 17, 17, 17, 17, 17, 17, 17,
871  17, 17, 17, 17, 17, 17, 17, 17,
872  17, 17, 17, 17, 17, 17, 17, 17,
873  17, 17, 17, 17, 17, 17, 17, 17,
874  17, 17, 17, 17, 17, 17, 17, 17,
875  17, 17, 17, 17, 17, 17, 17, 17,
876  17, 17, 17, 17, 17, 17, 17, 17,
877  17, 17, 17, 17, 17, 17, 17, 17,
878  17, 17, 17, 17, 17, 17, 17, 17,
879  17, 17, 17, 17, 17, 17, 17, 17,
880  17, 17, 17, 17, 17, 17, 17, 17,
881  17, 17, 17, 17, 17, 17, 17, 17,
882  17, 17, 17, 17, 17, 17, 17, 17,
883  17, 17, 17, 17, 17, 17, 17, 17,
884  17, 17, 17, 17, 17, 17, 17, 17,
885  17, 17, 17, 17, 17, 17, 17, 17,
886  17, 17, 17, 17, 17, 17, 17, 17,
887  17, 17, 17, 17, 17, 17, 17, 17,
888  17, 17, 17, 17, 17, 17, 17, 17,
889  17, 17, 17, 17, 17, 17, 17, 17,
890  17, 17, 17, 17, 17, 17, 17, 17,
891  17, 17, 17, 17, 17, 17, 17, 17,
892  17, 17, 17, 17, 17, 17, 17, 17,
893  17, 17, 17, 17, 17, 17, 17, 17,
894  17, 17, 17, 17, 17, 17, 17, 17,
895  17, 17, 17, 17, 17, 17, 17, 17,
896  17, 17, 17, 17, 17, 17, 17, 17,
897  17, 17, 17, 17, 17, 17, 17, 17,
898  17, 17, 17, 17, 17, 17, 17, 17,
899  17, 17, 17, 17, 17, 17, 17, 17,
900  17, 17, 17, 17, 17, 17, 17, 17,
901  17, 17, 17, 17, 17, 17, 17, 17,
902  17, 17, 17, 17, 17, 17, 17, 17,
903  17, 17, 17, 17, 17, 17, 17, 17,
904  17, 17, 17, 17, 17, 17, 17, 17,
905  17, 17, 17, 17, 17, 17, 17, 17,
906  17, 17, 17, 17, 17, 17, 17, 17,
907  17, 17, 17, 17, 17, 17, 17, 17,
908  17, 17, 17, 17, 17, 17, 17, 17,
909  17, 17, 17, 17, 17, 17, 17, 17,
910  17, 17, 17, 17, 17, 17, 17, 17,
911  17, 17, 17, 17, 17, 17, 17, 17,
912  17, 17, 17, 17, 17, 17, 17, 17,
913  17, 17, 17, 17, 17, 17, 17, 17,
914  17, 17, 17, 17, 17, 17, 17, 17,
915  17, 17, 17,  8,
916 };
917
918 static const uint8_t table0_mvx[1099] = {
919  32, 32, 31, 32, 33, 31, 33, 31,
920  33, 32, 34, 32, 30, 32, 31, 34,
921  35, 32, 34, 33, 29, 33, 30, 30,
922  31, 31, 35, 29, 33, 35, 33, 34,
923  31, 29, 30, 34, 30, 36, 28, 32,
924  34, 37, 30, 27, 32, 25, 39, 32,
925  34, 32, 35, 35, 35, 31, 35, 29,
926  32, 29, 30, 29, 37, 27, 36, 38,
927  37, 33, 32, 31, 29, 31, 28, 36,
928  33, 30, 34, 33, 33, 28, 27, 25,
929  31, 26, 39, 32, 32, 31, 33, 39,
930  31, 38, 28, 36, 21, 23, 43, 36,
931  34, 41, 30, 25, 28, 31, 30, 34,
932  38, 35, 61, 34, 28, 30, 37, 37,
933  35, 27, 36,  3, 59, 38, 37, 32,
934  31, 29, 26, 33, 37, 33, 27, 27,
935  35, 34, 34, 40, 42, 33, 32, 29,
936   4,  5, 28, 24, 25, 35, 39, 38,
937  32, 23, 27, 32, 30, 35, 26, 34,
938  60, 36, 29, 22, 26, 41,  7, 30,
939  38, 30, 36, 29, 30, 41, 26, 25,
940  32, 34, 24, 39,  1, 25, 39, 32,
941  28, 29, 32, 38, 26, 36, 28, 63,
942  28, 39, 23, 21, 26, 35, 31, 35,
943  57, 31, 29, 29, 28, 30, 27, 35,
944   2, 38, 40, 34, 37, 29, 38, 43,
945  26, 32, 33, 42, 24, 40, 28, 32,
946  32, 32, 36, 32, 43, 25, 21, 31,
947  30, 31, 41, 29, 33, 37, 26, 37,
948  27, 59, 23, 33, 35, 31, 31, 37,
949  38, 39, 32, 23, 32, 27, 37, 36,
950  31, 40, 25, 27, 38, 31, 36, 28,
951  31, 36, 25, 45,  3, 34, 38, 39,
952  40, 38, 30, 32, 19, 24, 25, 26,
953  45, 20, 24, 33, 33, 31, 41, 34,
954  39, 47, 40, 58, 59, 41, 33,  3,
955  17, 61, 42, 30, 26, 29, 36, 61,
956  33, 37, 62, 28, 25, 38, 25, 38,
957  17, 23, 34, 33, 21, 33, 49, 27,
958  32, 23, 27, 22, 24, 22, 39, 43,
959  27, 37,  6, 42, 47, 26, 30, 31,
960  41, 39, 33, 22, 45, 36, 32, 45,
961  19, 22, 30,  5,  5, 17, 29, 22,
962  31, 31, 43, 37, 27, 32, 32, 32,
963  33, 34, 43, 35, 29, 26, 22, 32,
964  19, 32, 25, 31, 41, 49, 28, 34,
965  28, 39, 34, 19, 37, 38, 29, 21,
966  36, 42, 24, 48, 16, 28, 49, 22,
967  34, 31, 38, 39, 44, 11, 35, 30,
968  33, 33, 23, 28, 33, 46, 15, 13,
969  24, 41, 24, 34, 34, 30, 26, 24,
970  14, 60, 21, 29, 39, 23, 35, 37,
971  63, 45, 33, 34, 47, 41, 22, 42,
972  35, 35, 23, 32, 35, 43, 32,  7,
973  31, 41, 20, 31, 16, 13, 63, 25,
974  30, 32, 35, 30, 30, 31, 42, 47,
975  39, 38, 40, 40, 51, 55, 56, 18,
976  21, 39, 39, 33, 17, 41, 23, 24,
977  43, 25, 31, 20, 19, 45,  1, 34,
978  31, 22, 35, 15, 46, 46, 35, 31,
979  28, 29, 29, 23, 41, 27, 14, 53,
980  53, 27, 24, 32, 57, 32, 17, 42,
981  37, 29, 33,  1, 25, 32, 32, 63,
982  26, 40, 44, 36, 31, 39, 20, 20,
983  44, 23, 33, 34, 35, 33, 33, 28,
984  41, 23, 41, 41, 29, 25, 26, 49,
985  29, 24, 37, 49, 50, 51, 51, 26,
986  39, 25, 26, 15, 39, 18, 42, 17,
987   4, 31, 32, 32, 60,  1, 42, 32,
988   0, 12, 19, 35, 21, 41, 17, 26,
989  20, 45, 46, 32, 37, 22, 47, 29,
990  31, 27, 29, 30, 21, 33, 35, 18,
991  25, 33, 50, 51, 42,  2, 15, 51,
992  53, 33, 25, 29, 55, 37, 38, 33,
993  38, 59, 38, 33, 39, 13, 32, 40,
994  61, 61, 32,  9, 44,  3, 31, 29,
995  25, 31, 27, 23,  9, 25,  9, 29,
996  20, 30, 30, 42, 18, 28, 25, 28,
997  28, 21, 29, 43, 29, 43, 26, 44,
998  44, 21, 38, 21, 24, 45, 45, 35,
999  39, 22, 35, 36, 34, 34, 45, 34,
1000  29, 31, 46, 25, 46, 16, 17, 31,
1001  20, 32, 47, 47, 47, 32, 49, 49,
1002  49, 31,  1, 27, 28, 39, 39, 21,
1003  36, 23, 51,  2, 40, 51, 32, 53,
1004  24, 30, 24, 30, 21, 40, 57, 57,
1005  31, 41, 58, 32, 12,  4, 32, 34,
1006  59, 31, 32, 13,  9, 35, 26, 35,
1007  37, 61, 37, 63, 26, 29, 41, 38,
1008  23, 20, 41, 26, 41, 42, 42, 42,
1009  26, 26, 26, 26,  1, 26, 37, 37,
1010  37, 23, 34, 42, 27, 43, 34, 27,
1011  31, 24, 33, 16,  3, 31, 24, 33,
1012  24,  4, 44, 44, 11, 44, 31, 13,
1013  13, 44, 45, 13, 25, 22, 38, 26,
1014  38, 38, 39, 32, 30, 39, 30, 22,
1015  32, 26, 30, 47, 47, 47, 19, 47,
1016  30, 31, 35,  8, 23, 47, 47, 27,
1017  35, 47, 31, 48, 35, 19, 36, 49,
1018  49, 33, 31, 39, 27, 39, 49, 49,
1019  50, 50, 50, 39, 31, 51, 51, 39,
1020  28, 33, 33, 21, 40, 31, 52, 53,
1021  40, 53,  9, 33, 31, 53, 54, 54,
1022  54, 55, 55, 34, 15, 56, 25, 56,
1023  21, 21, 40, 40, 25, 40, 58, 36,
1024   5, 41, 41, 12, 60, 41, 41, 37,
1025  22, 61, 18, 29, 29, 30, 61, 30,
1026  61, 62, 62, 30, 30, 63, 18, 13,
1027  30, 23, 19, 20, 20, 41, 13,  2,
1028   5,  5,  1,  5, 32,  6, 32, 35,
1029  20, 35, 27, 35, 35, 36, 36, 13,
1030  36, 41, 41, 41,  3, 30, 42, 27,
1031  20, 30, 27, 28, 30, 21, 33, 33,
1032  14, 24, 30, 42, 24, 33, 25, 42,
1033  43, 14, 43, 43, 14, 43,  7, 36,
1034  37, 37, 37, 37,  7, 14, 25, 43,
1035  43, 44, 15, 37,  7,  7,  3,  1,
1036   8, 15, 15,  8, 44, 44, 44, 45,
1037  45, 45, 45,  8,  8, 45, 21, 45,
1038  28, 28, 28, 21, 28, 28, 22, 37,
1039  46, 46, 37,  8, 29, 37, 29, 22,
1040  46, 37, 22, 29, 47, 47, 38, 38,
1041  16, 38, 38, 33, 38, 22, 47, 47,
1042  29, 25, 16,  0, 48,  1, 34, 48,
1043  48, 34, 25, 26, 26, 49, 49, 26,
1044   1, 49,  4, 26,  4, 49,  1,  9,
1045  49, 49, 49, 10, 49, 17, 38, 17,
1046  17, 50, 38, 50, 50, 22, 38, 51,
1047  38, 38, 51, 39, 39, 18, 22, 39,
1048  51, 22, 52, 52, 52, 39, 53, 53,
1049  10, 23, 18, 29, 10, 53, 29, 54,
1050  11, 54, 11, 11, 55,  1, 18, 55,
1051  55, 55, 55, 55, 55, 29, 34, 18,
1052  29, 56, 56, 34, 57, 34, 34, 29,
1053  29, 57, 57, 35, 35, 35, 35, 35,
1054  39, 35, 59, 59, 18, 59, 39, 30,
1055  18, 40, 60, 60, 61, 30, 18, 61,
1056  61, 19, 19,
1057 };
1058
1059 static const uint8_t table0_mvy[1099] = {
1060  32, 31, 32, 33, 32, 31, 31, 33,
1061  33, 34, 32, 30, 32, 35, 34, 31,
1062  32, 29, 33, 30, 32, 34, 33, 31,
1063  30, 35, 31, 31, 29, 33, 35, 30,
1064  29, 33, 34, 34, 30, 32, 32, 36,
1065  29, 32, 35, 32, 28, 32, 32, 27,
1066  35, 37, 34, 29, 30, 36, 35, 34,
1067  25, 30, 29, 35, 33, 31, 31, 32,
1068  31, 28, 39, 28, 29, 37, 31, 33,
1069  27, 36, 28, 36, 37, 33, 33, 31,
1070  27, 32, 31, 38, 26, 25, 25, 33,
1071  39, 31, 34, 30, 32, 32, 32, 34,
1072  36, 32, 28, 33, 30, 38, 37, 27,
1073  33, 28, 32, 37, 35, 38, 29, 34,
1074  27, 29, 29, 32, 32, 34, 35,  3,
1075  26, 36, 31, 38, 30, 26, 35, 34,
1076  37, 26, 25, 32, 32, 39, 23, 37,
1077  32, 32, 29, 32, 29, 36, 29, 30,
1078  41, 31, 30, 21, 39, 25, 34, 38,
1079  32, 35, 39, 32, 33, 33, 32, 27,
1080  29, 25, 28, 27, 26, 31, 30, 35,
1081  24, 24, 31, 34, 32, 30, 35, 40,
1082  28, 38,  5, 35, 29, 36, 36, 32,
1083  38, 30, 33, 31, 35, 26, 23, 38,
1084  32, 41, 28, 25, 37, 40, 37, 39,
1085  32, 36, 33, 39, 25, 26, 28, 31,
1086  28, 42, 23, 31, 33, 31, 39,  1,
1087  59, 22, 27,  4, 33, 34, 33, 24,
1088  41,  3, 35, 41, 41, 28, 36, 36,
1089  28, 33, 35, 21, 23, 21, 22, 37,
1090  27, 27, 43, 29, 60, 39, 27, 25,
1091  59, 34, 27, 27, 26, 40, 37, 27,
1092  61, 26, 39, 33, 31, 22, 37, 25,
1093  30, 25, 24, 61, 31, 34, 25, 38,
1094  32, 32, 30,  3, 61, 43, 29, 23,
1095  28, 32, 28, 32, 31, 34,  5, 33,
1096  32, 33, 33, 42, 37, 23, 38, 31,
1097  40, 26, 32, 26, 37, 38, 36, 24,
1098  29, 30, 20, 22, 29, 24, 32, 41,
1099   2, 34, 25, 33, 29, 31, 39, 35,
1100  36, 24, 32, 30, 33, 27, 44, 60,
1101  30, 36, 19, 34, 31, 24, 16, 35,
1102  32, 38, 21, 33, 31, 31, 21, 35,
1103   5, 17, 29, 38, 38, 18, 58, 19,
1104  43, 41, 30, 41, 43, 39, 29,  7,
1105  29, 17, 28, 19, 28, 31, 25, 19,
1106  40, 26, 21, 33, 39, 23, 40, 30,
1107  39, 34, 35, 32, 32, 24, 33, 30,
1108  40, 47, 39, 37, 32, 33, 24, 23,
1109  45, 47, 27, 23, 42, 32, 32, 33,
1110  36, 37, 37, 17, 18, 22, 40, 38,
1111  32, 31, 35, 24, 17, 25, 17, 23,
1112  33, 34, 51, 42, 31, 36, 36, 29,
1113  21, 22, 37, 44, 43, 25, 47, 33,
1114  45, 27, 31, 58, 31, 32, 31, 38,
1115  43, 20, 47, 45, 54,  1, 26, 34,
1116  38, 14, 22, 24, 33, 34, 32, 32,
1117  37, 21, 23, 49, 35, 23, 28, 39,
1118  39, 23, 55, 33, 30, 30, 63, 16,
1119  42, 28, 13, 33, 33, 35, 19, 46,
1120  43, 17, 19, 36, 39, 24, 31, 32,
1121  33, 26, 28, 62, 33, 63, 33, 39,
1122  19, 49, 17, 31, 43, 13, 15, 29,
1123  25, 35, 33, 23, 49, 41, 28, 29,
1124  34, 38,  7, 61, 11, 50, 13, 41,
1125  19, 47, 25, 26, 15, 42, 41, 29,
1126  45, 27, 17, 35, 32, 29, 32, 24,
1127  13, 26, 26, 31, 24, 33, 28, 30,
1128  31, 11, 45, 46, 33, 33, 35, 57,
1129  32, 32, 35, 45, 34, 11, 37, 42,
1130  39, 37, 31, 49, 21, 27, 29, 47,
1131  53, 40, 51, 16, 26,  1, 40, 30,
1132  41, 44, 34, 25, 27, 31, 35, 35,
1133  31, 15, 49,  1, 35, 40,  5, 58,
1134  21, 29, 22, 59, 45, 31,  9, 26,
1135   9, 29, 11, 32, 30,  3, 13, 20,
1136  18, 20, 11,  3, 29, 40, 31, 53,
1137  30, 17, 20, 37, 31, 42, 47, 47,
1138  54, 38,  9, 34, 13, 37, 21, 25,
1139  27, 43, 42, 45, 40, 25, 27, 46,
1140  22, 25, 53, 20,  2, 14, 39, 15,
1141  22, 44, 34, 21, 38, 33, 27, 48,
1142  34, 52, 35, 47, 49, 54,  2, 13,
1143  23, 52, 29, 45, 22, 49, 54, 21,
1144  40, 42, 31, 30, 29, 34,  0, 25,
1145  23, 51, 24, 59, 28, 38, 29, 31,
1146   2, 13, 31,  8, 31, 33, 12, 45,
1147  41,  7, 14, 30, 25, 18, 43, 20,
1148  43, 35, 44,  1, 49, 42, 42, 18,
1149  41, 38, 41, 44, 53, 11, 20, 25,
1150  45, 46, 47, 48, 39, 52, 46, 49,
1151  63, 55, 44, 38, 13, 13, 57, 22,
1152  51, 16, 12, 28, 35, 57, 25, 20,
1153  26, 28, 28, 29, 32, 31, 62, 34,
1154  35, 35, 19, 49, 48, 39, 40, 18,
1155  43, 46, 11,  6, 48, 19, 49, 41,
1156  10, 23, 58, 17, 21, 23, 34, 30,
1157  60,  0, 44, 34, 26, 37, 46, 43,
1158  49, 59,  4, 34, 59, 37, 22, 25,
1159  28, 46,  6, 40, 59, 42, 36, 61,
1160  28, 30, 31, 43, 10, 22, 23, 47,
1161  20, 52, 55, 36, 25, 16,  1, 11,
1162  27, 29,  5, 63, 18, 41, 31, 34,
1163  38,  1,  5, 13, 28, 31, 17, 38,
1164  39, 41, 36, 37, 22, 39, 33, 43,
1165  43, 15, 17, 49, 30, 21, 22, 20,
1166  10, 17, 25, 54, 57,  3, 34,  8,
1167  36, 25, 31, 14, 15, 19, 29, 25,
1168  18, 39, 53, 22, 27, 20, 29, 33,
1169  41, 42, 35, 62, 50, 29, 53, 50,
1170  35, 55, 42, 61, 63,  4,  7, 42,
1171  21, 46, 47, 49, 27, 46, 17, 55,
1172  41, 50, 63,  4, 56, 18,  8, 10,
1173  18, 51, 63, 36, 55, 18,  5, 55,
1174   9, 29, 17, 21, 30, 27,  1, 59,
1175   7, 11, 12, 15,  5, 42, 24, 41,
1176  43,  7, 27, 22, 25, 31, 30, 37,
1177  22, 39, 53, 29, 36, 37, 48,  0,
1178   5, 13, 17, 31, 32, 26, 46, 28,
1179  44, 45, 46, 53, 49, 51,  3, 41,
1180   3, 22, 42, 33,  5, 45,  7, 22,
1181  40, 53, 24, 14, 25, 27, 10, 12,
1182  34, 16, 17, 53, 20, 26, 39, 45,
1183  18, 45, 35, 33, 31, 49,  4, 39,
1184  42, 11, 51,  5, 13, 26, 27, 17,
1185  52, 30,  0, 22, 12, 34, 62, 36,
1186  38, 41, 47, 30, 63, 38, 41, 43,
1187  59, 33, 45, 37, 38, 40, 47, 24,
1188  48, 49, 30,  1, 10, 22, 49, 15,
1189  39, 59, 31, 32, 33, 18, 13, 15,
1190  31, 21, 27, 44, 42, 39, 46, 17,
1191  26, 32, 30, 31,  0, 30, 34,  9,
1192  12, 13, 25, 31, 32, 55, 43, 35,
1193  61, 33, 35, 46, 25, 47, 48, 62,
1194  63, 38, 61,  1,  2,  5,  7,  9,
1195  46, 10, 34, 35, 36, 55, 51,  7,
1196  40, 23, 34, 37,  5, 13, 42, 18,
1197  25, 27, 28,
1198 };
1199
1200 /* motion vector table 1 */
1201 static const uint16_t table1_mv_code[1100] = {
1202  0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1203  0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1204  0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1205  0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1206  0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1207  0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
1208  0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
1209  0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
1210  0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
1211  0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
1212  0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
1213  0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
1214  0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
1215  0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
1216  0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
1217  0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
1218  0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
1219  0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
1220  0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
1221  0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
1222  0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
1223  0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
1224  0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
1225  0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
1226  0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
1227  0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
1228  0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
1229  0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
1230  0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
1231  0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
1232  0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
1233  0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
1234  0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
1235  0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
1236  0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
1237  0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
1238  0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
1239  0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
1240  0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
1241  0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
1242  0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
1243  0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
1244  0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
1245  0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
1246  0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
1247  0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
1248  0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
1249  0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
1250  0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
1251  0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
1252  0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
1253  0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
1254  0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
1255  0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
1256  0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
1257  0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
1258  0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
1259  0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
1260  0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
1261  0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
1262  0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
1263  0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
1264  0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
1265  0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
1266  0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
1267  0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
1268  0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
1269  0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
1270  0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
1271  0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
1272  0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
1273  0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
1274  0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
1275  0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
1276  0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
1277  0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
1278  0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
1279  0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
1280  0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
1281  0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
1282  0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
1283  0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
1284  0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
1285  0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
1286  0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
1287  0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
1288  0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
1289  0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
1290  0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
1291  0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
1292  0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
1293  0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
1294  0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
1295  0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
1296  0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
1297  0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
1298  0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
1299  0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
1300  0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
1301  0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
1302  0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
1303  0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
1304  0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
1305  0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
1306  0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
1307  0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
1308  0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
1309  0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
1310  0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
1311  0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
1312  0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
1313  0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
1314  0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
1315  0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
1316  0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
1317  0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
1318  0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
1319  0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
1320  0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
1321  0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
1322  0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
1323  0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
1324  0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
1325  0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
1326  0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
1327  0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
1328  0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
1329  0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
1330  0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
1331  0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
1332  0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
1333  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
1334  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
1335  0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
1336  0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
1337  0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1338  0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1339  0x2473, 0x26a2, 0x26a3, 0x000b,
1340 };
1341
1342 static const uint8_t table1_mv_bits[1100] = {
1343   2,  4,  4,  4,  5,  5,  5,  5,
1344   6,  6,  7,  7,  7,  7,  7,  8,
1345   8,  8,  8,  8,  8,  8,  8,  8,
1346   8,  8,  8,  8,  8,  8,  8,  8,
1347   8,  9,  9,  9,  9,  9,  9,  9,
1348   9,  9,  9,  9,  9,  9,  9,  9,
1349   9,  9,  9,  9,  9, 10, 10, 10,
1350  10, 10, 10, 10, 10, 10, 10, 10,
1351  10, 10, 10, 10, 10, 10, 10, 10,
1352  10, 10, 10, 10, 10, 10, 10, 10,
1353  10, 10, 10, 10, 10, 10, 10, 10,
1354  10, 10, 10, 10, 10, 10, 10, 10,
1355  10, 10, 10, 10, 10, 10, 10, 10,
1356  10, 10, 10, 10, 10, 10, 10, 10,
1357  10, 10, 10, 11, 11, 11, 11, 11,
1358  11, 11, 11, 11, 11, 11, 11, 11,
1359  11, 11, 11, 11, 11, 11, 11, 11,
1360  11, 11, 11, 11, 11, 11, 11, 11,
1361  11, 11, 11, 11, 11, 11, 11, 11,
1362  11, 11, 11, 11, 11, 11, 11, 11,
1363  11, 11, 11, 11, 11, 11, 11, 11,
1364  11, 11, 11, 11, 11, 11, 11, 11,
1365  11, 11, 11, 11, 11, 11, 11, 11,
1366  11, 11, 11, 11, 11, 11, 11, 11,
1367  11, 11, 11, 12, 12, 12, 12, 12,
1368  12, 12, 12, 12, 12, 12, 12, 12,
1369  12, 12, 12, 12, 12, 12, 12, 12,
1370  12, 12, 12, 12, 12, 12, 12, 12,
1371  12, 12, 12, 12, 12, 12, 12, 12,
1372  12, 12, 12, 12, 12, 12, 12, 12,
1373  12, 12, 12, 12, 12, 12, 12, 12,
1374  12, 12, 12, 12, 12, 12, 12, 12,
1375  12, 12, 12, 12, 12, 12, 12, 12,
1376  12, 12, 12, 12, 12, 12, 12, 12,
1377  12, 12, 12, 12, 12, 12, 12, 12,
1378  12, 12, 12, 12, 12, 12, 12, 12,
1379  12, 12, 12, 12, 12, 12, 12, 12,
1380  12, 12, 12, 12, 12, 12, 12, 12,
1381  12, 12, 12, 12, 12, 12, 12, 12,
1382  12, 12, 12, 12, 12, 12, 12, 12,
1383  12, 12, 12, 12, 12, 12, 12, 12,
1384  12, 12, 13, 13, 13, 13, 13, 13,
1385  13, 13, 13, 13, 13, 13, 13, 13,
1386  13, 13, 13, 13, 13, 13, 13, 13,
1387  13, 13, 13, 13, 13, 13, 13, 13,
1388  13, 13, 13, 13, 13, 13, 13, 13,
1389  13, 13, 13, 13, 13, 13, 13, 13,
1390  13, 13, 13, 13, 13, 13, 13, 13,
1391  13, 13, 13, 13, 13, 13, 13, 13,
1392  13, 13, 13, 13, 13, 13, 13, 13,
1393  13, 13, 13, 13, 13, 13, 13, 13,
1394  13, 13, 13, 13, 13, 13, 13, 13,
1395  13, 13, 13, 13, 13, 13, 13, 13,
1396  13, 13, 13, 13, 13, 13, 13, 13,
1397  13, 13, 13, 13, 13, 13, 13, 13,
1398  13, 13, 13, 13, 13, 13, 13, 13,
1399  13, 13, 13, 13, 13, 13, 13, 13,
1400  13, 13, 13, 13, 13, 13, 13, 13,
1401  13, 13, 13, 13, 13, 13, 13, 13,
1402  13, 13, 13, 13, 13, 13, 13, 13,
1403  13, 13, 13, 13, 13, 13, 13, 13,
1404  13, 13, 13, 13, 13, 13, 13, 13,
1405  13, 13, 13, 13, 13, 13, 13, 13,
1406  13, 13, 13, 13, 13, 13, 13, 13,
1407  13, 13, 13, 13, 13, 13, 13, 13,
1408  13, 13, 13, 13, 13, 13, 13, 13,
1409  13, 13, 13, 13, 13, 13, 13, 13,
1410  13, 13, 13, 13, 13, 13, 13, 13,
1411  13, 13, 13, 13, 13, 13, 13, 13,
1412  13, 13, 13, 13, 13, 13, 13, 13,
1413  13, 13, 13, 13, 13, 13, 13, 13,
1414  13, 13, 13, 13, 13, 13, 13, 13,
1415  13, 13, 13, 13, 13, 13, 13, 13,
1416  13, 13, 13, 13, 13, 13, 13, 13,
1417  13, 13, 13, 13, 13, 13, 13, 13,
1418  13, 13, 13, 13, 13, 13, 13, 13,
1419  13, 13, 13, 13, 13, 13, 13, 14,
1420  14, 14, 14, 14, 14, 14, 14, 14,
1421  14, 14, 14, 14, 14, 14, 14, 14,
1422  14, 14, 14, 14, 14, 14, 14, 14,
1423  14, 14, 14, 14, 14, 14, 14, 14,
1424  14, 14, 14, 14, 14, 14, 14, 14,
1425  14, 14, 14, 14, 14, 14, 14, 14,
1426  14, 14, 14, 14, 14, 14, 14, 14,
1427  14, 14, 14, 14, 14, 14, 14, 14,
1428  14, 14, 14, 14, 14, 14, 14, 14,
1429  14, 14, 14, 14, 14, 14, 14, 14,
1430  14, 14, 14, 14, 14, 14, 14, 14,
1431  14, 14, 14, 14, 14, 14, 14, 14,
1432  14, 14, 14, 14, 14, 14, 14, 14,
1433  14, 14, 14, 14, 14, 14, 14, 14,
1434  14, 14, 14, 14, 14, 14, 14, 14,
1435  14, 14, 14, 14, 14, 14, 14, 14,
1436  14, 14, 14, 14, 14, 14, 14, 14,
1437  14, 14, 14, 14, 14, 14, 14, 14,
1438  14, 14, 14, 14, 14, 14, 14, 14,
1439  14, 14, 14, 14, 14, 14, 14, 14,
1440  14, 14, 14, 14, 14, 14, 14, 14,
1441  14, 14, 14, 14, 14, 14, 14, 14,
1442  14, 14, 14, 14, 14, 14, 14, 14,
1443  14, 14, 14, 14, 14, 14, 14, 14,
1444  14, 14, 14, 14, 14, 14, 14, 14,
1445  14, 14, 14, 14, 14, 14, 14, 14,
1446  14, 14, 14, 14, 14, 14, 14, 14,
1447  14, 14, 14, 14, 14, 14, 14, 14,
1448  14, 14, 14, 14, 14, 14, 14, 14,
1449  14, 14, 14, 14, 14, 14, 14, 14,
1450  14, 14, 14, 14, 14, 14, 14, 14,
1451  14, 14, 14, 14, 14, 14, 14, 14,
1452  14, 14, 14, 14, 14, 14, 14, 14,
1453  14, 14, 14, 14, 14, 14, 14, 14,
1454  14, 14, 14, 14, 14, 14, 14, 14,
1455  14, 14, 14, 14, 14, 14, 14, 14,
1456  14, 14, 14, 14, 14, 14, 14, 14,
1457  14, 14, 14, 14, 14, 14, 14, 14,
1458  14, 14, 14, 14, 14, 14, 14, 14,
1459  14, 14, 14, 14, 14, 14, 14, 14,
1460  14, 14, 14, 14, 14, 14, 14, 14,
1461  14, 14, 14, 14, 14, 14, 14, 14,
1462  14, 14, 14, 14, 14, 14, 14, 14,
1463  14, 14, 14, 14, 14, 14, 14, 14,
1464  14, 14, 14, 14, 14, 14, 14, 14,
1465  14, 14, 14, 14, 14, 14, 14, 14,
1466  14, 14, 14, 14, 14, 14, 14, 14,
1467  14, 14, 14, 14, 14, 14, 14, 14,
1468  14, 14, 14, 14, 14, 14, 14, 14,
1469  14, 14, 14, 14, 14, 14, 14, 14,
1470  14, 14, 14, 14, 14, 14, 14, 14,
1471  14, 14, 14, 14, 14, 14, 14, 14,
1472  14, 14, 14, 14, 14, 14, 14, 14,
1473  14, 14, 14, 14, 14, 14, 14, 15,
1474  15, 15, 15, 15, 15, 15, 15, 15,
1475  15, 15, 15, 15, 15, 15, 15, 15,
1476  15, 15, 15, 15, 15, 15, 15, 15,
1477  15, 15, 15, 15, 15, 15, 15, 15,
1478  15, 15, 15, 15, 15, 15, 15, 15,
1479  15, 15, 15, 15, 15, 15, 15, 15,
1480  15, 15, 15,  4,
1481 };
1482
1483 static const uint8_t table1_mvx[1099] = {
1484  32, 31, 32, 31, 33, 32, 33, 33,
1485  31, 34, 30, 32, 32, 34, 35, 32,
1486  34, 33, 29, 30, 30, 32, 31, 31,
1487  33, 35, 35, 33, 31, 29, 29, 33,
1488  34, 30, 31, 28, 36, 30, 34, 32,
1489  32, 37, 32, 32, 25, 27, 39, 32,
1490  32, 32, 38, 35, 36, 32, 37, 61,
1491  26, 32, 34, 35,  3, 35, 27, 28,
1492  29, 34, 28, 37, 31, 36, 32, 27,
1493  31, 30, 29, 39, 33, 29, 33, 35,
1494  25, 25, 29, 33, 31, 31, 31, 33,
1495  32, 30, 32, 32, 41, 39, 33, 36,
1496  32, 28, 34, 36, 38, 24, 60, 31,
1497  23, 28, 32, 33, 59, 32, 40, 30,
1498   5, 34, 32, 38, 32, 30, 43,  4,
1499  32, 32, 42, 31, 31, 32, 26, 38,
1500  26, 22, 21, 37, 61, 63, 37, 31,
1501  32, 33,  2,  1, 23, 33, 41, 27,
1502  35, 30, 38, 23, 33,  3, 28, 34,
1503  34, 27, 41, 29, 39, 35, 36, 29,
1504  32, 27, 30, 32, 24, 61, 37, 26,
1505  59, 25, 35, 27, 36, 37, 30, 31,
1506  34, 40,  3, 28, 34, 39, 32, 31,
1507  32, 30, 24, 28, 35, 36, 26, 32,
1508  31, 33, 29, 33, 39, 25, 30, 24,
1509  35, 59, 29, 34, 25, 30, 21, 35,
1510  43, 40, 32, 29,  5, 28, 31, 62,
1511  33, 33, 25, 31, 21, 31, 43, 31,
1512  34, 33, 20, 40, 39, 31, 31, 57,
1513  38, 32, 42, 33, 32, 31, 32, 29,
1514  30, 44,  5, 31, 22, 34, 36, 17,
1515  38, 58, 38, 35, 32, 60, 35, 24,
1516  32, 38, 16, 45, 42, 32, 31, 29,
1517   4, 30, 17, 40, 46, 48, 63, 32,
1518  42, 19, 41, 22, 28, 36, 45, 33,
1519  33, 32, 29,  7, 41, 42, 18, 33,
1520  33, 32, 22, 37,  1, 26, 22, 23,
1521  49, 28, 26, 27, 32, 33, 27, 23,
1522  28, 36, 15,  6, 34, 27, 31, 26,
1523  23,  2, 33, 32, 34, 41, 28, 32,
1524  41,  0, 36, 38, 34, 31, 47, 32,
1525  17, 31, 39, 33, 37, 51, 30, 47,
1526  32, 50, 32, 19, 63, 30, 25, 27,
1527  33, 62, 24, 31, 27, 30, 37, 31,
1528  45, 32, 39, 20, 46, 47, 35, 19,
1529  34,  1, 49, 21, 21, 14, 51, 26,
1530  23, 31, 36, 35, 58, 29, 29, 21,
1531  20, 42, 13, 28, 12, 40, 31, 33,
1532  39, 60, 32, 44, 33, 31, 28, 37,
1533  29, 32, 30, 49, 43, 28, 39, 25,
1534  32, 48,  2, 15, 20, 25, 31, 28,
1535  21, 24, 25, 15, 31, 17, 37, 43,
1536  18, 32, 33, 24, 33, 36, 13, 33,
1537  31, 39, 11, 31, 33, 32, 39, 37,
1538  32, 32, 29, 17, 44, 46, 36, 35,
1539  26, 37, 58, 32, 34, 38,  8, 38,
1540  38, 22, 29, 25, 16, 35, 32, 35,
1541  33, 43, 18, 46, 38, 50, 33, 18,
1542  53, 60, 13, 32, 36, 33, 51, 36,
1543  43, 45, 27, 42, 29, 24, 30, 25,
1544  31, 52, 31, 35, 38,  9, 22, 34,
1545   4, 17, 28, 55, 42, 25, 17, 20,
1546  47, 34, 33, 16, 40, 25, 16, 30,
1547  53, 29, 10, 11, 14, 26, 33,  4,
1548  35, 44, 26, 16, 31, 26, 34, 38,
1549  29, 31, 30, 24, 22, 61, 32,  9,
1550  45, 34, 31, 19,  9, 31, 46, 31,
1551  35, 54, 29, 57, 30, 50,  3, 31,
1552  63, 34, 47, 41, 51, 18, 31, 14,
1553  37, 38, 31, 24, 32, 31, 50, 33,
1554  31, 54, 27,  9, 33, 23, 19, 32,
1555  29, 29, 33, 28, 47, 49, 30, 47,
1556  33, 27, 25, 54, 44, 45, 50, 58,
1557  51, 48, 33, 59, 33, 34, 57, 13,
1558  26, 33, 13, 48, 30, 11,  7, 56,
1559  34, 55, 26,  0, 26, 35,  1, 51,
1560  33, 53, 31, 45, 12, 29, 29, 51,
1561  31, 48,  2,  6, 34, 30, 28, 33,
1562  60, 40, 27, 46, 31,  9, 35, 29,
1563  31, 39, 55, 46, 19, 37, 62, 34,
1564  30, 16, 19, 49, 41, 41, 39, 37,
1565  14,  5, 13, 35, 55, 30, 40, 40,
1566  42,  8, 20, 25, 45, 35, 33, 36,
1567  54, 38, 27, 37, 62, 40, 15, 59,
1568  49, 31, 29, 34, 34, 39, 24, 29,
1569  25, 29, 21, 29, 10, 61, 33, 49,
1570  35, 34,  3, 38, 39, 29,  7, 41,
1571   1, 35,  4, 23, 15, 23, 11, 37,
1572  28, 35, 30, 30, 24,  1, 43, 56,
1573   8, 34, 42, 24, 45, 30, 20, 23,
1574   8, 38, 22, 33, 17, 52, 34, 22,
1575  53, 43, 44,  1, 27, 31, 41, 43,
1576  41, 30, 31, 36, 30,  5, 55, 31,
1577  33, 30, 40, 23, 15, 29, 34, 34,
1578  59, 34, 30, 11, 13, 38,  5,  0,
1579  30, 42,  5, 30, 29, 34, 10, 44,
1580  30, 63, 35, 12,  3, 26, 15, 17,
1581  25, 34, 43, 39, 34, 56, 29, 23,
1582  30, 12, 30, 10, 35,  9, 24, 58,
1583  10, 12, 54, 33, 37, 20, 41, 35,
1584  29, 18, 61, 30, 40, 24, 39, 53,
1585  62, 26, 29, 33, 34, 53, 49, 21,
1586  27, 11, 63, 20, 26, 23,  7, 13,
1587   6, 47, 29, 30,  9, 51, 22, 34,
1588  21, 25, 33, 56, 57, 30, 38, 51,
1589  51, 38, 63, 28, 40, 35, 33, 18,
1590  33, 33, 24, 58, 58, 34, 49, 29,
1591  43,  4,  1,  4, 42, 35, 35, 30,
1592  17,  5, 56, 61, 25, 37, 36, 55,
1593  28, 35, 29, 50, 48, 52,  2, 42,
1594  34, 40, 46, 46, 43, 35, 29, 48,
1595  20, 29, 31, 41,  7, 30, 35, 19,
1596  14, 21,  8, 39, 39, 40, 46, 55,
1597  34,  6, 30, 34, 37, 25, 37, 33,
1598  22, 44, 52, 17, 35, 29, 36, 35,
1599  40, 37, 28, 30, 50, 14, 28, 55,
1600   6, 23, 19, 14, 30,  3, 30, 28,
1601  28, 61, 61, 47, 45, 48, 40, 40,
1602  34, 34, 25, 30, 29, 35,  4, 26,
1603  53, 50, 26, 41, 27, 59, 27, 38,
1604  39,  3, 50, 43, 47, 23, 33, 55,
1605  35, 21, 23, 35, 61, 33, 46, 52,
1606  35, 34, 24, 30, 43, 16, 37, 21,
1607   2, 24, 45, 34, 30, 55, 55,  1,
1608  29, 29, 26, 28, 25, 31, 36, 22,
1609  17, 30, 52,  2, 44, 44, 57, 26,
1610  62, 41, 39, 57, 26, 46, 49, 11,
1611  16, 19,  5, 59, 38, 39, 58, 38,
1612  25, 49, 50, 22, 28, 59,  9, 59,
1613   7, 28, 55, 17,  4, 35, 50, 21,
1614  29, 44, 47, 18, 24, 19, 25, 42,
1615  35,  3, 51, 35, 16, 35, 30, 63,
1616  57, 39, 39, 25, 35, 38,  9, 16,
1617  36, 45, 31, 60, 14, 34, 42, 24,
1618   0, 37, 18, 61, 57, 37, 28, 53,
1619  20, 46, 14, 47, 38, 38, 38,  9,
1620  34, 39, 43, 17, 39, 59,  5, 27,
1621   0, 12, 27,
1622 };
1623
1624 static const uint8_t table1_mvy[1099] = {
1625  32, 32, 31, 31, 32, 33, 31, 33,
1626  33, 32, 32, 30, 34, 31, 32, 29,
1627  33, 30, 32, 33, 31, 35, 34, 30,
1628  34, 31, 33, 29, 29, 31, 33, 35,
1629  30, 30, 35, 32, 32, 34, 34, 28,
1630  25, 32, 36, 27, 32, 32, 32, 37,
1631  39,  3, 32, 30, 31, 26, 31, 32,
1632  32, 38, 29, 29, 32, 34, 31, 31,
1633  34, 35, 33, 33, 28, 33,  1, 33,
1634  27, 29, 30, 31, 28, 29, 37, 35,
1635  31, 33, 35, 27, 36, 37, 25, 25,
1636  61, 35,  4,  5, 32, 33, 36, 30,
1637  23, 30, 28, 34, 31, 32, 32, 39,
1638  32, 34, 21, 39, 32, 59, 32, 28,
1639  32, 36, 60, 33, 24, 36, 32, 32,
1640  41,  2, 32, 38, 26, 22, 33, 30,
1641  31, 32, 32, 30, 31, 32, 29,  3,
1642  40, 38, 32, 32, 33, 26, 31, 34,
1643  28, 38, 34, 31,  3, 31, 35, 38,
1644  27, 35, 33, 28, 29, 27, 29, 27,
1645  43, 29, 37, 63, 31, 33, 34, 30,
1646  31, 30, 37, 30, 35, 35, 26, 41,
1647  37, 31, 33, 28, 26, 30, 42, 24,
1648   7, 27, 33, 29, 36, 28, 34, 57,
1649  23, 41, 36, 23, 35, 34, 25, 30,
1650  25, 33, 25, 25, 29, 24, 33, 39,
1651  33, 33,  0, 37, 31, 36, 21, 32,
1652  61, 24, 35, 61, 31,  5, 31, 59,
1653  39, 21, 32, 30, 34, 22, 40, 32,
1654  29, 16, 31,  5, 62,  2, 20, 39,
1655  39, 32, 33,  1, 31, 24, 36, 32,
1656  36, 32, 28, 26,  6, 31, 38, 34,
1657  58, 35, 32, 33, 33, 17, 43, 26,
1658  31, 40, 31, 34, 32, 32, 31, 19,
1659  30, 32, 29, 33, 38, 38, 32, 59,
1660  40, 18, 38, 32, 35, 34, 32, 17,
1661   1, 15, 30, 28, 31, 28, 34, 29,
1662  32, 27, 35, 27, 49, 22, 37, 34,
1663  37, 26, 32, 32, 22, 28, 45, 29,
1664  30, 31, 43, 46, 41, 30, 26, 13,
1665  34, 32, 27, 38, 42, 42, 33, 47,
1666  33, 60, 27, 42, 25, 32, 22, 32,
1667  48, 32, 45, 33, 33, 41, 27, 25,
1668  19, 31, 35, 19, 36, 42, 27, 17,
1669  31, 44, 28, 33, 33, 31, 23, 31,
1670  40, 33, 31, 34, 30, 32, 33, 36,
1671  35, 47, 37, 41, 31, 23, 41, 29,
1672  30, 35, 32, 25, 32, 28, 58,  2,
1673  37, 33, 14, 33, 49, 20, 39, 36,
1674  21,  9, 23, 33, 35, 24, 39, 37,
1675  11, 33, 30, 31, 31, 28, 51, 40,
1676  35, 29, 25, 33, 46, 35, 37, 30,
1677  30,  8, 63, 28, 15, 40, 33, 45,
1678  49, 25, 32,  4, 47, 51, 36, 39,
1679  53, 10, 24, 29, 30, 31, 25, 40,
1680  38, 38, 33, 56, 23, 27, 32, 37,
1681  26, 29, 43, 36, 33, 24, 55, 43,
1682   9, 29, 34, 34, 24, 33, 18, 33,
1683  33, 30, 31, 50, 24, 60, 30, 39,
1684  34, 30, 39, 28, 22, 38,  2, 26,
1685  63, 32, 57, 21, 39, 33, 28, 18,
1686  30, 34, 22, 33, 29, 41, 30, 34,
1687  35, 21, 13, 34, 35, 39, 30, 46,
1688  32, 42, 32, 31, 33, 26, 11, 33,
1689  22, 31, 25, 31, 53, 27, 43, 25,
1690  40, 50, 21, 36, 38, 30, 12, 31,
1691  34, 20, 15, 29, 32, 62, 30, 13,
1692  17, 32, 19, 31, 20, 31, 30,  7,
1693   1, 17, 34, 37, 31, 31, 44, 34,
1694  26, 40, 16, 37, 52, 48, 30, 20,
1695  18, 33, 38, 29,  7, 25, 30, 54,
1696  45, 47, 46, 41, 29, 29, 16, 30,
1697  14, 26, 38, 34, 34, 29, 34, 30,
1698  29, 30, 57, 30,  4, 46, 33, 29,
1699  39, 44, 30, 31, 50, 33, 31, 32,
1700  19, 32, 40, 31, 37, 47,  1, 35,
1701  16, 31,  0, 35, 33,  1, 17, 34,
1702   9, 34, 33, 31, 49, 43, 42, 51,
1703  34, 29, 23, 29, 14, 30, 45, 49,
1704  11, 24, 31, 28, 35, 41, 30, 44,
1705  18, 29, 34, 35, 36, 25, 26, 21,
1706  31, 30, 34, 19, 34, 44, 36, 38,
1707  25, 31, 28, 23, 37,  3, 55, 41,
1708  30, 22, 41, 24, 33, 26, 35, 35,
1709  30, 55, 51, 47, 48, 38, 24, 15,
1710  21, 50, 25, 46, 30, 29, 10, 34,
1711  42, 45, 29, 42, 22,  3, 33, 27,
1712  34,  1, 34, 28, 34, 36, 35, 23,
1713  23, 13, 58,  3, 26, 63, 25, 31,
1714  34, 61, 38, 39, 25, 61, 29, 37,
1715  30, 41, 26, 48, 28, 33, 50, 35,
1716  30, 37, 29, 29, 40,  6, 39, 28,
1717  28, 19,  8, 22, 45, 34, 35, 10,
1718  58, 17, 37, 39, 30, 18, 54, 14,
1719  29, 16, 59, 30, 35, 23, 35, 30,
1720  47, 36, 29, 55, 20, 12, 31, 35,
1721  14, 29, 18, 34, 34, 24, 29, 26,
1722  22,  2, 27, 23,  8, 30, 55, 38,
1723  60, 31,  4, 34, 49, 34, 27, 34,
1724  33, 30, 31, 54, 42, 35, 38, 46,
1725  44, 26, 27,  9, 39, 25, 21, 29,
1726  28, 42, 13,  0,  5, 34, 37, 28,
1727  24, 29, 63, 26, 22, 27, 29, 25,
1728  33, 25, 61,  0, 35, 25, 36, 15,
1729  27, 40, 53, 33,  3, 10, 16, 37,
1730  38, 18, 30, 46, 27,  9,  6, 29,
1731  62,  8, 42, 28, 29,  3, 25, 16,
1732  26, 29, 35, 28, 27, 51, 61, 48,
1733  37,  9, 34,  7, 49, 45, 20, 29,
1734  21,  5,  5, 29, 28, 34, 29, 24,
1735  10, 24, 35, 36, 38, 55, 11, 36,
1736  38, 53, 54, 26, 30, 49, 20, 27,
1737  30, 39, 33, 41, 49, 22, 38, 38,
1738   4, 30,  8,  9,  3, 24, 22, 50,
1739  37, 36, 31, 27,  2,  9, 42, 63,
1740  25, 19, 44,  1, 28, 28, 48, 30,
1741  34, 41, 41, 38, 12, 27, 15,  0,
1742  16, 34, 35, 38, 28, 29, 40, 42,
1743  51, 52, 45, 54, 59, 59, 42, 44,
1744  37, 26, 46, 24, 15, 39, 22, 46,
1745  19, 35, 38, 17, 37, 23, 52, 55,
1746  50, 37, 26, 11, 37, 12, 24, 30,
1747  16, 13, 22, 13, 36, 35, 40, 41,
1748  34, 41, 26, 53, 51,  5, 21, 30,
1749   2, 63, 41, 20,  1, 56, 21, 24,
1750  25,  5, 28, 35, 26, 28, 30, 18,
1751  29, 23, 40, 34, 20, 42, 39, 34,
1752  28, 61, 38, 27, 62,  9, 36, 17,
1753   9, 49, 24, 25, 54, 34, 39, 37,
1754   3,  1, 25, 38, 38, 44, 35, 36,
1755  12, 60, 36, 38, 40, 25, 43, 39,
1756  53, 28, 39, 57, 46, 10, 52, 27,
1757  35, 42, 45, 59, 15, 60, 38, 24,
1758  23, 39, 12, 29, 24,  0, 20, 16,
1759  28, 43, 35, 28,  1, 49,  4, 21,
1760  42, 39, 29,  3, 44, 21, 53, 55,
1761  11,  5,  3, 39, 53, 28, 25, 19,
1762  34, 28, 21,
1763 };
1764
1765 /* motion vector table */
1766 typedef struct MVTable {
1767     int n;
1768     const uint16_t *table_mv_code;
1769     const uint8_t *table_mv_bits;
1770     const uint8_t *table_mvx;
1771     const uint8_t *table_mvy;
1772     uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */
1773     VLC vlc;                /* decoding: vlc */
1774 } MVTable;
1775
1776 static MVTable mv_tables[2] = {
1777     {
1778         1099,
1779         table0_mv_code,
1780         table0_mv_bits,
1781         table0_mvx,
1782         table0_mvy,
1783     },
1784     {
1785         1099,
1786         table1_mv_code,
1787         table1_mv_bits,
1788         table1_mvx,
1789         table1_mvy,
1790     }
1791 };
1792
1793 static const uint8_t v2_mb_type[8][2] = {
1794  {1, 1}, {0   , 2}, {3   , 3}, {9   , 5},
1795  {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
1796 };
1797
1798 static const uint8_t v2_intra_cbpc[4][2] = {
1799  {1, 1}, {0, 3}, {1, 3}, {1, 2},
1800 };
1801
1802 static uint8_t wmv1_y_dc_scale_table[32]={
1803 //  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1804     0, 8, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
1805 };
1806 static uint8_t wmv1_c_dc_scale_table[32]={
1807 //  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1808     0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
1809 };
1810
1811 static uint8_t old_ff_y_dc_scale_table[32]={
1812 //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1813     0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
1814 };
1815 static uint8_t old_ff_c_dc_scale_table[32]={
1816 //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1817     0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
1818 };
1819
1820
1821 #define WMV1_SCANTABLE_COUNT 4
1822
1823 static const uint8_t wmv1_scantable00[64]= {
1824 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 
1825 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 
1826 0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05, 
1827 0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A, 
1828 0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 
1829 0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34, 
1830 0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35, 
1831 0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F, 
1832 };
1833 static const uint8_t wmv1_scantable01[64]= {
1834 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 
1835 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 
1836 0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D, 
1837 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A, 
1838 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D, 
1839 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25, 
1840 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35, 
1841 0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F, 
1842 };
1843 static const uint8_t wmv1_scantable02[64]= {
1844 0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18, 
1845 0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20, 
1846 0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07, 
1847 0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 
1848 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D, 
1849 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E, 
1850 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35, 
1851 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, 
1852 };
1853 static const uint8_t wmv1_scantable03[64]= {
1854 0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09, 
1855 0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29, 
1856 0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13, 
1857 0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C, 
1858 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24, 
1859 0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E, 
1860 0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35, 
1861 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, 
1862 };
1863
1864 static const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={
1865     wmv1_scantable00,
1866     wmv1_scantable01,
1867     wmv1_scantable02,
1868     wmv1_scantable03,
1869 };
1870
1871 static const uint8_t table_inter_intra[4][2]={
1872     {0,1} /*Luma-Left Chroma-Left*/,
1873     {2,2} /*Luma-Top  Chroma-Left*/,
1874     {6,3} /*luma-Left Chroma-Top */,
1875     {7,3} /*luma-Top  Chroma-Top */
1876 };
1877
1878 #define WMV2_INTER_CBP_TABLE_COUNT 4
1879
1880 static const uint32_t table_mb_non_intra2[128][2] = {
1881 {0x0000A7, 14}, {0x01B2B8, 18}, {0x01B28E, 18}, {0x036575, 19}, 
1882 {0x006CAC, 16}, {0x000A69, 18}, {0x002934, 20}, {0x00526B, 21}, 
1883 {0x006CA1, 16}, {0x01B2B9, 18}, {0x0029AD, 20}, {0x029353, 24}, 
1884 {0x006CA7, 16}, {0x006CAB, 16}, {0x01B2BB, 18}, {0x00029B, 16}, 
1885 {0x00D944, 17}, {0x000A6A, 18}, {0x0149A8, 23}, {0x03651F, 19}, 
1886 {0x006CAF, 16}, {0x000A4C, 18}, {0x03651E, 19}, {0x000A48, 18}, 
1887 {0x00299C, 20}, {0x00299F, 20}, {0x029352, 24}, {0x0029AC, 20}, 
1888 {0x000296, 16}, {0x00D946, 17}, {0x000A68, 18}, {0x000298, 16}, 
1889 {0x000527, 17}, {0x00D94D, 17}, {0x0014D7, 19}, {0x036574, 19}, 
1890 {0x000A5C, 18}, {0x01B299, 18}, {0x00299D, 20}, {0x00299E, 20}, 
1891 {0x000525, 17}, {0x000A66, 18}, {0x00A4D5, 22}, {0x00149B, 19}, 
1892 {0x000295, 16}, {0x006CAD, 16}, {0x000A49, 18}, {0x000521, 17}, 
1893 {0x006CAA, 16}, {0x00D945, 17}, {0x01B298, 18}, {0x00052F, 17}, 
1894 {0x003654, 15}, {0x006CA0, 16}, {0x000532, 17}, {0x000291, 16}, 
1895 {0x003652, 15}, {0x000520, 17}, {0x000A5D, 18}, {0x000294, 16}, 
1896 {0x00009B, 11}, {0x0006E2, 12}, {0x000028, 12}, {0x0001B0, 10}, 
1897 {0x000001,  3}, {0x000010,  8}, {0x00002F,  6}, {0x00004C, 10}, 
1898 {0x00000D,  4}, {0x000000, 10}, {0x000006,  9}, {0x000134, 12}, 
1899 {0x00000C,  4}, {0x000007, 10}, {0x000007,  9}, {0x0006E1, 12}, 
1900 {0x00000E,  5}, {0x0000DA,  9}, {0x000022,  9}, {0x000364, 11}, 
1901 {0x00000F,  4}, {0x000006, 10}, {0x00000F,  9}, {0x000135, 12}, 
1902 {0x000014,  5}, {0x0000DD,  9}, {0x000004,  9}, {0x000015, 11}, 
1903 {0x00001A,  6}, {0x0001B3, 10}, {0x000005, 10}, {0x0006E3, 12}, 
1904 {0x00000C,  5}, {0x0000B9,  8}, {0x000004,  8}, {0x0000DB,  9}, 
1905 {0x00000E,  4}, {0x00000B, 10}, {0x000023,  9}, {0x0006CB, 12}, 
1906 {0x000005,  6}, {0x0001B1, 10}, {0x000001, 10}, {0x0006E0, 12}, 
1907 {0x000011,  5}, {0x0000DF,  9}, {0x00000E,  9}, {0x000373, 11}, 
1908 {0x000003,  5}, {0x0000B8,  8}, {0x000006,  8}, {0x000175,  9}, 
1909 {0x000015,  5}, {0x000174,  9}, {0x000027,  9}, {0x000372, 11}, 
1910 {0x000010,  5}, {0x0000BB,  8}, {0x000005,  8}, {0x0000DE,  9}, 
1911 {0x00000F,  5}, {0x000001,  9}, {0x000012,  8}, {0x000004, 10}, 
1912 {0x000002,  3}, {0x000016,  5}, {0x000009,  4}, {0x000001,  5}, 
1913 };
1914
1915 static const uint32_t table_mb_non_intra3[128][2] = {
1916 {0x0002A1, 10}, {0x005740, 15}, {0x01A0BF, 18}, {0x015D19, 17}, 
1917 {0x001514, 13}, {0x00461E, 15}, {0x015176, 17}, {0x015177, 17}, 
1918 {0x0011AD, 13}, {0x00682E, 16}, {0x0682F9, 20}, {0x03417D, 19}, 
1919 {0x001A36, 14}, {0x002A2D, 14}, {0x00D05E, 17}, {0x006824, 16}, 
1920 {0x001515, 13}, {0x00545C, 15}, {0x0230E9, 18}, {0x011AFA, 17}, 
1921 {0x0015D7, 13}, {0x005747, 15}, {0x008D79, 16}, {0x006825, 16}, 
1922 {0x002BA2, 14}, {0x00A8BA, 16}, {0x0235F6, 18}, {0x015D18, 17}, 
1923 {0x0011AE, 13}, {0x00346F, 15}, {0x008C3B, 16}, {0x00346E, 15}, 
1924 {0x000D1A, 13}, {0x00461F, 15}, {0x0682F8, 20}, {0x011875, 17}, 
1925 {0x002BA1, 14}, {0x008D61, 16}, {0x0235F7, 18}, {0x0230E8, 18}, 
1926 {0x001513, 13}, {0x008D7B, 16}, {0x011AF4, 17}, {0x011AF5, 17}, 
1927 {0x001185, 13}, {0x0046BF, 15}, {0x008D60, 16}, {0x008D7C, 16}, 
1928 {0x001512, 13}, {0x00461C, 15}, {0x00AE8D, 16}, {0x008D78, 16}, 
1929 {0x000D0E, 13}, {0x003413, 15}, {0x0046B1, 15}, {0x003416, 15}, 
1930 {0x000AEA, 12}, {0x002A2C, 14}, {0x005741, 15}, {0x002A2F, 14}, 
1931 {0x000158,  9}, {0x0008D2, 12}, {0x00054C, 11}, {0x000686, 12}, 
1932 {0x000000,  2}, {0x000069,  8}, {0x00006B,  8}, {0x00068C, 12}, 
1933 {0x000007,  3}, {0x00015E,  9}, {0x0002A3, 10}, {0x000AE9, 12}, 
1934 {0x000006,  3}, {0x000231, 10}, {0x0002B8, 10}, {0x001A08, 14}, 
1935 {0x000010,  5}, {0x0001A9, 10}, {0x000342, 11}, {0x000A88, 12}, 
1936 {0x000004,  4}, {0x0001A2, 10}, {0x0002A4, 10}, {0x001184, 13}, 
1937 {0x000012,  5}, {0x000232, 10}, {0x0002B2, 10}, {0x000680, 12}, 
1938 {0x00001B,  6}, {0x00046A, 11}, {0x00068E, 12}, {0x002359, 14}, 
1939 {0x000016,  5}, {0x00015F,  9}, {0x0002A0, 10}, {0x00054D, 11}, 
1940 {0x000005,  4}, {0x000233, 10}, {0x0002B9, 10}, {0x0015D6, 13}, 
1941 {0x000022,  6}, {0x000468, 11}, {0x000683, 12}, {0x001A0A, 14}, 
1942 {0x000013,  5}, {0x000236, 10}, {0x0002BB, 10}, {0x001186, 13}, 
1943 {0x000017,  5}, {0x0001AB, 10}, {0x0002A7, 10}, {0x0008D3, 12}, 
1944 {0x000014,  5}, {0x000237, 10}, {0x000460, 11}, {0x000D0F, 13}, 
1945 {0x000019,  6}, {0x0001AA, 10}, {0x0002B3, 10}, {0x000681, 12}, 
1946 {0x000018,  6}, {0x0001A8, 10}, {0x0002A5, 10}, {0x00068F, 12}, 
1947 {0x000007,  4}, {0x000055,  7}, {0x000047,  7}, {0x0000AD,  8}, 
1948 };
1949
1950 static const uint32_t table_mb_non_intra4[128][2] = {
1951 {0x0000D4,  8}, {0x0021C5, 14}, {0x00F18A, 16}, {0x00D5BC, 16}, 
1952 {0x000879, 12}, {0x00354D, 14}, {0x010E3F, 17}, {0x010F54, 17}, 
1953 {0x000866, 12}, {0x00356E, 14}, {0x010F55, 17}, {0x010E3E, 17}, 
1954 {0x0010CE, 13}, {0x003C84, 14}, {0x00D5BD, 16}, {0x00F18B, 16}, 
1955 {0x000868, 12}, {0x00438C, 15}, {0x0087AB, 16}, {0x00790B, 15}, 
1956 {0x000F10, 12}, {0x00433D, 15}, {0x006AD3, 15}, {0x00790A, 15}, 
1957 {0x001AA7, 13}, {0x0043D4, 15}, {0x00871E, 16}, {0x006ADF, 15}, 
1958 {0x000D7C, 12}, {0x003C94, 14}, {0x00438D, 15}, {0x006AD2, 15}, 
1959 {0x0006BC, 11}, {0x0021E9, 14}, {0x006ADA, 15}, {0x006A99, 15}, 
1960 {0x0010F7, 13}, {0x004389, 15}, {0x006ADB, 15}, {0x0078C4, 15}, 
1961 {0x000D56, 12}, {0x0035F7, 14}, {0x00438E, 15}, {0x006A98, 15}, 
1962 {0x000D52, 12}, {0x003C95, 14}, {0x004388, 15}, {0x00433C, 15}, 
1963 {0x000D54, 12}, {0x001E4B, 13}, {0x003C63, 14}, {0x003C83, 14}, 
1964 {0x000861, 12}, {0x0021EB, 14}, {0x00356C, 14}, {0x0035F6, 14}, 
1965 {0x000863, 12}, {0x00219F, 14}, {0x003568, 14}, {0x003C82, 14}, 
1966 {0x0001AE,  9}, {0x0010C0, 13}, {0x000F11, 12}, {0x001AFA, 13}, 
1967 {0x000000,  1}, {0x0000F0,  8}, {0x0001AD,  9}, {0x0010C1, 13}, 
1968 {0x00000A,  4}, {0x0003C5, 10}, {0x000789, 11}, {0x001AB5, 13}, 
1969 {0x000009,  4}, {0x000435, 11}, {0x000793, 11}, {0x001E40, 13}, 
1970 {0x00001D,  5}, {0x0003CB, 10}, {0x000878, 12}, {0x001AAF, 13}, 
1971 {0x00000B,  4}, {0x0003C7, 10}, {0x000791, 11}, {0x001AAB, 13}, 
1972 {0x00001F,  5}, {0x000436, 11}, {0x0006BF, 11}, {0x000F19, 12}, 
1973 {0x00003D,  6}, {0x000D51, 12}, {0x0010C4, 13}, {0x0021E8, 14}, 
1974 {0x000036,  6}, {0x000437, 11}, {0x0006AF, 11}, {0x0010C5, 13}, 
1975 {0x00000C,  4}, {0x000432, 11}, {0x000794, 11}, {0x001E30, 13}, 
1976 {0x000042,  7}, {0x000870, 12}, {0x000F24, 12}, {0x001E43, 13}, 
1977 {0x000020,  6}, {0x00043E, 11}, {0x000795, 11}, {0x001AAA, 13}, 
1978 {0x000037,  6}, {0x0006AC, 11}, {0x0006AE, 11}, {0x0010F6, 13}, 
1979 {0x000034,  6}, {0x00043A, 11}, {0x000D50, 12}, {0x001AAE, 13}, 
1980 {0x000039,  6}, {0x00043F, 11}, {0x00078D, 11}, {0x0010D2, 13}, 
1981 {0x000038,  6}, {0x00043B, 11}, {0x0006BD, 11}, {0x0010D3, 13}, 
1982 {0x000011,  5}, {0x0001AC,  9}, {0x0000F3,  8}, {0x000439, 11}, 
1983 };
1984
1985 static const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
1986     table_mb_non_intra2,
1987     table_mb_non_intra3,
1988     table_mb_non_intra4,
1989     table_mb_non_intra,
1990 };
1991
1992 static const uint8_t wmv2_scantableA[64]={
1993 0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
1994 0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
1995 0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
1996 0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
1997 };
1998
1999 static const uint8_t wmv2_scantableB[64]={
2000 0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
2001 0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A, 
2002 0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A, 
2003 0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
2004 };