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