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