2
* VC-1 and WMV3 decoder
3
* copyright (c) 2006 Konstantin Shishkov
4
* (c) 2005 anonymous, Alex Beregszaszi, Michael Niedermayer
6
* This file is part of FFmpeg.
8
* FFmpeg is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License as published by the Free Software Foundation; either
11
* version 2.1 of the License, or (at your option) any later version.
13
* FFmpeg is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with FFmpeg; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
32
/** Table for conversion between TTBLK and TTMB */
33
const int ff_vc1_ttblk_to_tt[3][8] = {
34
{ TT_8X4, TT_4X8, TT_8X8, TT_4X4, TT_8X4_TOP, TT_8X4_BOTTOM, TT_4X8_RIGHT, TT_4X8_LEFT },
35
{ TT_8X8, TT_4X8_RIGHT, TT_4X8_LEFT, TT_4X4, TT_8X4, TT_4X8, TT_8X4_BOTTOM, TT_8X4_TOP },
36
{ TT_8X8, TT_4X8, TT_4X4, TT_8X4_BOTTOM, TT_4X8_RIGHT, TT_4X8_LEFT, TT_8X4, TT_8X4_TOP }
39
const int ff_vc1_ttfrm_to_tt[4] = { TT_8X8, TT_8X4, TT_4X8, TT_4X4 };
41
/** MV P mode - the 5th element is only used for mode 1 */
42
const uint8_t ff_vc1_mv_pmode_table[2][5] = {
43
{ MV_PMODE_1MV_HPEL_BILIN, MV_PMODE_1MV, MV_PMODE_1MV_HPEL, MV_PMODE_INTENSITY_COMP, MV_PMODE_MIXED_MV },
44
{ MV_PMODE_1MV, MV_PMODE_MIXED_MV, MV_PMODE_1MV_HPEL, MV_PMODE_INTENSITY_COMP, MV_PMODE_1MV_HPEL_BILIN }
46
const uint8_t ff_vc1_mv_pmode_table2[2][4] = {
47
{ MV_PMODE_1MV_HPEL_BILIN, MV_PMODE_1MV, MV_PMODE_1MV_HPEL, MV_PMODE_MIXED_MV },
48
{ MV_PMODE_1MV, MV_PMODE_MIXED_MV, MV_PMODE_1MV_HPEL, MV_PMODE_1MV_HPEL_BILIN }
51
const int ff_vc1_fps_nr[5] = { 24, 25, 30, 50, 60 },
52
ff_vc1_fps_dr[2] = { 1000, 1001 };
53
const uint8_t ff_vc1_pquant_table[3][32] = {
54
{ /* Implicit quantizer */
55
0, 1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8, 9, 10, 11, 12,
56
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 31
58
{ /* Explicit quantizer, pquantizer uniform */
59
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
60
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
62
{ /* Explicit quantizer, pquantizer non-uniform */
63
0, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
64
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31
68
/** @name VC-1 VLC tables and defines
69
* @todo TODO move this into the context
72
#define VC1_BFRACTION_VLC_BITS 7
73
VLC ff_vc1_bfraction_vlc;
74
#define VC1_IMODE_VLC_BITS 4
76
#define VC1_NORM2_VLC_BITS 3
78
#define VC1_NORM6_VLC_BITS 9
80
/* Could be optimized, one table only needs 8 bits */
81
#define VC1_TTMB_VLC_BITS 9 //12
82
VLC ff_vc1_ttmb_vlc[3];
83
#define VC1_MV_DIFF_VLC_BITS 9 //15
84
VLC ff_vc1_mv_diff_vlc[4];
85
#define VC1_CBPCY_P_VLC_BITS 9 //14
86
VLC ff_vc1_cbpcy_p_vlc[4];
87
#define VC1_4MV_BLOCK_PATTERN_VLC_BITS 6
88
VLC ff_vc1_4mv_block_pattern_vlc[4];
89
#define VC1_TTBLK_VLC_BITS 5
90
VLC ff_vc1_ttblk_vlc[3];
91
#define VC1_SUBBLKPAT_VLC_BITS 6
92
VLC ff_vc1_subblkpat_vlc[3];
94
VLC ff_vc1_ac_coeff_table[8];
98
#if B_FRACTION_DEN==840 //original bfraction from vc9data.h, not conforming to standard
99
/* bfraction is fractional, we scale to the GCD 3*5*7*8 = 840 */
100
const int16_t ff_vc1_bfraction_lut[23] = {
101
420 /*1/2*/, 280 /*1/3*/, 560 /*2/3*/, 210 /*1/4*/,
102
630 /*3/4*/, 168 /*1/5*/, 336 /*2/5*/,
103
504 /*3/5*/, 672 /*4/5*/, 140 /*1/6*/, 700 /*5/6*/,
104
120 /*1/7*/, 240 /*2/7*/, 360 /*3/7*/, 480 /*4/7*/,
105
600 /*5/7*/, 720 /*6/7*/, 105 /*1/8*/, 315 /*3/8*/,
106
525 /*5/8*/, 735 /*7/8*/,
107
-1 /*inv.*/, 0 /*BI fm*/
110
/* pre-computed scales for all bfractions and base=256 */
111
const int16_t ff_vc1_bfraction_lut[23] = {
112
128 /*1/2*/, 85 /*1/3*/, 170 /*2/3*/, 64 /*1/4*/,
113
192 /*3/4*/, 51 /*1/5*/, 102 /*2/5*/,
114
153 /*3/5*/, 204 /*4/5*/, 43 /*1/6*/, 215 /*5/6*/,
115
37 /*1/7*/, 74 /*2/7*/, 111 /*3/7*/, 148 /*4/7*/,
116
185 /*5/7*/, 222 /*6/7*/, 32 /*1/8*/, 96 /*3/8*/,
117
160 /*5/8*/, 224 /*7/8*/,
118
-1 /*inv.*/, 0 /*BI fm*/
122
const uint8_t ff_vc1_bfraction_bits[23] = {
131
const uint8_t ff_vc1_bfraction_codes[23] = {
142
const AVRational ff_vc1_pixel_aspect[16]={
161
/* BitPlane IMODE - such a small table... */
162
const uint8_t ff_vc1_imode_codes[7] = {
165
const uint8_t ff_vc1_imode_bits[7] = {
170
const uint8_t ff_vc1_norm2_codes[4] = {
173
const uint8_t ff_vc1_norm2_bits[4] = {
177
const uint16_t ff_vc1_norm6_codes[64] = {
178
0x001, 0x002, 0x003, 0x000, 0x004, 0x001, 0x002, 0x047, 0x005, 0x003, 0x004, 0x04B, 0x005, 0x04D, 0x04E, 0x30E,
179
0x006, 0x006, 0x007, 0x053, 0x008, 0x055, 0x056, 0x30D, 0x009, 0x059, 0x05A, 0x30C, 0x05C, 0x30B, 0x30A, 0x037,
180
0x007, 0x00A, 0x00B, 0x043, 0x00C, 0x045, 0x046, 0x309, 0x00D, 0x049, 0x04A, 0x308, 0x04C, 0x307, 0x306, 0x036,
181
0x00E, 0x051, 0x052, 0x305, 0x054, 0x304, 0x303, 0x035, 0x058, 0x302, 0x301, 0x034, 0x300, 0x033, 0x032, 0x007,
184
const uint8_t ff_vc1_norm6_bits[64] = {
185
1, 4, 4, 8, 4, 8, 8, 10, 4, 8, 8, 10, 8, 10, 10, 13,
186
4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
187
4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
188
8, 10, 10, 13, 10, 13, 13, 9, 10, 13, 13, 9, 13, 9, 9, 6,
191
const uint8_t ff_vc1_norm6_spec[64][5] = {
258
/* 4MV Block pattern VLC tables */
259
const uint8_t ff_vc1_4mv_block_pattern_codes[4][16] = {
260
{ 14, 58, 59, 25, 12, 26, 15, 15, 13, 24, 27, 0, 28, 1, 2, 2},
261
{ 8, 18, 19, 4, 20, 5, 30, 11, 21, 31, 6, 12, 7, 13, 14, 0},
262
{ 15, 6, 7, 2, 8, 3, 28, 9, 10, 29, 4, 11, 5, 12, 13, 0},
263
{ 0, 11, 12, 4, 13, 5, 30, 16, 14, 31, 6, 17, 7, 18, 19, 10}
265
const uint8_t ff_vc1_4mv_block_pattern_bits[4][16] = {
266
{ 5, 6, 6, 5, 5, 5, 5, 4, 5, 5, 5, 3, 5, 3, 3, 2},
267
{ 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2},
268
{ 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 4, 4, 4, 4, 4, 3},
269
{ 2, 4, 4, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4}
272
const uint8_t wmv3_dc_scale_table[32]={
273
0, 2, 4, 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
276
/* P-Picture CBPCY VLC tables */
277
#if 1 // Looks like original tables are not conforming to standard at all. Are they used for old WMV?
278
const uint16_t ff_vc1_cbpcy_p_codes[4][64] = {
280
0, 6, 15, 13, 13, 11, 3, 13, 5, 8, 49, 10, 12, 114, 102, 119,
281
1, 54, 96, 8, 10, 111, 5, 15, 12, 10, 2, 12, 13, 115, 53, 63,
282
1, 7, 1, 7, 14, 12, 4, 14, 1, 9, 97, 11, 7, 58, 52, 62,
283
4, 103, 1, 9, 11, 56, 101, 118, 4, 110, 100, 30, 2, 5, 4, 3
286
0, 9, 1, 18, 5, 14, 237, 26, 3, 121, 3, 22, 13, 16, 6, 30,
287
2, 10, 1, 20, 12, 241, 5, 28, 16, 12, 3, 24, 28, 124, 239, 247,
288
1, 240, 1, 19, 18, 15, 4, 27, 1, 122, 2, 23, 1, 17, 7, 31,
289
1, 11, 2, 21, 19, 246, 238, 29, 17, 13, 236, 25, 58, 63, 8, 125
292
0, 201, 25, 231, 5, 221, 1, 3, 2, 414, 2, 241, 16, 225, 195, 492,
293
2, 412, 1, 240, 7, 224, 98, 245, 1, 220, 96, 5, 9, 230, 101, 247,
294
1, 102, 1, 415, 24, 3, 2, 244, 3, 54, 3, 484, 17, 114, 200, 493,
295
3, 413, 1, 4, 13, 113, 99, 485, 4, 111, 194, 243, 5, 29, 26, 31
298
0, 28, 12, 44, 3, 36, 20, 52, 2, 32, 16, 48, 8, 40, 24, 28,
299
1, 30, 14, 46, 6, 38, 22, 54, 3, 34, 18, 50, 10, 42, 26, 30,
300
1, 29, 13, 45, 5, 37, 21, 53, 2, 33, 17, 49, 9, 41, 25, 29,
301
1, 31, 15, 47, 7, 39, 23, 55, 4, 35, 19, 51, 11, 43, 27, 31
305
const uint8_t ff_vc1_cbpcy_p_bits[4][64] = {
307
13, 13, 7, 13, 7, 13, 13, 12, 6, 13, 7, 12, 6, 8, 8, 8,
308
5, 7, 8, 12, 6, 8, 13, 12, 7, 13, 13, 12, 6, 8, 7, 7,
309
6, 13, 8, 12, 7, 13, 13, 12, 7, 13, 8, 12, 5, 7, 7, 7,
310
6, 8, 13, 12, 6, 7, 8, 8, 5, 8, 8, 6, 3, 3, 3, 2
313
14, 13, 8, 13, 3, 13, 8, 13, 3, 7, 8, 13, 4, 13, 13, 13,
314
3, 13, 13, 13, 4, 8, 13, 13, 5, 13, 13, 13, 5, 7, 8, 8,
315
3, 8, 14, 13, 5, 13, 13, 13, 4, 7, 13, 13, 6, 13, 13, 13,
316
5, 13, 8, 13, 5, 8, 8, 13, 5, 13, 8, 13, 6, 6, 13, 7
319
13, 8, 6, 8, 4, 8, 13, 12, 4, 9, 8, 8, 5, 8, 8, 9,
320
5, 9, 10, 8, 4, 8, 7, 8, 6, 8, 7, 13, 4, 8, 7, 8,
321
5, 7, 8, 9, 6, 13, 13, 8, 4, 6, 8, 9, 5, 7, 8, 9,
322
5, 9, 9, 13, 5, 7, 7, 9, 4, 7, 8, 8, 3, 5, 5, 5
325
9, 9, 9, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 8,
326
3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
327
2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
328
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8
332
const uint16_t ff_vc1_cbpcy_p_codes[4][64] = {
334
0, 1, 1, 4, 5, 1, 12, 4, 13, 14, 10, 11, 12, 7, 13, 2,
335
15, 1, 96, 1, 49, 97, 2, 100, 3, 4, 5, 101, 102, 52, 53, 4,
336
6, 7, 54, 103, 8, 9, 10, 110, 11, 12, 111, 56, 114, 58, 115, 5,
337
13, 7, 8, 9, 10, 11, 12, 30, 13, 14, 15, 118, 119, 62, 63, 3
340
0, 1, 2, 1, 3, 1, 16, 17, 5, 18, 12, 19, 13, 1, 28, 58,
341
1, 1, 1, 2, 3, 2, 3, 236, 237, 4, 5, 238, 6, 7, 239, 8,
342
9, 240, 10, 11, 121, 122, 12, 13, 14, 15, 241, 246, 16, 17, 124, 63,
343
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 247, 125
346
0, 1, 2, 3, 2, 3, 1, 4, 5, 24, 7, 13, 16, 17, 9, 5,
347
25, 1, 1, 1, 2, 3, 96, 194, 1, 2, 98, 99, 195, 200, 101, 26,
348
201, 102, 412, 413, 414, 54, 220, 111, 221, 3, 224, 113, 225, 114, 230, 29,
349
231, 415, 240, 4, 241, 484, 5, 243, 3, 244, 245, 485, 492, 493, 247, 31
352
0, 1, 1, 1, 2, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11,
353
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
354
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
355
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 28, 29, 30, 31
358
const uint8_t ff_vc1_cbpcy_p_bits[4][64] = {
360
13, 6, 5, 6, 6, 7, 7, 5, 7, 7, 6, 6, 6, 5, 6, 3,
361
7, 8, 8, 13, 7, 8, 13, 8, 13, 13, 13, 8, 8, 7, 7, 3,
362
13, 13, 7, 8, 13, 13, 13, 8, 13, 13, 8, 7, 8, 7, 8, 3,
363
13, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 8, 8, 7, 7, 2
366
14, 3, 3, 5, 3, 4, 5, 5, 3, 5, 4, 5, 4, 6, 5, 6,
367
8, 14, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 13, 13, 8, 13,
368
13, 8, 13, 13, 7, 7, 13, 13, 13, 13, 8, 8, 13, 13, 7, 6,
369
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 7
372
13, 5, 5, 5, 4, 4, 6, 4, 4, 6, 4, 5, 5, 5, 4, 3,
373
6, 8, 10, 9, 8, 8, 7, 8, 13, 13, 7, 7, 8, 8, 7, 5,
374
8, 7, 9, 9, 9, 6, 8, 7, 8, 13, 8, 7, 8, 7, 8, 5,
375
8, 9, 8, 13, 8, 9, 13, 8, 12, 8, 8, 9, 9, 9, 8, 5
378
9, 2, 3, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
379
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
380
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
381
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8
386
/* MacroBlock Transform Type: 7.1.3.11, p89
388
* 8x4:B:btm 8x4:B:top 8x4:B:both,
389
* 4x8:B:right 4x8:B:left 4x8:B:both
391
* 8x4:MB:btm 8x4:MB:top 8x4,MB,both
392
* 4x8,MB,right 4x8,MB,left
394
const uint16_t ff_vc1_ttmb_codes[3][16] = {
397
0x002E, 0x005F, 0x0000,
398
0x0016, 0x0015, 0x0001,
400
0x02F1, 0x0179, 0x017B,
401
0x0BC0, 0x0BC1, 0x05E1,
406
0x0006, 0x0003, 0x0007,
407
0x000F, 0x000E, 0x0000,
409
0x0014, 0x0011, 0x000B,
410
0x0009, 0x0021, 0x0015,
415
0x0000, 0x000E, 0x0005,
416
0x0002, 0x0003, 0x0003,
418
0x0081, 0x0021, 0x0009,
419
0x0101, 0x0041, 0x0011,
424
const uint8_t ff_vc1_ttmb_bits[3][16] = {
454
/* TTBLK (Transform Type per Block) tables */
455
const uint8_t ff_vc1_ttblk_codes[3][8] = {
456
{ 0, 1, 3, 5, 16, 17, 18, 19},
457
{ 3, 0, 1, 2, 3, 5, 8, 9},
458
{ 1, 0, 1, 4, 6, 7, 10, 11}
460
const uint8_t ff_vc1_ttblk_bits[3][8] = {
461
{ 2, 2, 2, 3, 5, 5, 5, 5},
462
{ 2, 3, 3, 3, 3, 3, 4, 4},
463
{ 2, 3, 3, 3, 3, 3, 4, 4}
466
/* SUBBLKPAT tables, p93-94, reordered */
467
const uint8_t ff_vc1_subblkpat_codes[3][15] = {
468
{ 14, 12, 7, 11, 9, 26, 2, 10, 27, 8, 0, 6, 1, 15, 1},
469
{ 14, 0, 8, 15, 10, 4, 23, 13, 5, 9, 25, 3, 24, 22, 1},
470
{ 5, 6, 2, 2, 8, 0, 28, 3, 1, 3, 29, 1, 19, 18, 15}
472
const uint8_t ff_vc1_subblkpat_bits[3][15] = {
473
{ 5, 5, 5, 5, 5, 6, 4, 5, 6, 5, 4, 5, 4, 5, 1},
474
{ 4, 3, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 2},
475
{ 3, 3, 4, 3, 4, 5, 5, 3, 5, 4, 5, 4, 5, 5, 4}
478
/* MV differential tables, p265 */
479
const uint16_t ff_vc1_mv_diff_codes[4][73] = {
481
0, 2, 3, 8, 576, 3, 2, 6,
482
5, 577, 578, 7, 8, 9, 40, 19,
483
37, 82, 21, 22, 23, 579, 580, 166,
484
96, 167, 49, 194, 195, 581, 582, 583,
485
292, 293, 294, 13, 2, 7, 24, 50,
486
102, 295, 13, 7, 8, 18, 50, 103,
487
38, 20, 21, 22, 39, 204, 103, 23,
488
24, 25, 104, 410, 105, 106, 107, 108,
489
109, 220, 411, 442, 222, 443, 446, 447,
493
0, 4, 5, 3, 4, 3, 4, 5,
494
20, 6, 21, 44, 45, 46, 3008, 95,
495
112, 113, 57, 3009, 3010, 116, 117, 3011,
496
118, 3012, 3013, 3014, 3015, 3016, 3017, 3018,
497
3019, 3020, 3021, 3022, 1, 4, 15, 160,
498
161, 41, 6, 11, 42, 162, 43, 119,
499
56, 57, 58, 163, 236, 237, 3023, 119,
500
120, 242, 122, 486, 1512, 487, 246, 494,
501
1513, 495, 1514, 1515, 1516, 1517, 1518, 1519,
505
0, 512, 513, 514, 515, 2, 3, 258,
506
259, 260, 261, 262, 263, 264, 265, 266,
507
267, 268, 269, 270, 271, 272, 273, 274,
508
275, 276, 277, 278, 279, 280, 281, 282,
509
283, 284, 285, 286, 1, 5, 287, 288,
510
289, 290, 6, 7, 291, 292, 293, 294,
511
295, 296, 297, 298, 299, 300, 301, 302,
512
303, 304, 305, 306, 307, 308, 309, 310,
513
311, 312, 313, 314, 315, 316, 317, 318,
514
319 /* 73 elements */
517
0, 1, 1, 2, 3, 4, 1, 5,
518
4, 3, 5, 8, 6, 9, 10, 11,
519
12, 7, 104, 14, 105, 4, 10, 15,
520
11, 6, 14, 8, 106, 107, 108, 15,
521
109, 9, 55, 10, 1, 2, 1, 2,
522
3, 12, 6, 2, 6, 7, 28, 7,
523
15, 8, 5, 18, 29, 152, 77, 24,
524
25, 26, 39, 108, 13, 109, 55, 56,
525
57, 116, 11, 153, 234, 235, 118, 119,
529
const uint8_t ff_vc1_mv_diff_bits[4][73] = {
531
6, 7, 7, 8, 14, 6, 5, 6, 7, 14, 14, 6, 6, 6, 8, 9,
532
10, 9, 7, 7, 7, 14, 14, 10, 9, 10, 8, 10, 10, 14, 14, 14,
533
13, 13, 13, 6, 3, 5, 6, 8, 9, 13, 5, 4, 4, 5, 7, 9,
534
6, 5, 5, 5, 6, 9, 8, 5, 5, 5, 7, 10, 7, 7, 7, 7,
535
7, 8, 10, 9, 8, 9, 9, 9, 3 /* 73 elements */
538
5, 7, 7, 6, 6, 5, 5, 6, 7, 5, 7, 8, 8, 8, 14, 9,
539
9, 9, 8, 14, 14, 9, 9, 14, 9, 14, 14, 14, 14, 14, 14, 14,
540
14, 14, 14, 14, 2, 3, 6, 8, 8, 6, 3, 4, 6, 8, 6, 9,
541
6, 6, 6, 8, 8, 8, 14, 7, 7, 8, 7, 9, 13, 9, 8, 9,
542
13, 9, 13, 13, 13, 13, 13, 13, 5 /* 73 elements */
546
3, 12, 12, 12, 12, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11,
547
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
548
11, 11, 11, 11, 1, 5, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11,
549
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
550
11, 11, 11, 11, 11, 11, 11, 11, 11 /* 73 elements */
553
15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12,
554
12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11,
555
15, 10, 14, 10, 4, 4, 5, 7, 8, 9, 5, 3, 4, 5, 6, 8,
556
5, 4, 3, 5, 6, 8, 7, 5, 5, 5, 6, 7, 9, 7, 6, 6,
557
6, 7, 10, 8, 8, 8, 7, 7, 4 /* 73 elements */
561
/* DC differentials low+hi-mo, p217 are the same as in msmpeg4data .h */
563
/* Scantables/ZZ scan are at 11.9 (p262) and 8.1.1.12 (p10) */
564
const int8_t ff_vc1_normal_zz[64] = {
565
0, 8, 1, 2, 9, 16, 24, 17,
566
10, 3, 4, 11, 18, 25, 32, 40,
567
33, 48, 26, 19, 12, 5, 6, 13,
568
20, 27, 34, 41, 56, 49, 57, 42,
569
35, 28, 21, 14, 7, 15, 22, 29,
570
36, 43, 50, 58, 51, 59, 44, 37,
571
30, 23, 31, 38, 45, 52, 60, 53,
572
61, 46, 39, 47, 54, 62, 55, 63
575
const int8_t ff_vc1_horizontal_zz [64] = /* Table 227 */
577
0, 1, 8, 2, 3, 9, 16, 24,
578
17, 10, 4, 5, 11, 18, 25, 32,
579
40, 48, 33, 26, 19, 12, 6, 7,
580
13, 20, 27, 34, 41, 56, 49, 57,
581
42, 35, 28, 21, 14, 15, 22, 29,
582
36, 43, 50, 58, 51, 44, 37, 30,
583
23, 31, 38, 45, 52, 59, 60, 53,
584
46, 39, 47, 54, 61, 62, 55, 63
587
const int8_t ff_vc1_vertical_zz [64] = /* Table 228 */
589
0, 8, 16, 1, 24, 32, 40, 9,
590
2, 3, 10, 17, 25, 48, 56, 41,
591
33, 26, 18, 11, 4, 5, 12, 19,
592
27, 34, 49, 57, 50, 42, 35, 28,
593
20, 13, 6, 7, 14, 21, 29, 36,
594
43, 51, 58, 59, 52, 44, 37, 30,
595
22, 15, 23, 31, 38, 45, 60, 53,
596
46, 39, 47, 54, 61, 62, 55, 63
599
const int8_t ff_vc1_simple_progressive_8x8_zz [64] =
602
0, 8, 1, 2, 9, 16, 24, 17,
603
10, 3, 4, 11, 18, 25, 32, 40,
604
48, 56, 41, 33, 26, 19, 12, 5,
605
6, 13, 20, 27, 34, 49, 57, 58,
606
50, 42, 35, 28, 21, 14, 7, 15,
607
22, 29, 36, 43, 51, 59, 60, 52,
608
44, 37, 30, 23, 31, 38, 45, 53,
609
61, 62, 54, 46, 39, 47, 55, 63
612
const int8_t ff_vc1_simple_progressive_8x4_zz [32] = /* Table 230 */
614
0, 1, 2, 8, 3, 9, 10, 16,
615
4, 11, 17, 24, 18, 12, 5, 19,
616
25, 13, 20, 26, 27, 6, 21, 28,
617
14, 22, 29, 7, 30, 15, 23, 31
620
const int8_t ff_vc1_simple_progressive_4x8_zz [32] = /* Table 231 */
633
const int8_t ff_vc1_simple_progressive_4x4_zz [16] =
641
const int8_t ff_vc1_adv_progressive_8x4_zz [32] = /* Table 233 */
643
0, 8, 1, 16, 2, 9, 10, 3,
644
24, 17, 4, 11, 18, 12, 5, 19,
645
25, 13, 20, 26, 27, 6, 21, 28,
646
14, 22, 29, 7, 30, 15, 23, 31
649
const int8_t ff_vc1_adv_progressive_4x8_zz [32] = /* Table 234 */
661
const int8_t ff_vc1_adv_interlaced_8x8_zz [64] = /* Table 235 */
663
0, 8, 1, 16, 24, 9, 2, 32,
664
40, 48, 56, 17, 10, 3, 25, 18,
665
11, 4, 33, 41, 49, 57, 26, 34,
666
42, 50, 58, 19, 12, 5, 27, 20,
667
13, 6, 35, 28, 21, 14, 7, 15,
668
22, 29, 36, 43, 51, 59, 60, 52,
669
44, 37, 30, 23, 31, 38, 45, 53,
670
61, 62, 54, 46, 39, 47, 55, 63
673
const int8_t ff_vc1_adv_interlaced_8x4_zz [32] = /* Table 236 */
675
0, 8, 16, 24, 1, 9, 2, 17,
676
25, 10, 3, 18, 26, 4, 11, 19,
677
12, 5, 13, 20, 27, 6, 21, 28,
678
14, 22, 29, 7, 30, 15, 23, 31
681
const int8_t ff_vc1_adv_interlaced_4x8_zz [32] = /* Table 237 */
693
const int8_t ff_vc1_adv_interlaced_4x4_zz [16] = /* Table 238 */
702
/* DQScale as specified in 8.1.3.9 - almost identical to 0x40000/i */
703
const int32_t ff_vc1_dqscale[63] = {
704
0x40000, 0x20000, 0x15555, 0x10000, 0xCCCD, 0xAAAB, 0x9249, 0x8000,
705
0x71C7, 0x6666, 0x5D17, 0x5555, 0x4EC5, 0x4925, 0x4444, 0x4000,
706
0x3C3C, 0x38E4, 0x35E5, 0x3333, 0x30C3, 0x2E8C, 0x2C86, 0x2AAB,
707
0x28F6, 0x2762, 0x25ED, 0x2492, 0x234F, 0x2222, 0x2108, 0x2000,
708
0x1F08, 0x1E1E, 0x1D42, 0x1C72, 0x1BAD, 0x1AF3, 0x1A42, 0x199A,
709
0x18FA, 0x1862, 0x17D0, 0x1746, 0x16C1, 0x1643, 0x15CA, 0x1555,
710
0x14E6, 0x147B, 0x1414, 0x13B1, 0x1352, 0x12F7, 0x129E, 0x1249,
711
0x11F7, 0x11A8, 0x115B, 0x1111, 0x10C9, 0x1084, 0x1000