Statistics
| Branch: | Revision:

ffmpeg / libavcodec / msmpeg4data.h @ 727c236a

History | View | Annotate | Download (80.8 KB)

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