Initial revision
[ffmpeg.git] / libavcodec / msmpeg4data.h
1 /*
2  * MSMPEG4 data tables. 
3  */
4
5 /* intra picture macro block coded block pattern */
6 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 #define NB_RL_TABLES  6
573
574 static RLTable rl_table[NB_RL_TABLES] = {
575     /* intra luminance tables */
576     {
577         132,
578         85,
579         table0_vlc,
580         table0_run,
581         table0_level,
582     },
583     {
584         185,
585         119,
586         table2_vlc,
587         table2_run,
588         table2_level,
589     },
590     {
591         102,
592         67,
593         intra_vlc,
594         intra_run,
595         intra_level,
596     },
597     /* intra chrominance / non intra tables */
598     {
599         148,
600         81,
601         table1_vlc,
602         table1_run,
603         table1_level,
604     },
605     {
606         168,
607         99,
608         table4_vlc,
609         table4_run,
610         table4_level,
611     },
612     {
613         102,
614         58,
615         inter_vlc,
616         inter_run,
617         inter_level,
618     },
619 };
620
621 /* motion vector table 0 */
622
623 const UINT16 table0_mv_code[1100] = {
624  0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
625  0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
626  0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
627  0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
628  0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
629  0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
630  0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
631  0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
632  0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
633  0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
634  0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
635  0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
636  0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
637  0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
638  0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
639  0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
640  0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
641  0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
642  0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
643  0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
644  0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
645  0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
646  0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
647  0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
648  0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
649  0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
650  0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
651  0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
652  0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
653  0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
654  0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
655  0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
656  0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
657  0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
658  0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
659  0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
660  0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
661  0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
662  0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
663  0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
664  0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
665  0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
666  0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
667  0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
668  0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
669  0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
670  0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
671  0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
672  0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
673  0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
674  0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
675  0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
676  0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
677  0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
678  0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
679  0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
680  0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
681  0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
682  0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
683  0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
684  0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
685  0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
686  0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
687  0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
688  0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
689  0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
690  0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
691  0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
692  0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
693  0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
694  0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
695  0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
696  0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
697  0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
698  0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
699  0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
700  0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
701  0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
702  0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
703  0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
704  0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
705  0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
706  0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
707  0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
708  0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
709  0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
710  0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
711  0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
712  0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
713  0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
714  0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
715  0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
716  0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
717  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
718  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
719  0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
720  0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
721  0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
722  0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
723  0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
724  0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
725  0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
726  0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
727  0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
728  0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
729  0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
730  0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
731  0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
732  0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
733  0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
734  0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
735  0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
736  0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
737  0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
738  0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
739  0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
740  0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
741  0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
742  0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
743  0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
744  0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
745  0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
746  0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
747  0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
748  0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
749  0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
750  0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
751  0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
752  0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
753  0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
754  0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
755  0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
756  0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
757  0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
758  0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
759  0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
760  0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
761  0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
762 };
763
764 const UINT8 table0_mv_bits[1100] = {
765   1,  4,  4,  4,  5,  5,  5,  6,
766   6,  6,  7,  7,  7,  8,  8,  8,
767   8,  8,  8,  8,  8,  8,  8,  8,
768   8,  9,  9,  9,  9,  9,  9,  9,
769   9,  9,  9,  9,  9, 10, 10, 10,
770  10, 10, 10, 10, 10, 10, 10, 10,
771  10, 10, 10, 10, 10, 10, 10, 10,
772  10, 10, 10, 10, 11, 11, 11, 11,
773  11, 11, 11, 11, 11, 11, 11, 11,
774  11, 11, 11, 11, 11, 11, 11, 11,
775  11, 11, 11, 11, 11, 11, 11, 11,
776  12, 12, 12, 12, 12, 12, 12, 12,
777  12, 12, 12, 12, 12, 12, 12, 12,
778  12, 12, 12, 12, 12, 12, 12, 12,
779  12, 12, 12, 12, 12, 12, 12, 12,
780  12, 12, 12, 12, 12, 12, 12, 12,
781  12, 12, 12, 12, 12, 12, 12, 12,
782  12, 12, 12, 13, 13, 13, 13, 13,
783  13, 13, 13, 13, 13, 13, 13, 13,
784  13, 13, 13, 13, 13, 13, 13, 13,
785  13, 13, 13, 13, 13, 13, 13, 13,
786  13, 13, 13, 13, 13, 13, 13, 13,
787  13, 13, 13, 13, 13, 13, 13, 13,
788  13, 13, 13, 13, 13, 13, 13, 13,
789  13, 13, 13, 13, 13, 13, 13, 13,
790  13, 13, 14, 14, 14, 14, 14, 14,
791  14, 14, 14, 14, 14, 14, 14, 14,
792  14, 14, 14, 14, 14, 14, 14, 14,
793  14, 14, 14, 14, 14, 14, 14, 14,
794  14, 14, 14, 14, 14, 14, 14, 14,
795  14, 14, 14, 14, 14, 14, 14, 14,
796  14, 14, 14, 14, 14, 14, 14, 14,
797  14, 14, 14, 14, 14, 14, 14, 14,
798  14, 14, 14, 14, 14, 14, 14, 14,
799  14, 14, 14, 14, 14, 14, 14, 14,
800  14, 14, 14, 14, 14, 14, 14, 14,
801  14, 14, 14, 14, 14, 14, 14, 14,
802  14, 14, 14, 14, 14, 14, 14, 14,
803  14, 15, 15, 15, 15, 15, 15, 15,
804  15, 15, 15, 15, 15, 15, 15, 15,
805  15, 15, 15, 15, 15, 15, 15, 15,
806  15, 15, 15, 15, 15, 15, 15, 15,
807  15, 15, 15, 15, 15, 15, 15, 15,
808  15, 15, 15, 15, 15, 15, 15, 15,
809  15, 15, 15, 15, 15, 15, 15, 15,
810  15, 15, 15, 15, 15, 15, 15, 15,
811  15, 15, 15, 15, 15, 15, 15, 15,
812  15, 15, 15, 15, 15, 15, 15, 15,
813  15, 15, 15, 15, 15, 15, 15, 15,
814  15, 15, 15, 15, 15, 15, 15, 15,
815  15, 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, 16, 16, 16, 16,
824  16, 16, 16, 16, 16, 16, 16, 16,
825  16, 16, 16, 16, 16, 16, 16, 16,
826  16, 16, 16, 16, 16, 16, 16, 16,
827  16, 16, 16, 16, 16, 16, 16, 16,
828  16, 16, 16, 16, 16, 16, 16, 16,
829  16, 16, 16, 16, 16, 16, 16, 16,
830  16, 16, 16, 16, 16, 16, 16, 16,
831  16, 16, 16, 16, 16, 16, 16, 16,
832  16, 16, 16, 16, 16, 16, 16, 16,
833  16, 16, 16, 16, 16, 16, 16, 16,
834  16, 16, 16, 16, 16, 16, 16, 16,
835  16, 16, 16, 16, 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, 17, 17, 17, 17, 17, 17, 17,
855  17, 17, 17, 17, 17, 17, 17, 17,
856  17, 17, 17, 17, 17, 17, 17, 17,
857  17, 17, 17, 17, 17, 17, 17, 17,
858  17, 17, 17, 17, 17, 17, 17, 17,
859  17, 17, 17, 17, 17, 17, 17, 17,
860  17, 17, 17, 17, 17, 17, 17, 17,
861  17, 17, 17, 17, 17, 17, 17, 17,
862  17, 17, 17, 17, 17, 17, 17, 17,
863  17, 17, 17, 17, 17, 17, 17, 17,
864  17, 17, 17, 17, 17, 17, 17, 17,
865  17, 17, 17, 17, 17, 17, 17, 17,
866  17, 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,  8,
903 };
904
905 const UINT8 table0_mvx[1099] = {
906  32, 32, 31, 32, 33, 31, 33, 31,
907  33, 32, 34, 32, 30, 32, 31, 34,
908  35, 32, 34, 33, 29, 33, 30, 30,
909  31, 31, 35, 29, 33, 35, 33, 34,
910  31, 29, 30, 34, 30, 36, 28, 32,
911  34, 37, 30, 27, 32, 25, 39, 32,
912  34, 32, 35, 35, 35, 31, 35, 29,
913  32, 29, 30, 29, 37, 27, 36, 38,
914  37, 33, 32, 31, 29, 31, 28, 36,
915  33, 30, 34, 33, 33, 28, 27, 25,
916  31, 26, 39, 32, 32, 31, 33, 39,
917  31, 38, 28, 36, 21, 23, 43, 36,
918  34, 41, 30, 25, 28, 31, 30, 34,
919  38, 35, 61, 34, 28, 30, 37, 37,
920  35, 27, 36,  3, 59, 38, 37, 32,
921  31, 29, 26, 33, 37, 33, 27, 27,
922  35, 34, 34, 40, 42, 33, 32, 29,
923   4,  5, 28, 24, 25, 35, 39, 38,
924  32, 23, 27, 32, 30, 35, 26, 34,
925  60, 36, 29, 22, 26, 41,  7, 30,
926  38, 30, 36, 29, 30, 41, 26, 25,
927  32, 34, 24, 39,  1, 25, 39, 32,
928  28, 29, 32, 38, 26, 36, 28, 63,
929  28, 39, 23, 21, 26, 35, 31, 35,
930  57, 31, 29, 29, 28, 30, 27, 35,
931   2, 38, 40, 34, 37, 29, 38, 43,
932  26, 32, 33, 42, 24, 40, 28, 32,
933  32, 32, 36, 32, 43, 25, 21, 31,
934  30, 31, 41, 29, 33, 37, 26, 37,
935  27, 59, 23, 33, 35, 31, 31, 37,
936  38, 39, 32, 23, 32, 27, 37, 36,
937  31, 40, 25, 27, 38, 31, 36, 28,
938  31, 36, 25, 45,  3, 34, 38, 39,
939  40, 38, 30, 32, 19, 24, 25, 26,
940  45, 20, 24, 33, 33, 31, 41, 34,
941  39, 47, 40, 58, 59, 41, 33,  3,
942  17, 61, 42, 30, 26, 29, 36, 61,
943  33, 37, 62, 28, 25, 38, 25, 38,
944  17, 23, 34, 33, 21, 33, 49, 27,
945  32, 23, 27, 22, 24, 22, 39, 43,
946  27, 37,  6, 42, 47, 26, 30, 31,
947  41, 39, 33, 22, 45, 36, 32, 45,
948  19, 22, 30,  5,  5, 17, 29, 22,
949  31, 31, 43, 37, 27, 32, 32, 32,
950  33, 34, 43, 35, 29, 26, 22, 32,
951  19, 32, 25, 31, 41, 49, 28, 34,
952  28, 39, 34, 19, 37, 38, 29, 21,
953  36, 42, 24, 48, 16, 28, 49, 22,
954  34, 31, 38, 39, 44, 11, 35, 30,
955  33, 33, 23, 28, 33, 46, 15, 13,
956  24, 41, 24, 34, 34, 30, 26, 24,
957  14, 60, 21, 29, 39, 23, 35, 37,
958  63, 45, 33, 34, 47, 41, 22, 42,
959  35, 35, 23, 32, 35, 43, 32,  7,
960  31, 41, 20, 31, 16, 13, 63, 25,
961  30, 32, 35, 30, 30, 31, 42, 47,
962  39, 38, 40, 40, 51, 55, 56, 18,
963  21, 39, 39, 33, 17, 41, 23, 24,
964  43, 25, 31, 20, 19, 45,  1, 34,
965  31, 22, 35, 15, 46, 46, 35, 31,
966  28, 29, 29, 23, 41, 27, 14, 53,
967  53, 27, 24, 32, 57, 32, 17, 42,
968  37, 29, 33,  1, 25, 32, 32, 63,
969  26, 40, 44, 36, 31, 39, 20, 20,
970  44, 23, 33, 34, 35, 33, 33, 28,
971  41, 23, 41, 41, 29, 25, 26, 49,
972  29, 24, 37, 49, 50, 51, 51, 26,
973  39, 25, 26, 15, 39, 18, 42, 17,
974   4, 31, 32, 32, 60,  1, 42, 32,
975   0, 12, 19, 35, 21, 41, 17, 26,
976  20, 45, 46, 32, 37, 22, 47, 29,
977  31, 27, 29, 30, 21, 33, 35, 18,
978  25, 33, 50, 51, 42,  2, 15, 51,
979  53, 33, 25, 29, 55, 37, 38, 33,
980  38, 59, 38, 33, 39, 13, 32, 40,
981  61, 61, 32,  9, 44,  3, 31, 29,
982  25, 31, 27, 23,  9, 25,  9, 29,
983  20, 30, 30, 42, 18, 28, 25, 28,
984  28, 21, 29, 43, 29, 43, 26, 44,
985  44, 21, 38, 21, 24, 45, 45, 35,
986  39, 22, 35, 36, 34, 34, 45, 34,
987  29, 31, 46, 25, 46, 16, 17, 31,
988  20, 32, 47, 47, 47, 32, 49, 49,
989  49, 31,  1, 27, 28, 39, 39, 21,
990  36, 23, 51,  2, 40, 51, 32, 53,
991  24, 30, 24, 30, 21, 40, 57, 57,
992  31, 41, 58, 32, 12,  4, 32, 34,
993  59, 31, 32, 13,  9, 35, 26, 35,
994  37, 61, 37, 63, 26, 29, 41, 38,
995  23, 20, 41, 26, 41, 42, 42, 42,
996  26, 26, 26, 26,  1, 26, 37, 37,
997  37, 23, 34, 42, 27, 43, 34, 27,
998  31, 24, 33, 16,  3, 31, 24, 33,
999  24,  4, 44, 44, 11, 44, 31, 13,
1000  13, 44, 45, 13, 25, 22, 38, 26,
1001  38, 38, 39, 32, 30, 39, 30, 22,
1002  32, 26, 30, 47, 47, 47, 19, 47,
1003  30, 31, 35,  8, 23, 47, 47, 27,
1004  35, 47, 31, 48, 35, 19, 36, 49,
1005  49, 33, 31, 39, 27, 39, 49, 49,
1006  50, 50, 50, 39, 31, 51, 51, 39,
1007  28, 33, 33, 21, 40, 31, 52, 53,
1008  40, 53,  9, 33, 31, 53, 54, 54,
1009  54, 55, 55, 34, 15, 56, 25, 56,
1010  21, 21, 40, 40, 25, 40, 58, 36,
1011   5, 41, 41, 12, 60, 41, 41, 37,
1012  22, 61, 18, 29, 29, 30, 61, 30,
1013  61, 62, 62, 30, 30, 63, 18, 13,
1014  30, 23, 19, 20, 20, 41, 13,  2,
1015   5,  5,  1,  5, 32,  6, 32, 35,
1016  20, 35, 27, 35, 35, 36, 36, 13,
1017  36, 41, 41, 41,  3, 30, 42, 27,
1018  20, 30, 27, 28, 30, 21, 33, 33,
1019  14, 24, 30, 42, 24, 33, 25, 42,
1020  43, 14, 43, 43, 14, 43,  7, 36,
1021  37, 37, 37, 37,  7, 14, 25, 43,
1022  43, 44, 15, 37,  7,  7,  3,  1,
1023   8, 15, 15,  8, 44, 44, 44, 45,
1024  45, 45, 45,  8,  8, 45, 21, 45,
1025  28, 28, 28, 21, 28, 28, 22, 37,
1026  46, 46, 37,  8, 29, 37, 29, 22,
1027  46, 37, 22, 29, 47, 47, 38, 38,
1028  16, 38, 38, 33, 38, 22, 47, 47,
1029  29, 25, 16,  0, 48,  1, 34, 48,
1030  48, 34, 25, 26, 26, 49, 49, 26,
1031   1, 49,  4, 26,  4, 49,  1,  9,
1032  49, 49, 49, 10, 49, 17, 38, 17,
1033  17, 50, 38, 50, 50, 22, 38, 51,
1034  38, 38, 51, 39, 39, 18, 22, 39,
1035  51, 22, 52, 52, 52, 39, 53, 53,
1036  10, 23, 18, 29, 10, 53, 29, 54,
1037  11, 54, 11, 11, 55,  1, 18, 55,
1038  55, 55, 55, 55, 55, 29, 34, 18,
1039  29, 56, 56, 34, 57, 34, 34, 29,
1040  29, 57, 57, 35, 35, 35, 35, 35,
1041  39, 35, 59, 59, 18, 59, 39, 30,
1042  18, 40, 60, 60, 61, 30, 18, 61,
1043  61, 19, 19,
1044 };
1045
1046 const UINT8 table0_mvy[1099] = {
1047  32, 31, 32, 33, 32, 31, 31, 33,
1048  33, 34, 32, 30, 32, 35, 34, 31,
1049  32, 29, 33, 30, 32, 34, 33, 31,
1050  30, 35, 31, 31, 29, 33, 35, 30,
1051  29, 33, 34, 34, 30, 32, 32, 36,
1052  29, 32, 35, 32, 28, 32, 32, 27,
1053  35, 37, 34, 29, 30, 36, 35, 34,
1054  25, 30, 29, 35, 33, 31, 31, 32,
1055  31, 28, 39, 28, 29, 37, 31, 33,
1056  27, 36, 28, 36, 37, 33, 33, 31,
1057  27, 32, 31, 38, 26, 25, 25, 33,
1058  39, 31, 34, 30, 32, 32, 32, 34,
1059  36, 32, 28, 33, 30, 38, 37, 27,
1060  33, 28, 32, 37, 35, 38, 29, 34,
1061  27, 29, 29, 32, 32, 34, 35,  3,
1062  26, 36, 31, 38, 30, 26, 35, 34,
1063  37, 26, 25, 32, 32, 39, 23, 37,
1064  32, 32, 29, 32, 29, 36, 29, 30,
1065  41, 31, 30, 21, 39, 25, 34, 38,
1066  32, 35, 39, 32, 33, 33, 32, 27,
1067  29, 25, 28, 27, 26, 31, 30, 35,
1068  24, 24, 31, 34, 32, 30, 35, 40,
1069  28, 38,  5, 35, 29, 36, 36, 32,
1070  38, 30, 33, 31, 35, 26, 23, 38,
1071  32, 41, 28, 25, 37, 40, 37, 39,
1072  32, 36, 33, 39, 25, 26, 28, 31,
1073  28, 42, 23, 31, 33, 31, 39,  1,
1074  59, 22, 27,  4, 33, 34, 33, 24,
1075  41,  3, 35, 41, 41, 28, 36, 36,
1076  28, 33, 35, 21, 23, 21, 22, 37,
1077  27, 27, 43, 29, 60, 39, 27, 25,
1078  59, 34, 27, 27, 26, 40, 37, 27,
1079  61, 26, 39, 33, 31, 22, 37, 25,
1080  30, 25, 24, 61, 31, 34, 25, 38,
1081  32, 32, 30,  3, 61, 43, 29, 23,
1082  28, 32, 28, 32, 31, 34,  5, 33,
1083  32, 33, 33, 42, 37, 23, 38, 31,
1084  40, 26, 32, 26, 37, 38, 36, 24,
1085  29, 30, 20, 22, 29, 24, 32, 41,
1086   2, 34, 25, 33, 29, 31, 39, 35,
1087  36, 24, 32, 30, 33, 27, 44, 60,
1088  30, 36, 19, 34, 31, 24, 16, 35,
1089  32, 38, 21, 33, 31, 31, 21, 35,
1090   5, 17, 29, 38, 38, 18, 58, 19,
1091  43, 41, 30, 41, 43, 39, 29,  7,
1092  29, 17, 28, 19, 28, 31, 25, 19,
1093  40, 26, 21, 33, 39, 23, 40, 30,
1094  39, 34, 35, 32, 32, 24, 33, 30,
1095  40, 47, 39, 37, 32, 33, 24, 23,
1096  45, 47, 27, 23, 42, 32, 32, 33,
1097  36, 37, 37, 17, 18, 22, 40, 38,
1098  32, 31, 35, 24, 17, 25, 17, 23,
1099  33, 34, 51, 42, 31, 36, 36, 29,
1100  21, 22, 37, 44, 43, 25, 47, 33,
1101  45, 27, 31, 58, 31, 32, 31, 38,
1102  43, 20, 47, 45, 54,  1, 26, 34,
1103  38, 14, 22, 24, 33, 34, 32, 32,
1104  37, 21, 23, 49, 35, 23, 28, 39,
1105  39, 23, 55, 33, 30, 30, 63, 16,
1106  42, 28, 13, 33, 33, 35, 19, 46,
1107  43, 17, 19, 36, 39, 24, 31, 32,
1108  33, 26, 28, 62, 33, 63, 33, 39,
1109  19, 49, 17, 31, 43, 13, 15, 29,
1110  25, 35, 33, 23, 49, 41, 28, 29,
1111  34, 38,  7, 61, 11, 50, 13, 41,
1112  19, 47, 25, 26, 15, 42, 41, 29,
1113  45, 27, 17, 35, 32, 29, 32, 24,
1114  13, 26, 26, 31, 24, 33, 28, 30,
1115  31, 11, 45, 46, 33, 33, 35, 57,
1116  32, 32, 35, 45, 34, 11, 37, 42,
1117  39, 37, 31, 49, 21, 27, 29, 47,
1118  53, 40, 51, 16, 26,  1, 40, 30,
1119  41, 44, 34, 25, 27, 31, 35, 35,
1120  31, 15, 49,  1, 35, 40,  5, 58,
1121  21, 29, 22, 59, 45, 31,  9, 26,
1122   9, 29, 11, 32, 30,  3, 13, 20,
1123  18, 20, 11,  3, 29, 40, 31, 53,
1124  30, 17, 20, 37, 31, 42, 47, 47,
1125  54, 38,  9, 34, 13, 37, 21, 25,
1126  27, 43, 42, 45, 40, 25, 27, 46,
1127  22, 25, 53, 20,  2, 14, 39, 15,
1128  22, 44, 34, 21, 38, 33, 27, 48,
1129  34, 52, 35, 47, 49, 54,  2, 13,
1130  23, 52, 29, 45, 22, 49, 54, 21,
1131  40, 42, 31, 30, 29, 34,  0, 25,
1132  23, 51, 24, 59, 28, 38, 29, 31,
1133   2, 13, 31,  8, 31, 33, 12, 45,
1134  41,  7, 14, 30, 25, 18, 43, 20,
1135  43, 35, 44,  1, 49, 42, 42, 18,
1136  41, 38, 41, 44, 53, 11, 20, 25,
1137  45, 46, 47, 48, 39, 52, 46, 49,
1138  63, 55, 44, 38, 13, 13, 57, 22,
1139  51, 16, 12, 28, 35, 57, 25, 20,
1140  26, 28, 28, 29, 32, 31, 62, 34,
1141  35, 35, 19, 49, 48, 39, 40, 18,
1142  43, 46, 11,  6, 48, 19, 49, 41,
1143  10, 23, 58, 17, 21, 23, 34, 30,
1144  60,  0, 44, 34, 26, 37, 46, 43,
1145  49, 59,  4, 34, 59, 37, 22, 25,
1146  28, 46,  6, 40, 59, 42, 36, 61,
1147  28, 30, 31, 43, 10, 22, 23, 47,
1148  20, 52, 55, 36, 25, 16,  1, 11,
1149  27, 29,  5, 63, 18, 41, 31, 34,
1150  38,  1,  5, 13, 28, 31, 17, 38,
1151  39, 41, 36, 37, 22, 39, 33, 43,
1152  43, 15, 17, 49, 30, 21, 22, 20,
1153  10, 17, 25, 54, 57,  3, 34,  8,
1154  36, 25, 31, 14, 15, 19, 29, 25,
1155  18, 39, 53, 22, 27, 20, 29, 33,
1156  41, 42, 35, 62, 50, 29, 53, 50,
1157  35, 55, 42, 61, 63,  4,  7, 42,
1158  21, 46, 47, 49, 27, 46, 17, 55,
1159  41, 50, 63,  4, 56, 18,  8, 10,
1160  18, 51, 63, 36, 55, 18,  5, 55,
1161   9, 29, 17, 21, 30, 27,  1, 59,
1162   7, 11, 12, 15,  5, 42, 24, 41,
1163  43,  7, 27, 22, 25, 31, 30, 37,
1164  22, 39, 53, 29, 36, 37, 48,  0,
1165   5, 13, 17, 31, 32, 26, 46, 28,
1166  44, 45, 46, 53, 49, 51,  3, 41,
1167   3, 22, 42, 33,  5, 45,  7, 22,
1168  40, 53, 24, 14, 25, 27, 10, 12,
1169  34, 16, 17, 53, 20, 26, 39, 45,
1170  18, 45, 35, 33, 31, 49,  4, 39,
1171  42, 11, 51,  5, 13, 26, 27, 17,
1172  52, 30,  0, 22, 12, 34, 62, 36,
1173  38, 41, 47, 30, 63, 38, 41, 43,
1174  59, 33, 45, 37, 38, 40, 47, 24,
1175  48, 49, 30,  1, 10, 22, 49, 15,
1176  39, 59, 31, 32, 33, 18, 13, 15,
1177  31, 21, 27, 44, 42, 39, 46, 17,
1178  26, 32, 30, 31,  0, 30, 34,  9,
1179  12, 13, 25, 31, 32, 55, 43, 35,
1180  61, 33, 35, 46, 25, 47, 48, 62,
1181  63, 38, 61,  1,  2,  5,  7,  9,
1182  46, 10, 34, 35, 36, 55, 51,  7,
1183  40, 23, 34, 37,  5, 13, 42, 18,
1184  25, 27, 28,
1185 };
1186
1187 /* motion vector table 1 */
1188 const UINT16 table1_mv_code[1100] = {
1189  0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1190  0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1191  0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1192  0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1193  0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1194  0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
1195  0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
1196  0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
1197  0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
1198  0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
1199  0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
1200  0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
1201  0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
1202  0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
1203  0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
1204  0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
1205  0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
1206  0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
1207  0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
1208  0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
1209  0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
1210  0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
1211  0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
1212  0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
1213  0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
1214  0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
1215  0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
1216  0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
1217  0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
1218  0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
1219  0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
1220  0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
1221  0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
1222  0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
1223  0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
1224  0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
1225  0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
1226  0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
1227  0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
1228  0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
1229  0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
1230  0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
1231  0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
1232  0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
1233  0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
1234  0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
1235  0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
1236  0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
1237  0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
1238  0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
1239  0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
1240  0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
1241  0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
1242  0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
1243  0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
1244  0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
1245  0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
1246  0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
1247  0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
1248  0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
1249  0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
1250  0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
1251  0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
1252  0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
1253  0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
1254  0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
1255  0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
1256  0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
1257  0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
1258  0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
1259  0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
1260  0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
1261  0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
1262  0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
1263  0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
1264  0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
1265  0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
1266  0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
1267  0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
1268  0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
1269  0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
1270  0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
1271  0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
1272  0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
1273  0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
1274  0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
1275  0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
1276  0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
1277  0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
1278  0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
1279  0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
1280  0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
1281  0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
1282  0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
1283  0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
1284  0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
1285  0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
1286  0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
1287  0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
1288  0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
1289  0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
1290  0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
1291  0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
1292  0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
1293  0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
1294  0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
1295  0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
1296  0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
1297  0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
1298  0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
1299  0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
1300  0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
1301  0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
1302  0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
1303  0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
1304  0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
1305  0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
1306  0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
1307  0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
1308  0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
1309  0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
1310  0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
1311  0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
1312  0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
1313  0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
1314  0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
1315  0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
1316  0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
1317  0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
1318  0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
1319  0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
1320  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
1321  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
1322  0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
1323  0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
1324  0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1325  0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1326  0x2473, 0x26a2, 0x26a3, 0x000b,
1327 };
1328
1329 const UINT8 table1_mv_bits[1100] = {
1330   2,  4,  4,  4,  5,  5,  5,  5,
1331   6,  6,  7,  7,  7,  7,  7,  8,
1332   8,  8,  8,  8,  8,  8,  8,  8,
1333   8,  8,  8,  8,  8,  8,  8,  8,
1334   8,  9,  9,  9,  9,  9,  9,  9,
1335   9,  9,  9,  9,  9,  9,  9,  9,
1336   9,  9,  9,  9,  9, 10, 10, 10,
1337  10, 10, 10, 10, 10, 10, 10, 10,
1338  10, 10, 10, 10, 10, 10, 10, 10,
1339  10, 10, 10, 10, 10, 10, 10, 10,
1340  10, 10, 10, 10, 10, 10, 10, 10,
1341  10, 10, 10, 10, 10, 10, 10, 10,
1342  10, 10, 10, 10, 10, 10, 10, 10,
1343  10, 10, 10, 10, 10, 10, 10, 10,
1344  10, 10, 10, 11, 11, 11, 11, 11,
1345  11, 11, 11, 11, 11, 11, 11, 11,
1346  11, 11, 11, 11, 11, 11, 11, 11,
1347  11, 11, 11, 11, 11, 11, 11, 11,
1348  11, 11, 11, 11, 11, 11, 11, 11,
1349  11, 11, 11, 11, 11, 11, 11, 11,
1350  11, 11, 11, 11, 11, 11, 11, 11,
1351  11, 11, 11, 11, 11, 11, 11, 11,
1352  11, 11, 11, 11, 11, 11, 11, 11,
1353  11, 11, 11, 11, 11, 11, 11, 11,
1354  11, 11, 11, 12, 12, 12, 12, 12,
1355  12, 12, 12, 12, 12, 12, 12, 12,
1356  12, 12, 12, 12, 12, 12, 12, 12,
1357  12, 12, 12, 12, 12, 12, 12, 12,
1358  12, 12, 12, 12, 12, 12, 12, 12,
1359  12, 12, 12, 12, 12, 12, 12, 12,
1360  12, 12, 12, 12, 12, 12, 12, 12,
1361  12, 12, 12, 12, 12, 12, 12, 12,
1362  12, 12, 12, 12, 12, 12, 12, 12,
1363  12, 12, 12, 12, 12, 12, 12, 12,
1364  12, 12, 12, 12, 12, 12, 12, 12,
1365  12, 12, 12, 12, 12, 12, 12, 12,
1366  12, 12, 12, 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, 13, 13, 13, 13, 13, 13,
1372  13, 13, 13, 13, 13, 13, 13, 13,
1373  13, 13, 13, 13, 13, 13, 13, 13,
1374  13, 13, 13, 13, 13, 13, 13, 13,
1375  13, 13, 13, 13, 13, 13, 13, 13,
1376  13, 13, 13, 13, 13, 13, 13, 13,
1377  13, 13, 13, 13, 13, 13, 13, 13,
1378  13, 13, 13, 13, 13, 13, 13, 13,
1379  13, 13, 13, 13, 13, 13, 13, 13,
1380  13, 13, 13, 13, 13, 13, 13, 13,
1381  13, 13, 13, 13, 13, 13, 13, 13,
1382  13, 13, 13, 13, 13, 13, 13, 13,
1383  13, 13, 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, 14,
1407  14, 14, 14, 14, 14, 14, 14, 14,
1408  14, 14, 14, 14, 14, 14, 14, 14,
1409  14, 14, 14, 14, 14, 14, 14, 14,
1410  14, 14, 14, 14, 14, 14, 14, 14,
1411  14, 14, 14, 14, 14, 14, 14, 14,
1412  14, 14, 14, 14, 14, 14, 14, 14,
1413  14, 14, 14, 14, 14, 14, 14, 14,
1414  14, 14, 14, 14, 14, 14, 14, 14,
1415  14, 14, 14, 14, 14, 14, 14, 14,
1416  14, 14, 14, 14, 14, 14, 14, 14,
1417  14, 14, 14, 14, 14, 14, 14, 14,
1418  14, 14, 14, 14, 14, 14, 14, 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, 15,
1461  15, 15, 15, 15, 15, 15, 15, 15,
1462  15, 15, 15, 15, 15, 15, 15, 15,
1463  15, 15, 15, 15, 15, 15, 15, 15,
1464  15, 15, 15, 15, 15, 15, 15, 15,
1465  15, 15, 15, 15, 15, 15, 15, 15,
1466  15, 15, 15, 15, 15, 15, 15, 15,
1467  15, 15, 15,  4,
1468 };
1469
1470 const UINT8 table1_mvx[1099] = {
1471  32, 31, 32, 31, 33, 32, 33, 33,
1472  31, 34, 30, 32, 32, 34, 35, 32,
1473  34, 33, 29, 30, 30, 32, 31, 31,
1474  33, 35, 35, 33, 31, 29, 29, 33,
1475  34, 30, 31, 28, 36, 30, 34, 32,
1476  32, 37, 32, 32, 25, 27, 39, 32,
1477  32, 32, 38, 35, 36, 32, 37, 61,
1478  26, 32, 34, 35,  3, 35, 27, 28,
1479  29, 34, 28, 37, 31, 36, 32, 27,
1480  31, 30, 29, 39, 33, 29, 33, 35,
1481  25, 25, 29, 33, 31, 31, 31, 33,
1482  32, 30, 32, 32, 41, 39, 33, 36,
1483  32, 28, 34, 36, 38, 24, 60, 31,
1484  23, 28, 32, 33, 59, 32, 40, 30,
1485   5, 34, 32, 38, 32, 30, 43,  4,
1486  32, 32, 42, 31, 31, 32, 26, 38,
1487  26, 22, 21, 37, 61, 63, 37, 31,
1488  32, 33,  2,  1, 23, 33, 41, 27,
1489  35, 30, 38, 23, 33,  3, 28, 34,
1490  34, 27, 41, 29, 39, 35, 36, 29,
1491  32, 27, 30, 32, 24, 61, 37, 26,
1492  59, 25, 35, 27, 36, 37, 30, 31,
1493  34, 40,  3, 28, 34, 39, 32, 31,
1494  32, 30, 24, 28, 35, 36, 26, 32,
1495  31, 33, 29, 33, 39, 25, 30, 24,
1496  35, 59, 29, 34, 25, 30, 21, 35,
1497  43, 40, 32, 29,  5, 28, 31, 62,
1498  33, 33, 25, 31, 21, 31, 43, 31,
1499  34, 33, 20, 40, 39, 31, 31, 57,
1500  38, 32, 42, 33, 32, 31, 32, 29,
1501  30, 44,  5, 31, 22, 34, 36, 17,
1502  38, 58, 38, 35, 32, 60, 35, 24,
1503  32, 38, 16, 45, 42, 32, 31, 29,
1504   4, 30, 17, 40, 46, 48, 63, 32,
1505  42, 19, 41, 22, 28, 36, 45, 33,
1506  33, 32, 29,  7, 41, 42, 18, 33,
1507  33, 32, 22, 37,  1, 26, 22, 23,
1508  49, 28, 26, 27, 32, 33, 27, 23,
1509  28, 36, 15,  6, 34, 27, 31, 26,
1510  23,  2, 33, 32, 34, 41, 28, 32,
1511  41,  0, 36, 38, 34, 31, 47, 32,
1512  17, 31, 39, 33, 37, 51, 30, 47,
1513  32, 50, 32, 19, 63, 30, 25, 27,
1514  33, 62, 24, 31, 27, 30, 37, 31,
1515  45, 32, 39, 20, 46, 47, 35, 19,
1516  34,  1, 49, 21, 21, 14, 51, 26,
1517  23, 31, 36, 35, 58, 29, 29, 21,
1518  20, 42, 13, 28, 12, 40, 31, 33,
1519  39, 60, 32, 44, 33, 31, 28, 37,
1520  29, 32, 30, 49, 43, 28, 39, 25,
1521  32, 48,  2, 15, 20, 25, 31, 28,
1522  21, 24, 25, 15, 31, 17, 37, 43,
1523  18, 32, 33, 24, 33, 36, 13, 33,
1524  31, 39, 11, 31, 33, 32, 39, 37,
1525  32, 32, 29, 17, 44, 46, 36, 35,
1526  26, 37, 58, 32, 34, 38,  8, 38,
1527  38, 22, 29, 25, 16, 35, 32, 35,
1528  33, 43, 18, 46, 38, 50, 33, 18,
1529  53, 60, 13, 32, 36, 33, 51, 36,
1530  43, 45, 27, 42, 29, 24, 30, 25,
1531  31, 52, 31, 35, 38,  9, 22, 34,
1532   4, 17, 28, 55, 42, 25, 17, 20,
1533  47, 34, 33, 16, 40, 25, 16, 30,
1534  53, 29, 10, 11, 14, 26, 33,  4,
1535  35, 44, 26, 16, 31, 26, 34, 38,
1536  29, 31, 30, 24, 22, 61, 32,  9,
1537  45, 34, 31, 19,  9, 31, 46, 31,
1538  35, 54, 29, 57, 30, 50,  3, 31,
1539  63, 34, 47, 41, 51, 18, 31, 14,
1540  37, 38, 31, 24, 32, 31, 50, 33,
1541  31, 54, 27,  9, 33, 23, 19, 32,
1542  29, 29, 33, 28, 47, 49, 30, 47,
1543  33, 27, 25, 54, 44, 45, 50, 58,
1544  51, 48, 33, 59, 33, 34, 57, 13,
1545  26, 33, 13, 48, 30, 11,  7, 56,
1546  34, 55, 26,  0, 26, 35,  1, 51,
1547  33, 53, 31, 45, 12, 29, 29, 51,
1548  31, 48,  2,  6, 34, 30, 28, 33,
1549  60, 40, 27, 46, 31,  9, 35, 29,
1550  31, 39, 55, 46, 19, 37, 62, 34,
1551  30, 16, 19, 49, 41, 41, 39, 37,
1552  14,  5, 13, 35, 55, 30, 40, 40,
1553  42,  8, 20, 25, 45, 35, 33, 36,
1554  54, 38, 27, 37, 62, 40, 15, 59,
1555  49, 31, 29, 34, 34, 39, 24, 29,
1556  25, 29, 21, 29, 10, 61, 33, 49,
1557  35, 34,  3, 38, 39, 29,  7, 41,
1558   1, 35,  4, 23, 15, 23, 11, 37,
1559  28, 35, 30, 30, 24,  1, 43, 56,
1560   8, 34, 42, 24, 45, 30, 20, 23,
1561   8, 38, 22, 33, 17, 52, 34, 22,
1562  53, 43, 44,  1, 27, 31, 41, 43,
1563  41, 30, 31, 36, 30,  5, 55, 31,
1564  33, 30, 40, 23, 15, 29, 34, 34,
1565  59, 34, 30, 11, 13, 38,  5,  0,
1566  30, 42,  5, 30, 29, 34, 10, 44,
1567  30, 63, 35, 12,  3, 26, 15, 17,
1568  25, 34, 43, 39, 34, 56, 29, 23,
1569  30, 12, 30, 10, 35,  9, 24, 58,
1570  10, 12, 54, 33, 37, 20, 41, 35,
1571  29, 18, 61, 30, 40, 24, 39, 53,
1572  62, 26, 29, 33, 34, 53, 49, 21,
1573  27, 11, 63, 20, 26, 23,  7, 13,
1574   6, 47, 29, 30,  9, 51, 22, 34,
1575  21, 25, 33, 56, 57, 30, 38, 51,
1576  51, 38, 63, 28, 40, 35, 33, 18,
1577  33, 33, 24, 58, 58, 34, 49, 29,
1578  43,  4,  1,  4, 42, 35, 35, 30,
1579  17,  5, 56, 61, 25, 37, 36, 55,
1580  28, 35, 29, 50, 48, 52,  2, 42,
1581  34, 40, 46, 46, 43, 35, 29, 48,
1582  20, 29, 31, 41,  7, 30, 35, 19,
1583  14, 21,  8, 39, 39, 40, 46, 55,
1584  34,  6, 30, 34, 37, 25, 37, 33,
1585  22, 44, 52, 17, 35, 29, 36, 35,
1586  40, 37, 28, 30, 50, 14, 28, 55,
1587   6, 23, 19, 14, 30,  3, 30, 28,
1588  28, 61, 61, 47, 45, 48, 40, 40,
1589  34, 34, 25, 30, 29, 35,  4, 26,
1590  53, 50, 26, 41, 27, 59, 27, 38,
1591  39,  3, 50, 43, 47, 23, 33, 55,
1592  35, 21, 23, 35, 61, 33, 46, 52,
1593  35, 34, 24, 30, 43, 16, 37, 21,
1594   2, 24, 45, 34, 30, 55, 55,  1,
1595  29, 29, 26, 28, 25, 31, 36, 22,
1596  17, 30, 52,  2, 44, 44, 57, 26,
1597  62, 41, 39, 57, 26, 46, 49, 11,
1598  16, 19,  5, 59, 38, 39, 58, 38,
1599  25, 49, 50, 22, 28, 59,  9, 59,
1600   7, 28, 55, 17,  4, 35, 50, 21,
1601  29, 44, 47, 18, 24, 19, 25, 42,
1602  35,  3, 51, 35, 16, 35, 30, 63,
1603  57, 39, 39, 25, 35, 38,  9, 16,
1604  36, 45, 31, 60, 14, 34, 42, 24,
1605   0, 37, 18, 61, 57, 37, 28, 53,
1606  20, 46, 14, 47, 38, 38, 38,  9,
1607  34, 39, 43, 17, 39, 59,  5, 27,
1608   0, 12, 27,
1609 };
1610
1611 const UINT8 table1_mvy[1099] = {
1612  32, 32, 31, 31, 32, 33, 31, 33,
1613  33, 32, 32, 30, 34, 31, 32, 29,
1614  33, 30, 32, 33, 31, 35, 34, 30,
1615  34, 31, 33, 29, 29, 31, 33, 35,
1616  30, 30, 35, 32, 32, 34, 34, 28,
1617  25, 32, 36, 27, 32, 32, 32, 37,
1618  39,  3, 32, 30, 31, 26, 31, 32,
1619  32, 38, 29, 29, 32, 34, 31, 31,
1620  34, 35, 33, 33, 28, 33,  1, 33,
1621  27, 29, 30, 31, 28, 29, 37, 35,
1622  31, 33, 35, 27, 36, 37, 25, 25,
1623  61, 35,  4,  5, 32, 33, 36, 30,
1624  23, 30, 28, 34, 31, 32, 32, 39,
1625  32, 34, 21, 39, 32, 59, 32, 28,
1626  32, 36, 60, 33, 24, 36, 32, 32,
1627  41,  2, 32, 38, 26, 22, 33, 30,
1628  31, 32, 32, 30, 31, 32, 29,  3,
1629  40, 38, 32, 32, 33, 26, 31, 34,
1630  28, 38, 34, 31,  3, 31, 35, 38,
1631  27, 35, 33, 28, 29, 27, 29, 27,
1632  43, 29, 37, 63, 31, 33, 34, 30,
1633  31, 30, 37, 30, 35, 35, 26, 41,
1634  37, 31, 33, 28, 26, 30, 42, 24,
1635   7, 27, 33, 29, 36, 28, 34, 57,
1636  23, 41, 36, 23, 35, 34, 25, 30,
1637  25, 33, 25, 25, 29, 24, 33, 39,
1638  33, 33,  0, 37, 31, 36, 21, 32,
1639  61, 24, 35, 61, 31,  5, 31, 59,
1640  39, 21, 32, 30, 34, 22, 40, 32,
1641  29, 16, 31,  5, 62,  2, 20, 39,
1642  39, 32, 33,  1, 31, 24, 36, 32,
1643  36, 32, 28, 26,  6, 31, 38, 34,
1644  58, 35, 32, 33, 33, 17, 43, 26,
1645  31, 40, 31, 34, 32, 32, 31, 19,
1646  30, 32, 29, 33, 38, 38, 32, 59,
1647  40, 18, 38, 32, 35, 34, 32, 17,
1648   1, 15, 30, 28, 31, 28, 34, 29,
1649  32, 27, 35, 27, 49, 22, 37, 34,
1650  37, 26, 32, 32, 22, 28, 45, 29,
1651  30, 31, 43, 46, 41, 30, 26, 13,
1652  34, 32, 27, 38, 42, 42, 33, 47,
1653  33, 60, 27, 42, 25, 32, 22, 32,
1654  48, 32, 45, 33, 33, 41, 27, 25,
1655  19, 31, 35, 19, 36, 42, 27, 17,
1656  31, 44, 28, 33, 33, 31, 23, 31,
1657  40, 33, 31, 34, 30, 32, 33, 36,
1658  35, 47, 37, 41, 31, 23, 41, 29,
1659  30, 35, 32, 25, 32, 28, 58,  2,
1660  37, 33, 14, 33, 49, 20, 39, 36,
1661  21,  9, 23, 33, 35, 24, 39, 37,
1662  11, 33, 30, 31, 31, 28, 51, 40,
1663  35, 29, 25, 33, 46, 35, 37, 30,
1664  30,  8, 63, 28, 15, 40, 33, 45,
1665  49, 25, 32,  4, 47, 51, 36, 39,
1666  53, 10, 24, 29, 30, 31, 25, 40,
1667  38, 38, 33, 56, 23, 27, 32, 37,
1668  26, 29, 43, 36, 33, 24, 55, 43,
1669   9, 29, 34, 34, 24, 33, 18, 33,
1670  33, 30, 31, 50, 24, 60, 30, 39,
1671  34, 30, 39, 28, 22, 38,  2, 26,
1672  63, 32, 57, 21, 39, 33, 28, 18,
1673  30, 34, 22, 33, 29, 41, 30, 34,
1674  35, 21, 13, 34, 35, 39, 30, 46,
1675  32, 42, 32, 31, 33, 26, 11, 33,
1676  22, 31, 25, 31, 53, 27, 43, 25,
1677  40, 50, 21, 36, 38, 30, 12, 31,
1678  34, 20, 15, 29, 32, 62, 30, 13,
1679  17, 32, 19, 31, 20, 31, 30,  7,
1680   1, 17, 34, 37, 31, 31, 44, 34,
1681  26, 40, 16, 37, 52, 48, 30, 20,
1682  18, 33, 38, 29,  7, 25, 30, 54,
1683  45, 47, 46, 41, 29, 29, 16, 30,
1684  14, 26, 38, 34, 34, 29, 34, 30,
1685  29, 30, 57, 30,  4, 46, 33, 29,
1686  39, 44, 30, 31, 50, 33, 31, 32,
1687  19, 32, 40, 31, 37, 47,  1, 35,
1688  16, 31,  0, 35, 33,  1, 17, 34,
1689   9, 34, 33, 31, 49, 43, 42, 51,
1690  34, 29, 23, 29, 14, 30, 45, 49,
1691  11, 24, 31, 28, 35, 41, 30, 44,
1692  18, 29, 34, 35, 36, 25, 26, 21,
1693  31, 30, 34, 19, 34, 44, 36, 38,
1694  25, 31, 28, 23, 37,  3, 55, 41,
1695  30, 22, 41, 24, 33, 26, 35, 35,
1696  30, 55, 51, 47, 48, 38, 24, 15,
1697  21, 50, 25, 46, 30, 29, 10, 34,
1698  42, 45, 29, 42, 22,  3, 33, 27,
1699  34,  1, 34, 28, 34, 36, 35, 23,
1700  23, 13, 58,  3, 26, 63, 25, 31,
1701  34, 61, 38, 39, 25, 61, 29, 37,
1702  30, 41, 26, 48, 28, 33, 50, 35,
1703  30, 37, 29, 29, 40,  6, 39, 28,
1704  28, 19,  8, 22, 45, 34, 35, 10,
1705  58, 17, 37, 39, 30, 18, 54, 14,
1706  29, 16, 59, 30, 35, 23, 35, 30,
1707  47, 36, 29, 55, 20, 12, 31, 35,
1708  14, 29, 18, 34, 34, 24, 29, 26,
1709  22,  2, 27, 23,  8, 30, 55, 38,
1710  60, 31,  4, 34, 49, 34, 27, 34,
1711  33, 30, 31, 54, 42, 35, 38, 46,
1712  44, 26, 27,  9, 39, 25, 21, 29,
1713  28, 42, 13,  0,  5, 34, 37, 28,
1714  24, 29, 63, 26, 22, 27, 29, 25,
1715  33, 25, 61,  0, 35, 25, 36, 15,
1716  27, 40, 53, 33,  3, 10, 16, 37,
1717  38, 18, 30, 46, 27,  9,  6, 29,
1718  62,  8, 42, 28, 29,  3, 25, 16,
1719  26, 29, 35, 28, 27, 51, 61, 48,
1720  37,  9, 34,  7, 49, 45, 20, 29,
1721  21,  5,  5, 29, 28, 34, 29, 24,
1722  10, 24, 35, 36, 38, 55, 11, 36,
1723  38, 53, 54, 26, 30, 49, 20, 27,
1724  30, 39, 33, 41, 49, 22, 38, 38,
1725   4, 30,  8,  9,  3, 24, 22, 50,
1726  37, 36, 31, 27,  2,  9, 42, 63,
1727  25, 19, 44,  1, 28, 28, 48, 30,
1728  34, 41, 41, 38, 12, 27, 15,  0,
1729  16, 34, 35, 38, 28, 29, 40, 42,
1730  51, 52, 45, 54, 59, 59, 42, 44,
1731  37, 26, 46, 24, 15, 39, 22, 46,
1732  19, 35, 38, 17, 37, 23, 52, 55,
1733  50, 37, 26, 11, 37, 12, 24, 30,
1734  16, 13, 22, 13, 36, 35, 40, 41,
1735  34, 41, 26, 53, 51,  5, 21, 30,
1736   2, 63, 41, 20,  1, 56, 21, 24,
1737  25,  5, 28, 35, 26, 28, 30, 18,
1738  29, 23, 40, 34, 20, 42, 39, 34,
1739  28, 61, 38, 27, 62,  9, 36, 17,
1740   9, 49, 24, 25, 54, 34, 39, 37,
1741   3,  1, 25, 38, 38, 44, 35, 36,
1742  12, 60, 36, 38, 40, 25, 43, 39,
1743  53, 28, 39, 57, 46, 10, 52, 27,
1744  35, 42, 45, 59, 15, 60, 38, 24,
1745  23, 39, 12, 29, 24,  0, 20, 16,
1746  28, 43, 35, 28,  1, 49,  4, 21,
1747  42, 39, 29,  3, 44, 21, 53, 55,
1748  11,  5,  3, 39, 53, 28, 25, 19,
1749  34, 28, 21,
1750 };
1751
1752 static MVTable mv_tables[2] = {
1753     {
1754         1099,
1755         table0_mv_code,
1756         table0_mv_bits,
1757         table0_mvx,
1758         table0_mvy,
1759     },
1760     {
1761         1099,
1762         table1_mv_code,
1763         table1_mv_bits,
1764         table1_mvx,
1765         table1_mvy,
1766     }
1767 };