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