comparison msmpeg4data.h @ 936:caa77cd960c0 libavcodec

qpel encoding 4mv+b frames encoding finally fixed chroma ME 5 comparission functions for ME b frame encoding speedup wmv2 codec (unfinished) user specified diamond size for EPZS
author michaelni
date Fri, 27 Dec 2002 23:51:46 +0000
parents e65798d228ea
children 5d4c95f323d0
comparison
equal deleted inserted replaced
935:c9bbd35064b6 936:caa77cd960c0
1 /* 1 /*
2 * MSMPEG4 data tables. 2 * MSMPEG4 data tables.
3 */ 3 */
4 4
5 /* intra picture macro block coded block pattern */ 5 /* intra picture macro block coded block pattern */
6 static const UINT16 table_mb_intra[64][2] = { 6 static const uint16_t table_mb_intra[64][2] = {
7 { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 }, 7 { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 },
8 { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 }, 8 { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 },
9 { 0x2, 5 },{ 0x7c, 9 },{ 0x3a, 7 },{ 0x1d, 7 }, 9 { 0x2, 5 },{ 0x7c, 9 },{ 0x3a, 7 },{ 0x1d, 7 },
10 { 0x2, 6 },{ 0xec, 9 },{ 0x77, 8 },{ 0x0, 8 }, 10 { 0x2, 6 },{ 0xec, 9 },{ 0x77, 8 },{ 0x0, 8 },
11 { 0x3, 5 },{ 0xb7, 9 },{ 0x2c, 7 },{ 0x13, 7 }, 11 { 0x3, 5 },{ 0xb7, 9 },{ 0x2c, 7 },{ 0x13, 7 },
21 { 0x15, 6 },{ 0x1db, 10 },{ 0x2, 9 },{ 0x46, 9 }, 21 { 0x15, 6 },{ 0x1db, 10 },{ 0x2, 9 },{ 0x46, 9 },
22 { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 }, 22 { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
23 }; 23 };
24 24
25 /* non intra picture macro block coded block pattern + mb type */ 25 /* non intra picture macro block coded block pattern + mb type */
26 static const UINT32 table_mb_non_intra[128][2] = { 26 static const uint32_t table_mb_non_intra[128][2] = {
27 { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 }, 27 { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 },
28 { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 }, 28 { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 },
29 { 0x83a, 12 },{ 0x7f8, 17 },{ 0x3fd, 16 },{ 0x3ff, 16 }, 29 { 0x83a, 12 },{ 0x7f8, 17 },{ 0x3fd, 16 },{ 0x3ff, 16 },
30 { 0x79, 13 },{ 0xa82, 18 },{ 0x969d, 16 },{ 0x2a4, 16 }, 30 { 0x79, 13 },{ 0xa82, 18 },{ 0x969d, 16 },{ 0x2a4, 16 },
31 { 0x978, 12 },{ 0x543, 17 },{ 0x41df, 15 },{ 0x7f9, 17 }, 31 { 0x978, 12 },{ 0x543, 17 },{ 0x41df, 15 },{ 0x7f9, 17 },
58 { 0x5, 5 },{ 0xb, 10 },{ 0x9c, 8 },{ 0xe, 10 }, 58 { 0x5, 5 },{ 0xb, 10 },{ 0x9c, 8 },{ 0xe, 10 },
59 }; 59 };
60 60
61 /* dc table 0 */ 61 /* dc table 0 */
62 62
63 static const UINT32 table0_dc_lum[120][2] = { 63 static const uint32_t table0_dc_lum[120][2] = {
64 { 0x1, 1 },{ 0x1, 2 },{ 0x1, 4 },{ 0x1, 5 }, 64 { 0x1, 1 },{ 0x1, 2 },{ 0x1, 4 },{ 0x1, 5 },
65 { 0x5, 5 },{ 0x7, 5 },{ 0x8, 6 },{ 0xc, 6 }, 65 { 0x5, 5 },{ 0x7, 5 },{ 0x8, 6 },{ 0xc, 6 },
66 { 0x0, 7 },{ 0x2, 7 },{ 0x12, 7 },{ 0x1a, 7 }, 66 { 0x0, 7 },{ 0x2, 7 },{ 0x12, 7 },{ 0x1a, 7 },
67 { 0x3, 8 },{ 0x7, 8 },{ 0x27, 8 },{ 0x37, 8 }, 67 { 0x3, 8 },{ 0x7, 8 },{ 0x27, 8 },{ 0x37, 8 },
68 { 0x5, 9 },{ 0x4c, 9 },{ 0x6c, 9 },{ 0x6d, 9 }, 68 { 0x5, 9 },{ 0x4c, 9 },{ 0x6c, 9 },{ 0x6d, 9 },
91 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 }, 91 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
92 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 }, 92 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
93 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 }, 93 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
94 }; 94 };
95 95
96 static const UINT32 table0_dc_chroma[120][2] = { 96 static const uint32_t table0_dc_chroma[120][2] = {
97 { 0x0, 2 },{ 0x1, 2 },{ 0x5, 3 },{ 0x9, 4 }, 97 { 0x0, 2 },{ 0x1, 2 },{ 0x5, 3 },{ 0x9, 4 },
98 { 0xd, 4 },{ 0x11, 5 },{ 0x1d, 5 },{ 0x1f, 5 }, 98 { 0xd, 4 },{ 0x11, 5 },{ 0x1d, 5 },{ 0x1f, 5 },
99 { 0x21, 6 },{ 0x31, 6 },{ 0x38, 6 },{ 0x33, 6 }, 99 { 0x21, 6 },{ 0x31, 6 },{ 0x38, 6 },{ 0x33, 6 },
100 { 0x39, 6 },{ 0x3d, 6 },{ 0x61, 7 },{ 0x79, 7 }, 100 { 0x39, 6 },{ 0x3d, 6 },{ 0x61, 7 },{ 0x79, 7 },
101 { 0x80, 8 },{ 0xc8, 8 },{ 0xca, 8 },{ 0xf0, 8 }, 101 { 0x80, 8 },{ 0xc8, 8 },{ 0xca, 8 },{ 0xf0, 8 },
126 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 }, 126 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
127 }; 127 };
128 128
129 /* dc table 1 */ 129 /* dc table 1 */
130 130
131 static const UINT32 table1_dc_lum[120][2] = { 131 static const uint32_t table1_dc_lum[120][2] = {
132 { 0x2, 2 },{ 0x3, 2 },{ 0x3, 3 },{ 0x2, 4 }, 132 { 0x2, 2 },{ 0x3, 2 },{ 0x3, 3 },{ 0x2, 4 },
133 { 0x5, 4 },{ 0x1, 5 },{ 0x3, 5 },{ 0x8, 5 }, 133 { 0x5, 4 },{ 0x1, 5 },{ 0x3, 5 },{ 0x8, 5 },
134 { 0x0, 6 },{ 0x5, 6 },{ 0xd, 6 },{ 0xf, 6 }, 134 { 0x0, 6 },{ 0x5, 6 },{ 0xd, 6 },{ 0xf, 6 },
135 { 0x13, 6 },{ 0x8, 7 },{ 0x18, 7 },{ 0x1c, 7 }, 135 { 0x13, 6 },{ 0x8, 7 },{ 0x18, 7 },{ 0x1c, 7 },
136 { 0x24, 7 },{ 0x4, 8 },{ 0x6, 8 },{ 0x12, 8 }, 136 { 0x24, 7 },{ 0x4, 8 },{ 0x6, 8 },{ 0x12, 8 },
159 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 }, 159 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
160 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 }, 160 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
161 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 }, 161 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
162 }; 162 };
163 163
164 static const UINT32 table1_dc_chroma[120][2] = { 164 static const uint32_t table1_dc_chroma[120][2] = {
165 { 0x0, 2 },{ 0x1, 2 },{ 0x4, 3 },{ 0x7, 3 }, 165 { 0x0, 2 },{ 0x1, 2 },{ 0x4, 3 },{ 0x7, 3 },
166 { 0xb, 4 },{ 0xd, 4 },{ 0x15, 5 },{ 0x28, 6 }, 166 { 0xb, 4 },{ 0xd, 4 },{ 0x15, 5 },{ 0x28, 6 },
167 { 0x30, 6 },{ 0x32, 6 },{ 0x52, 7 },{ 0x62, 7 }, 167 { 0x30, 6 },{ 0x32, 6 },{ 0x52, 7 },{ 0x62, 7 },
168 { 0x66, 7 },{ 0xa6, 8 },{ 0xc6, 8 },{ 0xcf, 8 }, 168 { 0x66, 7 },{ 0xa6, 8 },{ 0xc6, 8 },{ 0xcf, 8 },
169 { 0x14f, 9 },{ 0x18e, 9 },{ 0x19c, 9 },{ 0x29d, 10 }, 169 { 0x14f, 9 },{ 0x18e, 9 },{ 0x19c, 9 },{ 0x29d, 10 },
194 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 }, 194 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
195 }; 195 };
196 196
197 /* vlc table 0, for intra luma */ 197 /* vlc table 0, for intra luma */
198 198
199 static const UINT16 table0_vlc[133][2] = { 199 static const uint16_t table0_vlc[133][2] = {
200 { 0x1, 2 },{ 0x6, 3 },{ 0xf, 4 },{ 0x16, 5 }, 200 { 0x1, 2 },{ 0x6, 3 },{ 0xf, 4 },{ 0x16, 5 },
201 { 0x20, 6 },{ 0x18, 7 },{ 0x8, 8 },{ 0x9a, 8 }, 201 { 0x20, 6 },{ 0x18, 7 },{ 0x8, 8 },{ 0x9a, 8 },
202 { 0x56, 9 },{ 0x13e, 9 },{ 0xf0, 10 },{ 0x3a5, 10 }, 202 { 0x56, 9 },{ 0x13e, 9 },{ 0xf0, 10 },{ 0x3a5, 10 },
203 { 0x77, 11 },{ 0x1ef, 11 },{ 0x9a, 12 },{ 0x5d, 13 }, 203 { 0x77, 11 },{ 0x1ef, 11 },{ 0x9a, 12 },{ 0x5d, 13 },
204 { 0x1, 4 },{ 0x11, 5 },{ 0x2, 7 },{ 0xb, 8 }, 204 { 0x1, 4 },{ 0x11, 5 },{ 0x2, 7 },{ 0xb, 8 },
231 { 0x74, 11 },{ 0xeb, 12 },{ 0x2f9, 12 },{ 0x5c, 13 }, 231 { 0x74, 11 },{ 0xeb, 12 },{ 0x2f9, 12 },{ 0x5c, 13 },
232 { 0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{ 0x5e, 13 }, 232 { 0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{ 0x5e, 13 },
233 { 0x16, 7 }, 233 { 0x16, 7 },
234 }; 234 };
235 235
236 static const INT8 table0_level[132] = { 236 static const int8_t table0_level[132] = {
237 1, 2, 3, 4, 5, 6, 7, 8, 237 1, 2, 3, 4, 5, 6, 7, 8,
238 9, 10, 11, 12, 13, 14, 15, 16, 238 9, 10, 11, 12, 13, 14, 15, 16,
239 1, 2, 3, 4, 5, 6, 7, 8, 239 1, 2, 3, 4, 5, 6, 7, 8,
240 9, 10, 11, 1, 2, 3, 4, 5, 240 9, 10, 11, 1, 2, 3, 4, 5,
241 6, 7, 8, 1, 2, 3, 4, 5, 241 6, 7, 8, 1, 2, 3, 4, 5,
251 2, 1, 2, 1, 2, 1, 2, 1, 251 2, 1, 2, 1, 2, 1, 2, 1,
252 1, 1, 1, 1, 1, 1, 1, 1, 252 1, 1, 1, 1, 1, 1, 1, 1,
253 1, 1, 1, 1, 253 1, 1, 1, 1,
254 }; 254 };
255 255
256 static const INT8 table0_run[132] = { 256 static const int8_t table0_run[132] = {
257 0, 0, 0, 0, 0, 0, 0, 0, 257 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0, 0, 0, 258 0, 0, 0, 0, 0, 0, 0, 0,
259 1, 1, 1, 1, 1, 1, 1, 1, 259 1, 1, 1, 1, 1, 1, 1, 1,
260 1, 1, 1, 2, 2, 2, 2, 2, 260 1, 1, 1, 2, 2, 2, 2, 2,
261 2, 2, 2, 3, 3, 3, 3, 3, 261 2, 2, 2, 3, 3, 3, 3, 3,
273 23, 24, 25, 26, 273 23, 24, 25, 26,
274 }; 274 };
275 275
276 /* vlc table 1, for intra chroma and P macro blocks */ 276 /* vlc table 1, for intra chroma and P macro blocks */
277 277
278 static const UINT16 table1_vlc[149][2] = { 278 static const uint16_t table1_vlc[149][2] = {
279 { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 }, 279 { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 },
280 { 0x154, 9 },{ 0x1f2, 10 },{ 0xbf, 11 },{ 0x65, 12 }, 280 { 0x154, 9 },{ 0x1f2, 10 },{ 0xbf, 11 },{ 0x65, 12 },
281 { 0xaaa, 12 },{ 0x630, 13 },{ 0x1597, 13 },{ 0x3b7, 14 }, 281 { 0xaaa, 12 },{ 0x630, 13 },{ 0x1597, 13 },{ 0x3b7, 14 },
282 { 0x2b22, 14 },{ 0xbe6, 15 },{ 0xb, 4 },{ 0x37, 7 }, 282 { 0x2b22, 14 },{ 0xbe6, 15 },{ 0xb, 4 },{ 0x37, 7 },
283 { 0x62, 9 },{ 0x7, 11 },{ 0x166, 12 },{ 0xce, 13 }, 283 { 0x62, 9 },{ 0x7, 11 },{ 0x166, 12 },{ 0xce, 13 },
314 { 0x1557, 13 },{ 0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 }, 314 { 0x1557, 13 },{ 0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
315 { 0x1de, 14 },{ 0x63c, 13 },{ 0xcf, 13 },{ 0x1594, 13 }, 315 { 0x1de, 14 },{ 0x63c, 13 },{ 0xcf, 13 },{ 0x1594, 13 },
316 { 0xd, 9 }, 316 { 0xd, 9 },
317 }; 317 };
318 318
319 static const INT8 table1_level[148] = { 319 static const int8_t table1_level[148] = {
320 1, 2, 3, 4, 5, 6, 7, 8, 320 1, 2, 3, 4, 5, 6, 7, 8,
321 9, 10, 11, 12, 13, 14, 1, 2, 321 9, 10, 11, 12, 13, 14, 1, 2,
322 3, 4, 5, 6, 7, 8, 9, 1, 322 3, 4, 5, 6, 7, 8, 9, 1,
323 2, 3, 4, 5, 1, 2, 3, 4, 323 2, 3, 4, 5, 1, 2, 3, 4,
324 1, 2, 3, 4, 1, 2, 3, 4, 324 1, 2, 3, 4, 1, 2, 3, 4,
336 1, 1, 1, 1, 1, 1, 1, 1, 336 1, 1, 1, 1, 1, 1, 1, 1,
337 1, 1, 1, 1, 1, 1, 1, 1, 337 1, 1, 1, 1, 1, 1, 1, 1,
338 1, 1, 1, 1, 338 1, 1, 1, 1,
339 }; 339 };
340 340
341 static const INT8 table1_run[148] = { 341 static const int8_t table1_run[148] = {
342 0, 0, 0, 0, 0, 0, 0, 0, 342 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 1, 1, 343 0, 0, 0, 0, 0, 0, 1, 1,
344 1, 1, 1, 1, 1, 1, 1, 2, 344 1, 1, 1, 1, 1, 1, 1, 2,
345 2, 2, 2, 2, 3, 3, 3, 3, 345 2, 2, 2, 2, 3, 3, 3, 3,
346 4, 4, 4, 4, 5, 5, 5, 5, 346 4, 4, 4, 4, 5, 5, 5, 5,
360 40, 41, 42, 43, 360 40, 41, 42, 43,
361 }; 361 };
362 362
363 /* third vlc table */ 363 /* third vlc table */
364 364
365 static const UINT16 table2_vlc[186][2] = { 365 static const uint16_t table2_vlc[186][2] = {
366 { 0x1, 2 },{ 0x5, 3 },{ 0xd, 4 },{ 0x12, 5 }, 366 { 0x1, 2 },{ 0x5, 3 },{ 0xd, 4 },{ 0x12, 5 },
367 { 0xe, 6 },{ 0x15, 7 },{ 0x13, 8 },{ 0x3f, 8 }, 367 { 0xe, 6 },{ 0x15, 7 },{ 0x13, 8 },{ 0x3f, 8 },
368 { 0x4b, 9 },{ 0x11f, 9 },{ 0xb8, 10 },{ 0x3e3, 10 }, 368 { 0x4b, 9 },{ 0x11f, 9 },{ 0xb8, 10 },{ 0x3e3, 10 },
369 { 0x172, 11 },{ 0x24d, 12 },{ 0x3da, 12 },{ 0x2dd, 13 }, 369 { 0x172, 11 },{ 0x24d, 12 },{ 0x3da, 12 },{ 0x2dd, 13 },
370 { 0x1f55, 13 },{ 0x5b9, 14 },{ 0x3eae, 14 },{ 0x0, 4 }, 370 { 0x1f55, 13 },{ 0x5b9, 14 },{ 0x3eae, 14 },{ 0x0, 4 },
410 { 0x3d8, 12 },{ 0x78e, 13 },{ 0x2d5, 13 },{ 0x1f5e, 13 }, 410 { 0x3d8, 12 },{ 0x78e, 13 },{ 0x2d5, 13 },{ 0x1f5e, 13 },
411 { 0x1f2b, 13 },{ 0x78f, 13 },{ 0x4ad, 14 },{ 0x3eaf, 14 }, 411 { 0x1f2b, 13 },{ 0x78f, 13 },{ 0x4ad, 14 },{ 0x3eaf, 14 },
412 { 0x23dc, 14 },{ 0x4a, 9 }, 412 { 0x23dc, 14 },{ 0x4a, 9 },
413 }; 413 };
414 414
415 static const INT8 table2_level[185] = { 415 static const int8_t table2_level[185] = {
416 1, 2, 3, 4, 5, 6, 7, 8, 416 1, 2, 3, 4, 5, 6, 7, 8,
417 9, 10, 11, 12, 13, 14, 15, 16, 417 9, 10, 11, 12, 13, 14, 15, 16,
418 17, 18, 19, 1, 2, 3, 4, 5, 418 17, 18, 19, 1, 2, 3, 4, 5,
419 6, 7, 8, 9, 10, 11, 12, 13, 419 6, 7, 8, 9, 10, 11, 12, 13,
420 14, 15, 1, 2, 3, 4, 5, 6, 420 14, 15, 1, 2, 3, 4, 5, 6,
437 1, 1, 1, 1, 1, 1, 1, 1, 437 1, 1, 1, 1, 1, 1, 1, 1,
438 1, 1, 1, 1, 1, 1, 1, 1, 438 1, 1, 1, 1, 1, 1, 1, 1,
439 1, 439 1,
440 }; 440 };
441 441
442 static const INT8 table2_run[185] = { 442 static const int8_t table2_run[185] = {
443 0, 0, 0, 0, 0, 0, 0, 0, 443 0, 0, 0, 0, 0, 0, 0, 0,
444 0, 0, 0, 0, 0, 0, 0, 0, 444 0, 0, 0, 0, 0, 0, 0, 0,
445 0, 0, 0, 1, 1, 1, 1, 1, 445 0, 0, 0, 1, 1, 1, 1, 1,
446 1, 1, 1, 1, 1, 1, 1, 1, 446 1, 1, 1, 1, 1, 1, 1, 1,
447 1, 1, 2, 2, 2, 2, 2, 2, 447 1, 1, 2, 2, 2, 2, 2, 2,
465 29, 30, 31, 32, 33, 34, 35, 36, 465 29, 30, 31, 32, 33, 34, 35, 36,
466 37, 466 37,
467 }; 467 };
468 468
469 /* second non intra vlc table */ 469 /* second non intra vlc table */
470 static const UINT16 table4_vlc[169][2] = { 470 static const uint16_t table4_vlc[169][2] = {
471 { 0x0, 3 },{ 0x3, 4 },{ 0xb, 5 },{ 0x14, 6 }, 471 { 0x0, 3 },{ 0x3, 4 },{ 0xb, 5 },{ 0x14, 6 },
472 { 0x3f, 6 },{ 0x5d, 7 },{ 0xa2, 8 },{ 0xac, 9 }, 472 { 0x3f, 6 },{ 0x5d, 7 },{ 0xa2, 8 },{ 0xac, 9 },
473 { 0x16e, 9 },{ 0x20a, 10 },{ 0x2e2, 10 },{ 0x432, 11 }, 473 { 0x16e, 9 },{ 0x20a, 10 },{ 0x2e2, 10 },{ 0x432, 11 },
474 { 0x5c9, 11 },{ 0x827, 12 },{ 0xb54, 12 },{ 0x4e6, 13 }, 474 { 0x5c9, 11 },{ 0x827, 12 },{ 0xb54, 12 },{ 0x4e6, 13 },
475 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 }, 475 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
511 { 0x9dc, 14 },{ 0x20bb, 14 },{ 0x48c, 13 },{ 0x1723, 13 }, 511 { 0x9dc, 14 },{ 0x20bb, 14 },{ 0x48c, 13 },{ 0x1723, 13 },
512 { 0x2e44, 14 },{ 0x16a5, 13 },{ 0x518, 11 },{ 0x39fe, 14 }, 512 { 0x2e44, 14 },{ 0x16a5, 13 },{ 0x518, 11 },{ 0x39fe, 14 },
513 { 0x169, 9 }, 513 { 0x169, 9 },
514 }; 514 };
515 515
516 static const INT8 table4_level[168] = { 516 static const int8_t table4_level[168] = {
517 1, 2, 3, 4, 5, 6, 7, 8, 517 1, 2, 3, 4, 5, 6, 7, 8,
518 9, 10, 11, 12, 13, 14, 15, 16, 518 9, 10, 11, 12, 13, 14, 15, 16,
519 17, 18, 19, 20, 21, 22, 23, 1, 519 17, 18, 19, 20, 21, 22, 23, 1,
520 2, 3, 4, 5, 6, 7, 8, 9, 520 2, 3, 4, 5, 6, 7, 8, 9,
521 10, 11, 1, 2, 3, 4, 5, 6, 521 10, 11, 1, 2, 3, 4, 5, 6,
535 1, 2, 1, 1, 1, 1, 1, 1, 535 1, 2, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 1, 1, 1, 1, 1, 536 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 537 1, 1, 1, 1, 1, 1, 1, 1,
538 }; 538 };
539 539
540 static const INT8 table4_run[168] = { 540 static const int8_t table4_run[168] = {
541 0, 0, 0, 0, 0, 0, 0, 0, 541 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0, 542 0, 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 0, 0, 0, 0, 0, 1, 543 0, 0, 0, 0, 0, 0, 0, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 544 1, 1, 1, 1, 1, 1, 1, 1,
545 1, 1, 2, 2, 2, 2, 2, 2, 545 1, 1, 2, 2, 2, 2, 2, 2,
559 14, 14, 15, 16, 17, 18, 19, 20, 559 14, 14, 15, 16, 17, 18, 19, 20,
560 21, 22, 23, 24, 25, 26, 27, 28, 560 21, 22, 23, 24, 25, 26, 27, 28,
561 29, 30, 31, 32, 33, 34, 35, 36, 561 29, 30, 31, 32, 33, 34, 35, 36,
562 }; 562 };
563 563
564 extern const UINT16 inter_vlc[103][2]; 564 extern const uint16_t inter_vlc[103][2];
565 extern const INT8 inter_level[102]; 565 extern const int8_t inter_level[102];
566 extern const INT8 inter_run[102]; 566 extern const int8_t inter_run[102];
567 567
568 extern const UINT16 intra_vlc[103][2]; 568 extern const uint16_t intra_vlc[103][2];
569 extern const INT8 intra_level[102]; 569 extern const int8_t intra_level[102];
570 extern const INT8 intra_run[102]; 570 extern const int8_t intra_run[102];
571 571
572 extern const UINT8 DCtab_lum[13][2]; 572 extern const uint8_t DCtab_lum[13][2];
573 extern const UINT8 DCtab_chrom[13][2]; 573 extern const uint8_t DCtab_chrom[13][2];
574 574
575 extern const UINT8 cbpy_tab[16][2]; 575 extern const uint8_t cbpy_tab[16][2];
576 extern const UINT8 mvtab[33][2]; 576 extern const uint8_t mvtab[33][2];
577 577
578 extern const UINT8 intra_MCBPC_code[8]; 578 extern const uint8_t intra_MCBPC_code[8];
579 extern const UINT8 intra_MCBPC_bits[8]; 579 extern const uint8_t intra_MCBPC_bits[8];
580 580
581 extern const UINT8 inter_MCBPC_code[25]; 581 extern const uint8_t inter_MCBPC_code[25];
582 extern const UINT8 inter_MCBPC_bits[25]; 582 extern const uint8_t inter_MCBPC_bits[25];
583 583
584 #define NB_RL_TABLES 6 584 #define NB_RL_TABLES 6
585 585
586 static RLTable rl_table[NB_RL_TABLES] = { 586 static RLTable rl_table[NB_RL_TABLES] = {
587 /* intra luminance tables */ 587 /* intra luminance tables */
630 }, 630 },
631 }; 631 };
632 632
633 /* motion vector table 0 */ 633 /* motion vector table 0 */
634 634
635 static const UINT16 table0_mv_code[1100] = { 635 static const uint16_t table0_mv_code[1100] = {
636 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001, 636 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
637 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f, 637 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
638 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b, 638 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
639 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048, 639 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
640 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c, 640 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
771 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04, 771 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
772 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c, 772 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
773 0x5f0d, 0x5f0e, 0x5f0f, 0x0000, 773 0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
774 }; 774 };
775 775
776 static const UINT8 table0_mv_bits[1100] = { 776 static const uint8_t table0_mv_bits[1100] = {
777 1, 4, 4, 4, 5, 5, 5, 6, 777 1, 4, 4, 4, 5, 5, 5, 6,
778 6, 6, 7, 7, 7, 8, 8, 8, 778 6, 6, 7, 7, 7, 8, 8, 8,
779 8, 8, 8, 8, 8, 8, 8, 8, 779 8, 8, 8, 8, 8, 8, 8, 8,
780 8, 9, 9, 9, 9, 9, 9, 9, 780 8, 9, 9, 9, 9, 9, 9, 9,
781 9, 9, 9, 9, 9, 10, 10, 10, 781 9, 9, 9, 9, 9, 10, 10, 10,
912 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, 913 17, 17, 17, 17, 17, 17, 17, 17,
914 17, 17, 17, 8, 914 17, 17, 17, 8,
915 }; 915 };
916 916
917 static const UINT8 table0_mvx[1099] = { 917 static const uint8_t table0_mvx[1099] = {
918 32, 32, 31, 32, 33, 31, 33, 31, 918 32, 32, 31, 32, 33, 31, 33, 31,
919 33, 32, 34, 32, 30, 32, 31, 34, 919 33, 32, 34, 32, 30, 32, 31, 34,
920 35, 32, 34, 33, 29, 33, 30, 30, 920 35, 32, 34, 33, 29, 33, 30, 30,
921 31, 31, 35, 29, 33, 35, 33, 34, 921 31, 31, 35, 29, 33, 35, 33, 34,
922 31, 29, 30, 34, 30, 36, 28, 32, 922 31, 29, 30, 34, 30, 36, 28, 32,
1053 39, 35, 59, 59, 18, 59, 39, 30, 1053 39, 35, 59, 59, 18, 59, 39, 30,
1054 18, 40, 60, 60, 61, 30, 18, 61, 1054 18, 40, 60, 60, 61, 30, 18, 61,
1055 61, 19, 19, 1055 61, 19, 19,
1056 }; 1056 };
1057 1057
1058 static const UINT8 table0_mvy[1099] = { 1058 static const uint8_t table0_mvy[1099] = {
1059 32, 31, 32, 33, 32, 31, 31, 33, 1059 32, 31, 32, 33, 32, 31, 31, 33,
1060 33, 34, 32, 30, 32, 35, 34, 31, 1060 33, 34, 32, 30, 32, 35, 34, 31,
1061 32, 29, 33, 30, 32, 34, 33, 31, 1061 32, 29, 33, 30, 32, 34, 33, 31,
1062 30, 35, 31, 31, 29, 33, 35, 30, 1062 30, 35, 31, 31, 29, 33, 35, 30,
1063 29, 33, 34, 34, 30, 32, 32, 36, 1063 29, 33, 34, 34, 30, 32, 32, 36,
1195 40, 23, 34, 37, 5, 13, 42, 18, 1195 40, 23, 34, 37, 5, 13, 42, 18,
1196 25, 27, 28, 1196 25, 27, 28,
1197 }; 1197 };
1198 1198
1199 /* motion vector table 1 */ 1199 /* motion vector table 1 */
1200 static const UINT16 table1_mv_code[1100] = { 1200 static const uint16_t table1_mv_code[1100] = {
1201 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c, 1201 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1202 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041, 1202 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1203 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069, 1203 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1204 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8, 1204 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1205 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8, 1205 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1336 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 1336 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1337 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 1337 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1338 0x2473, 0x26a2, 0x26a3, 0x000b, 1338 0x2473, 0x26a2, 0x26a3, 0x000b,
1339 }; 1339 };
1340 1340
1341 static const UINT8 table1_mv_bits[1100] = { 1341 static const uint8_t table1_mv_bits[1100] = {
1342 2, 4, 4, 4, 5, 5, 5, 5, 1342 2, 4, 4, 4, 5, 5, 5, 5,
1343 6, 6, 7, 7, 7, 7, 7, 8, 1343 6, 6, 7, 7, 7, 7, 7, 8,
1344 8, 8, 8, 8, 8, 8, 8, 8, 1344 8, 8, 8, 8, 8, 8, 8, 8,
1345 8, 8, 8, 8, 8, 8, 8, 8, 1345 8, 8, 8, 8, 8, 8, 8, 8,
1346 8, 9, 9, 9, 9, 9, 9, 9, 1346 8, 9, 9, 9, 9, 9, 9, 9,
1477 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, 1478 15, 15, 15, 15, 15, 15, 15, 15,
1479 15, 15, 15, 4, 1479 15, 15, 15, 4,
1480 }; 1480 };
1481 1481
1482 static const UINT8 table1_mvx[1099] = { 1482 static const uint8_t table1_mvx[1099] = {
1483 32, 31, 32, 31, 33, 32, 33, 33, 1483 32, 31, 32, 31, 33, 32, 33, 33,
1484 31, 34, 30, 32, 32, 34, 35, 32, 1484 31, 34, 30, 32, 32, 34, 35, 32,
1485 34, 33, 29, 30, 30, 32, 31, 31, 1485 34, 33, 29, 30, 30, 32, 31, 31,
1486 33, 35, 35, 33, 31, 29, 29, 33, 1486 33, 35, 35, 33, 31, 29, 29, 33,
1487 34, 30, 31, 28, 36, 30, 34, 32, 1487 34, 30, 31, 28, 36, 30, 34, 32,
1618 20, 46, 14, 47, 38, 38, 38, 9, 1618 20, 46, 14, 47, 38, 38, 38, 9,
1619 34, 39, 43, 17, 39, 59, 5, 27, 1619 34, 39, 43, 17, 39, 59, 5, 27,
1620 0, 12, 27, 1620 0, 12, 27,
1621 }; 1621 };
1622 1622
1623 static const UINT8 table1_mvy[1099] = { 1623 static const uint8_t table1_mvy[1099] = {
1624 32, 32, 31, 31, 32, 33, 31, 33, 1624 32, 32, 31, 31, 32, 33, 31, 33,
1625 33, 32, 32, 30, 34, 31, 32, 29, 1625 33, 32, 32, 30, 34, 31, 32, 29,
1626 33, 30, 32, 33, 31, 35, 34, 30, 1626 33, 30, 32, 33, 31, 35, 34, 30,
1627 34, 31, 33, 29, 29, 31, 33, 35, 1627 34, 31, 33, 29, 29, 31, 33, 35,
1628 30, 30, 35, 32, 32, 34, 34, 28, 1628 30, 30, 35, 32, 32, 34, 34, 28,
1762 }; 1762 };
1763 1763
1764 /* motion vector table */ 1764 /* motion vector table */
1765 typedef struct MVTable { 1765 typedef struct MVTable {
1766 int n; 1766 int n;
1767 const UINT16 *table_mv_code; 1767 const uint16_t *table_mv_code;
1768 const UINT8 *table_mv_bits; 1768 const uint8_t *table_mv_bits;
1769 const UINT8 *table_mvx; 1769 const uint8_t *table_mvx;
1770 const UINT8 *table_mvy; 1770 const uint8_t *table_mvy;
1771 UINT16 *table_mv_index; /* encoding: convert mv to index in table_mv */ 1771 uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */
1772 VLC vlc; /* decoding: vlc */ 1772 VLC vlc; /* decoding: vlc */
1773 } MVTable; 1773 } MVTable;
1774 1774
1775 static MVTable mv_tables[2] = { 1775 static MVTable mv_tables[2] = {
1776 { 1776 {
1787 table1_mvx, 1787 table1_mvx,
1788 table1_mvy, 1788 table1_mvy,
1789 } 1789 }
1790 }; 1790 };
1791 1791
1792 static const UINT8 v2_mb_type[8][2] = { 1792 static const uint8_t v2_mb_type[8][2] = {
1793 {1, 1}, {0 , 2}, {3 , 3}, {9 , 5}, 1793 {1, 1}, {0 , 2}, {3 , 3}, {9 , 5},
1794 {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6}, 1794 {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
1795 }; 1795 };
1796 1796
1797 static const UINT8 v2_intra_cbpc[4][2] = { 1797 static const uint8_t v2_intra_cbpc[4][2] = {
1798 {1, 1}, {0, 3}, {1, 3}, {1, 2}, 1798 {1, 1}, {0, 3}, {1, 3}, {1, 2},
1799 }; 1799 };
1800 1800
1801 static UINT8 wmv1_y_dc_scale_table[32]={ 1801 static uint8_t wmv1_y_dc_scale_table[32]={
1802 // 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 1802 // 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
1803 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 1803 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
1804 }; 1804 };
1805 static UINT8 wmv1_c_dc_scale_table[32]={ 1805 static uint8_t wmv1_c_dc_scale_table[32]={
1806 // 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 1806 // 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
1807 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 1807 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
1808 }; 1808 };
1809 1809
1810 static UINT8 old_ff_y_dc_scale_table[32]={ 1810 static uint8_t old_ff_y_dc_scale_table[32]={
1811 // 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 1811 // 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
1812 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 1812 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
1813 }; 1813 };
1814 static UINT8 old_ff_c_dc_scale_table[32]={ 1814 static uint8_t old_ff_c_dc_scale_table[32]={
1815 // 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 1815 // 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
1816 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 1816 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
1817 }; 1817 };
1818 1818
1819 1819
1820 #define WMV1_SCANTABLE_COUNT 4 1820 #define WMV1_SCANTABLE_COUNT 4
1821 1821
1822 static const UINT8 wmv1_scantable00[64]= { 1822 static const uint8_t wmv1_scantable00[64]= {
1823 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 1823 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1824 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 1824 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1825 0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05, 1825 0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05,
1826 0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A, 1826 0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A,
1827 0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 1827 0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F,
1828 0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34, 1828 0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34,
1829 0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35, 1829 0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35,
1830 0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F, 1830 0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F,
1831 }; 1831 };
1832 static const UINT8 wmv1_scantable01[64]= { 1832 static const uint8_t wmv1_scantable01[64]= {
1833 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 1833 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1834 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 1834 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1835 0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D, 1835 0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D,
1836 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A, 1836 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A,
1837 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D, 1837 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D,
1838 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25, 1838 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25,
1839 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35, 1839 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35,
1840 0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F, 1840 0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F,
1841 }; 1841 };
1842 static const UINT8 wmv1_scantable02[64]= { 1842 static const uint8_t wmv1_scantable02[64]= {
1843 0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18, 1843 0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18,
1844 0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20, 1844 0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20,
1845 0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07, 1845 0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07,
1846 0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 1846 0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39,
1847 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D, 1847 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D,
1848 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E, 1848 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E,
1849 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35, 1849 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35,
1850 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, 1850 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1851 }; 1851 };
1852 static const UINT8 wmv1_scantable03[64]= { 1852 static const uint8_t wmv1_scantable03[64]= {
1853 0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09, 1853 0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09,
1854 0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29, 1854 0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29,
1855 0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13, 1855 0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13,
1856 0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C, 1856 0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C,
1857 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24, 1857 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24,
1858 0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E, 1858 0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E,
1859 0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35, 1859 0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35,
1860 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, 1860 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1861 }; 1861 };
1862 1862
1863 static const UINT8 *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={ 1863 static const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={
1864 wmv1_scantable00, 1864 wmv1_scantable00,
1865 wmv1_scantable01, 1865 wmv1_scantable01,
1866 wmv1_scantable02, 1866 wmv1_scantable02,
1867 wmv1_scantable03, 1867 wmv1_scantable03,
1868 }; 1868 };
1869 1869
1870 static UINT8 table_inter_intra[4][2]={ 1870 static const uint8_t table_inter_intra[4][2]={
1871 {0,1},{2,2},{6,3},{7,3} 1871 {0,1},{2,2},{6,3},{7,3}
1872 }; 1872 };
1873 1873
1874 #define WMV2_INTER_CBP_TABLE_COUNT 4
1875
1876 static const uint32_t table_mb_non_intra2[128][2] = {
1877 {0x0000A7, 14}, {0x01B2B8, 18}, {0x01B28E, 18}, {0x036575, 19},
1878 {0x006CAC, 16}, {0x000A69, 18}, {0x002934, 20}, {0x00526B, 21},
1879 {0x006CA1, 16}, {0x01B2B9, 18}, {0x0029AD, 20}, {0x029353, 24},
1880 {0x006CA7, 16}, {0x006CAB, 16}, {0x01B2BB, 18}, {0x00029B, 16},
1881 {0x00D944, 17}, {0x000A6A, 18}, {0x0149A8, 23}, {0x03651F, 19},
1882 {0x006CAF, 16}, {0x000A4C, 18}, {0x03651E, 19}, {0x000A48, 18},
1883 {0x00299C, 20}, {0x00299F, 20}, {0x029352, 24}, {0x0029AC, 20},
1884 {0x000296, 16}, {0x00D946, 17}, {0x000A68, 18}, {0x000298, 16},
1885 {0x000527, 17}, {0x00D94D, 17}, {0x0014D7, 19}, {0x036574, 19},
1886 {0x000A5C, 18}, {0x01B299, 18}, {0x00299D, 20}, {0x00299E, 20},
1887 {0x000525, 17}, {0x000A66, 18}, {0x00A4D5, 22}, {0x00149B, 19},
1888 {0x000295, 16}, {0x006CAD, 16}, {0x000A49, 18}, {0x000521, 17},
1889 {0x006CAA, 16}, {0x00D945, 17}, {0x01B298, 18}, {0x00052F, 17},
1890 {0x003654, 15}, {0x006CA0, 16}, {0x000532, 17}, {0x000291, 16},
1891 {0x003652, 15}, {0x000520, 17}, {0x000A5D, 18}, {0x000294, 16},
1892 {0x00009B, 11}, {0x0006E2, 12}, {0x000028, 12}, {0x0001B0, 10},
1893 {0x000001, 3}, {0x000010, 8}, {0x00002F, 6}, {0x00004C, 10},
1894 {0x00000D, 4}, {0x000000, 10}, {0x000006, 9}, {0x000134, 12},
1895 {0x00000C, 4}, {0x000007, 10}, {0x000007, 9}, {0x0006E1, 12},
1896 {0x00000E, 5}, {0x0000DA, 9}, {0x000022, 9}, {0x000364, 11},
1897 {0x00000F, 4}, {0x000006, 10}, {0x00000F, 9}, {0x000135, 12},
1898 {0x000014, 5}, {0x0000DD, 9}, {0x000004, 9}, {0x000015, 11},
1899 {0x00001A, 6}, {0x0001B3, 10}, {0x000005, 10}, {0x0006E3, 12},
1900 {0x00000C, 5}, {0x0000B9, 8}, {0x000004, 8}, {0x0000DB, 9},
1901 {0x00000E, 4}, {0x00000B, 10}, {0x000023, 9}, {0x0006CB, 12},
1902 {0x000005, 6}, {0x0001B1, 10}, {0x000001, 10}, {0x0006E0, 12},
1903 {0x000011, 5}, {0x0000DF, 9}, {0x00000E, 9}, {0x000373, 11},
1904 {0x000003, 5}, {0x0000B8, 8}, {0x000006, 8}, {0x000175, 9},
1905 {0x000015, 5}, {0x000174, 9}, {0x000027, 9}, {0x000372, 11},
1906 {0x000010, 5}, {0x0000BB, 8}, {0x000005, 8}, {0x0000DE, 9},
1907 {0x00000F, 5}, {0x000001, 9}, {0x000012, 8}, {0x000004, 10},
1908 {0x000002, 3}, {0x000016, 5}, {0x000009, 4}, {0x000001, 5},
1909 };
1910
1911 static const uint32_t table_mb_non_intra3[128][2] = {
1912 {0x0002A1, 10}, {0x005740, 15}, {0x01A0BF, 18}, {0x015D19, 17},
1913 {0x001514, 13}, {0x00461E, 15}, {0x015176, 17}, {0x015177, 17},
1914 {0x0011AD, 13}, {0x00682E, 16}, {0x0682F9, 20}, {0x03417D, 19},
1915 {0x001A36, 14}, {0x002A2D, 14}, {0x00D05E, 17}, {0x006824, 16},
1916 {0x001515, 13}, {0x00545C, 15}, {0x0230E9, 18}, {0x011AFA, 17},
1917 {0x0015D7, 13}, {0x005747, 15}, {0x008D79, 16}, {0x006825, 16},
1918 {0x002BA2, 14}, {0x00A8BA, 16}, {0x0235F6, 18}, {0x015D18, 17},
1919 {0x0011AE, 13}, {0x00346F, 15}, {0x008C3B, 16}, {0x00346E, 15},
1920 {0x000D1A, 13}, {0x00461F, 15}, {0x0682F8, 20}, {0x011875, 17},
1921 {0x002BA1, 14}, {0x008D61, 16}, {0x0235F7, 18}, {0x0230E8, 18},
1922 {0x001513, 13}, {0x008D7B, 16}, {0x011AF4, 17}, {0x011AF5, 17},
1923 {0x001185, 13}, {0x0046BF, 15}, {0x008D60, 16}, {0x008D7C, 16},
1924 {0x001512, 13}, {0x00461C, 15}, {0x00AE8D, 16}, {0x008D78, 16},
1925 {0x000D0E, 13}, {0x003413, 15}, {0x0046B1, 15}, {0x003416, 15},
1926 {0x000AEA, 12}, {0x002A2C, 14}, {0x005741, 15}, {0x002A2F, 14},
1927 {0x000158, 9}, {0x0008D2, 12}, {0x00054C, 11}, {0x000686, 12},
1928 {0x000000, 2}, {0x000069, 8}, {0x00006B, 8}, {0x00068C, 12},
1929 {0x000007, 3}, {0x00015E, 9}, {0x0002A3, 10}, {0x000AE9, 12},
1930 {0x000006, 3}, {0x000231, 10}, {0x0002B8, 10}, {0x001A08, 14},
1931 {0x000010, 5}, {0x0001A9, 10}, {0x000342, 11}, {0x000A88, 12},
1932 {0x000004, 4}, {0x0001A2, 10}, {0x0002A4, 10}, {0x001184, 13},
1933 {0x000012, 5}, {0x000232, 10}, {0x0002B2, 10}, {0x000680, 12},
1934 {0x00001B, 6}, {0x00046A, 11}, {0x00068E, 12}, {0x002359, 14},
1935 {0x000016, 5}, {0x00015F, 9}, {0x0002A0, 10}, {0x00054D, 11},
1936 {0x000005, 4}, {0x000233, 10}, {0x0002B9, 10}, {0x0015D6, 13},
1937 {0x000022, 6}, {0x000468, 11}, {0x000683, 12}, {0x001A0A, 14},
1938 {0x000013, 5}, {0x000236, 10}, {0x0002BB, 10}, {0x001186, 13},
1939 {0x000017, 5}, {0x0001AB, 10}, {0x0002A7, 10}, {0x0008D3, 12},
1940 {0x000014, 5}, {0x000237, 10}, {0x000460, 11}, {0x000D0F, 13},
1941 {0x000019, 6}, {0x0001AA, 10}, {0x0002B3, 10}, {0x000681, 12},
1942 {0x000018, 6}, {0x0001A8, 10}, {0x0002A5, 10}, {0x00068F, 12},
1943 {0x000007, 4}, {0x000055, 7}, {0x000047, 7}, {0x0000AD, 8},
1944 };
1945
1946 static const uint32_t table_mb_non_intra4[128][2] = {
1947 {0x0000D4, 8}, {0x0021C5, 14}, {0x00F18A, 16}, {0x00D5BC, 16},
1948 {0x000879, 12}, {0x00354D, 14}, {0x010E3F, 17}, {0x010F54, 17},
1949 {0x000866, 12}, {0x00356E, 14}, {0x010F55, 17}, {0x010E3E, 17},
1950 {0x0010CE, 13}, {0x003C84, 14}, {0x00D5BD, 16}, {0x00F18B, 16},
1951 {0x000868, 12}, {0x00438C, 15}, {0x0087AB, 16}, {0x00790B, 15},
1952 {0x000F10, 12}, {0x00433D, 15}, {0x006AD3, 15}, {0x00790A, 15},
1953 {0x001AA7, 13}, {0x0043D4, 15}, {0x00871E, 16}, {0x006ADF, 15},
1954 {0x000D7C, 12}, {0x003C94, 14}, {0x00438D, 15}, {0x006AD2, 15},
1955 {0x0006BC, 11}, {0x0021E9, 14}, {0x006ADA, 15}, {0x006A99, 15},
1956 {0x0010F7, 13}, {0x004389, 15}, {0x006ADB, 15}, {0x0078C4, 15},
1957 {0x000D56, 12}, {0x0035F7, 14}, {0x00438E, 15}, {0x006A98, 15},
1958 {0x000D52, 12}, {0x003C95, 14}, {0x004388, 15}, {0x00433C, 15},
1959 {0x000D54, 12}, {0x001E4B, 13}, {0x003C63, 14}, {0x003C83, 14},
1960 {0x000861, 12}, {0x0021EB, 14}, {0x00356C, 14}, {0x0035F6, 14},
1961 {0x000863, 12}, {0x00219F, 14}, {0x003568, 14}, {0x003C82, 14},
1962 {0x0001AE, 9}, {0x0010C0, 13}, {0x000F11, 12}, {0x001AFA, 13},
1963 {0x000000, 1}, {0x0000F0, 8}, {0x0001AD, 9}, {0x0010C1, 13},
1964 {0x00000A, 4}, {0x0003C5, 10}, {0x000789, 11}, {0x001AB5, 13},
1965 {0x000009, 4}, {0x000435, 11}, {0x000793, 11}, {0x001E40, 13},
1966 {0x00001D, 5}, {0x0003CB, 10}, {0x000878, 12}, {0x001AAF, 13},
1967 {0x00000B, 4}, {0x0003C7, 10}, {0x000791, 11}, {0x001AAB, 13},
1968 {0x00001F, 5}, {0x000436, 11}, {0x0006BF, 11}, {0x000F19, 12},
1969 {0x00003D, 6}, {0x000D51, 12}, {0x0010C4, 13}, {0x0021E8, 14},
1970 {0x000036, 6}, {0x000437, 11}, {0x0006AF, 11}, {0x0010C5, 13},
1971 {0x00000C, 4}, {0x000432, 11}, {0x000794, 11}, {0x001E30, 13},
1972 {0x000042, 7}, {0x000870, 12}, {0x000F24, 12}, {0x001E43, 13},
1973 {0x000020, 6}, {0x00043E, 11}, {0x000795, 11}, {0x001AAA, 13},
1974 {0x000037, 6}, {0x0006AC, 11}, {0x0006AE, 11}, {0x0010F6, 13},
1975 {0x000034, 6}, {0x00043A, 11}, {0x000D50, 12}, {0x001AAE, 13},
1976 {0x000039, 6}, {0x00043F, 11}, {0x00078D, 11}, {0x0010D2, 13},
1977 {0x000038, 6}, {0x00043B, 11}, {0x0006BD, 11}, {0x0010D3, 13},
1978 {0x000011, 5}, {0x0001AC, 9}, {0x0000F3, 8}, {0x000439, 11},
1979 };
1980
1981 static const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
1982 table_mb_non_intra2,
1983 table_mb_non_intra3,
1984 table_mb_non_intra4,
1985 table_mb_non_intra,
1986 };
1987
1988 static const uint8_t wmv2_scantableA[64]={
1989 0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
1990 0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
1991 0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
1992 0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
1993 };
1994
1995 static const uint8_t wmv2_scantableB[64]={
1996 0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
1997 0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
1998 0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
1999 0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
2000 };