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
24
* @file libavcodec/vc1data.c
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,
192
const uint8_t ff_vc1_norm6_spec[64][5] = {
260
/* 4MV Block pattern VLC tables */
261
const uint8_t ff_vc1_4mv_block_pattern_codes[4][16] = {
262
{ 14, 58, 59, 25, 12, 26, 15, 15, 13, 24, 27, 0, 28, 1, 2, 2},
263
{ 8, 18, 19, 4, 20, 5, 30, 11, 21, 31, 6, 12, 7, 13, 14, 0},
264
{ 15, 6, 7, 2, 8, 3, 28, 9, 10, 29, 4, 11, 5, 12, 13, 0},
265
{ 0, 11, 12, 4, 13, 5, 30, 16, 14, 31, 6, 17, 7, 18, 19, 10}
267
const uint8_t ff_vc1_4mv_block_pattern_bits[4][16] = {
268
{ 5, 6, 6, 5, 5, 5, 5, 4, 5, 5, 5, 3, 5, 3, 3, 2},
269
{ 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2},
270
{ 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 4, 4, 4, 4, 4, 3},
271
{ 2, 4, 4, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4}
274
const uint8_t wmv3_dc_scale_table[32]={
275
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
278
/* P-Picture CBPCY VLC tables */
279
#if 1 // Looks like original tables are not conforming to standard at all. Are they used for old WMV?
280
const uint16_t ff_vc1_cbpcy_p_codes[4][64] = {
282
0, 6, 15, 13, 13, 11, 3, 13, 5, 8, 49, 10, 12, 114, 102, 119,
283
1, 54, 96, 8, 10, 111, 5, 15, 12, 10, 2, 12, 13, 115, 53, 63,
284
1, 7, 1, 7, 14, 12, 4, 14, 1, 9, 97, 11, 7, 58, 52, 62,
285
4, 103, 1, 9, 11, 56, 101, 118, 4, 110, 100, 30, 2, 5, 4, 3
288
0, 9, 1, 18, 5, 14, 237, 26, 3, 121, 3, 22, 13, 16, 6, 30,
289
2, 10, 1, 20, 12, 241, 5, 28, 16, 12, 3, 24, 28, 124, 239, 247,
290
1, 240, 1, 19, 18, 15, 4, 27, 1, 122, 2, 23, 1, 17, 7, 31,
291
1, 11, 2, 21, 19, 246, 238, 29, 17, 13, 236, 25, 58, 63, 8, 125
294
0, 201, 25, 231, 5, 221, 1, 3, 2, 414, 2, 241, 16, 225, 195, 492,
295
2, 412, 1, 240, 7, 224, 98, 245, 1, 220, 96, 5, 9, 230, 101, 247,
296
1, 102, 1, 415, 24, 3, 2, 244, 3, 54, 3, 484, 17, 114, 200, 493,
297
3, 413, 1, 4, 13, 113, 99, 485, 4, 111, 194, 243, 5, 29, 26, 31
300
0, 28, 12, 44, 3, 36, 20, 52, 2, 32, 16, 48, 8, 40, 24, 28,
301
1, 30, 14, 46, 6, 38, 22, 54, 3, 34, 18, 50, 10, 42, 26, 30,
302
1, 29, 13, 45, 5, 37, 21, 53, 2, 33, 17, 49, 9, 41, 25, 29,
303
1, 31, 15, 47, 7, 39, 23, 55, 4, 35, 19, 51, 11, 43, 27, 31
307
const uint8_t ff_vc1_cbpcy_p_bits[4][64] = {
309
13, 13, 7, 13, 7, 13, 13, 12, 6, 13, 7, 12, 6, 8, 8, 8,
310
5, 7, 8, 12, 6, 8, 13, 12, 7, 13, 13, 12, 6, 8, 7, 7,
311
6, 13, 8, 12, 7, 13, 13, 12, 7, 13, 8, 12, 5, 7, 7, 7,
312
6, 8, 13, 12, 6, 7, 8, 8, 5, 8, 8, 6, 3, 3, 3, 2
315
14, 13, 8, 13, 3, 13, 8, 13, 3, 7, 8, 13, 4, 13, 13, 13,
316
3, 13, 13, 13, 4, 8, 13, 13, 5, 13, 13, 13, 5, 7, 8, 8,
317
3, 8, 14, 13, 5, 13, 13, 13, 4, 7, 13, 13, 6, 13, 13, 13,
318
5, 13, 8, 13, 5, 8, 8, 13, 5, 13, 8, 13, 6, 6, 13, 7
321
13, 8, 6, 8, 4, 8, 13, 12, 4, 9, 8, 8, 5, 8, 8, 9,
322
5, 9, 10, 8, 4, 8, 7, 8, 6, 8, 7, 13, 4, 8, 7, 8,
323
5, 7, 8, 9, 6, 13, 13, 8, 4, 6, 8, 9, 5, 7, 8, 9,
324
5, 9, 9, 13, 5, 7, 7, 9, 4, 7, 8, 8, 3, 5, 5, 5
327
9, 9, 9, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 8,
328
3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
329
2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
330
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8
334
const uint16_t ff_vc1_cbpcy_p_codes[4][64] = {
336
0, 1, 1, 4, 5, 1, 12, 4, 13, 14, 10, 11, 12, 7, 13, 2,
337
15, 1, 96, 1, 49, 97, 2, 100, 3, 4, 5, 101, 102, 52, 53, 4,
338
6, 7, 54, 103, 8, 9, 10, 110, 11, 12, 111, 56, 114, 58, 115, 5,
339
13, 7, 8, 9, 10, 11, 12, 30, 13, 14, 15, 118, 119, 62, 63, 3
342
0, 1, 2, 1, 3, 1, 16, 17, 5, 18, 12, 19, 13, 1, 28, 58,
343
1, 1, 1, 2, 3, 2, 3, 236, 237, 4, 5, 238, 6, 7, 239, 8,
344
9, 240, 10, 11, 121, 122, 12, 13, 14, 15, 241, 246, 16, 17, 124, 63,
345
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 247, 125
348
0, 1, 2, 3, 2, 3, 1, 4, 5, 24, 7, 13, 16, 17, 9, 5,
349
25, 1, 1, 1, 2, 3, 96, 194, 1, 2, 98, 99, 195, 200, 101, 26,
350
201, 102, 412, 413, 414, 54, 220, 111, 221, 3, 224, 113, 225, 114, 230, 29,
351
231, 415, 240, 4, 241, 484, 5, 243, 3, 244, 245, 485, 492, 493, 247, 31
354
0, 1, 1, 1, 2, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11,
355
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
356
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
357
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 28, 29, 30, 31
360
const uint8_t ff_vc1_cbpcy_p_bits[4][64] = {
362
13, 6, 5, 6, 6, 7, 7, 5, 7, 7, 6, 6, 6, 5, 6, 3,
363
7, 8, 8, 13, 7, 8, 13, 8, 13, 13, 13, 8, 8, 7, 7, 3,
364
13, 13, 7, 8, 13, 13, 13, 8, 13, 13, 8, 7, 8, 7, 8, 3,
365
13, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 8, 8, 7, 7, 2
368
14, 3, 3, 5, 3, 4, 5, 5, 3, 5, 4, 5, 4, 6, 5, 6,
369
8, 14, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 13, 13, 8, 13,
370
13, 8, 13, 13, 7, 7, 13, 13, 13, 13, 8, 8, 13, 13, 7, 6,
371
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 7
374
13, 5, 5, 5, 4, 4, 6, 4, 4, 6, 4, 5, 5, 5, 4, 3,
375
6, 8, 10, 9, 8, 8, 7, 8, 13, 13, 7, 7, 8, 8, 7, 5,
376
8, 7, 9, 9, 9, 6, 8, 7, 8, 13, 8, 7, 8, 7, 8, 5,
377
8, 9, 8, 13, 8, 9, 13, 8, 12, 8, 8, 9, 9, 9, 8, 5
380
9, 2, 3, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
381
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
382
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
383
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8
388
/* MacroBlock Transform Type: 7.1.3.11, p89
390
* 8x4:B:btm 8x4:B:top 8x4:B:both,
391
* 4x8:B:right 4x8:B:left 4x8:B:both
393
* 8x4:MB:btm 8x4:MB:top 8x4,MB,both
394
* 4x8,MB,right 4x8,MB,left
396
const uint16_t ff_vc1_ttmb_codes[3][16] = {
399
0x002E, 0x005F, 0x0000,
400
0x0016, 0x0015, 0x0001,
402
0x02F1, 0x0179, 0x017B,
403
0x0BC0, 0x0BC1, 0x05E1,
408
0x0006, 0x0003, 0x0007,
409
0x000F, 0x000E, 0x0000,
411
0x0014, 0x0011, 0x000B,
412
0x0009, 0x0021, 0x0015,
417
0x0000, 0x000E, 0x0005,
418
0x0002, 0x0003, 0x0003,
420
0x0081, 0x0021, 0x0009,
421
0x0101, 0x0041, 0x0011,
426
const uint8_t ff_vc1_ttmb_bits[3][16] = {
456
/* TTBLK (Transform Type per Block) tables */
457
const uint8_t ff_vc1_ttblk_codes[3][8] = {
458
{ 0, 1, 3, 5, 16, 17, 18, 19},
459
{ 3, 0, 1, 2, 3, 5, 8, 9},
460
{ 1, 0, 1, 4, 6, 7, 10, 11}
462
const uint8_t ff_vc1_ttblk_bits[3][8] = {
463
{ 2, 2, 2, 3, 5, 5, 5, 5},
464
{ 2, 3, 3, 3, 3, 3, 4, 4},
465
{ 2, 3, 3, 3, 3, 3, 4, 4}
468
/* SUBBLKPAT tables, p93-94, reordered */
469
const uint8_t ff_vc1_subblkpat_codes[3][15] = {
470
{ 14, 12, 7, 11, 9, 26, 2, 10, 27, 8, 0, 6, 1, 15, 1},
471
{ 14, 0, 8, 15, 10, 4, 23, 13, 5, 9, 25, 3, 24, 22, 1},
472
{ 5, 6, 2, 2, 8, 0, 28, 3, 1, 3, 29, 1, 19, 18, 15}
474
const uint8_t ff_vc1_subblkpat_bits[3][15] = {
475
{ 5, 5, 5, 5, 5, 6, 4, 5, 6, 5, 4, 5, 4, 5, 1},
476
{ 4, 3, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 2},
477
{ 3, 3, 4, 3, 4, 5, 5, 3, 5, 4, 5, 4, 5, 5, 4}
480
/* MV differential tables, p265 */
481
const uint16_t ff_vc1_mv_diff_codes[4][73] = {
483
0, 2, 3, 8, 576, 3, 2, 6,
484
5, 577, 578, 7, 8, 9, 40, 19,
485
37, 82, 21, 22, 23, 579, 580, 166,
486
96, 167, 49, 194, 195, 581, 582, 583,
487
292, 293, 294, 13, 2, 7, 24, 50,
488
102, 295, 13, 7, 8, 18, 50, 103,
489
38, 20, 21, 22, 39, 204, 103, 23,
490
24, 25, 104, 410, 105, 106, 107, 108,
491
109, 220, 411, 442, 222, 443, 446, 447,
495
0, 4, 5, 3, 4, 3, 4, 5,
496
20, 6, 21, 44, 45, 46, 3008, 95,
497
112, 113, 57, 3009, 3010, 116, 117, 3011,
498
118, 3012, 3013, 3014, 3015, 3016, 3017, 3018,
499
3019, 3020, 3021, 3022, 1, 4, 15, 160,
500
161, 41, 6, 11, 42, 162, 43, 119,
501
56, 57, 58, 163, 236, 237, 3023, 119,
502
120, 242, 122, 486, 1512, 487, 246, 494,
503
1513, 495, 1514, 1515, 1516, 1517, 1518, 1519,
507
0, 512, 513, 514, 515, 2, 3, 258,
508
259, 260, 261, 262, 263, 264, 265, 266,
509
267, 268, 269, 270, 271, 272, 273, 274,
510
275, 276, 277, 278, 279, 280, 281, 282,
511
283, 284, 285, 286, 1, 5, 287, 288,
512
289, 290, 6, 7, 291, 292, 293, 294,
513
295, 296, 297, 298, 299, 300, 301, 302,
514
303, 304, 305, 306, 307, 308, 309, 310,
515
311, 312, 313, 314, 315, 316, 317, 318,
516
319 /* 73 elements */
519
0, 1, 1, 2, 3, 4, 1, 5,
520
4, 3, 5, 8, 6, 9, 10, 11,
521
12, 7, 104, 14, 105, 4, 10, 15,
522
11, 6, 14, 8, 106, 107, 108, 15,
523
109, 9, 55, 10, 1, 2, 1, 2,
524
3, 12, 6, 2, 6, 7, 28, 7,
525
15, 8, 5, 18, 29, 152, 77, 24,
526
25, 26, 39, 108, 13, 109, 55, 56,
527
57, 116, 11, 153, 234, 235, 118, 119,
531
const uint8_t ff_vc1_mv_diff_bits[4][73] = {
533
6, 7, 7, 8, 14, 6, 5, 6, 7, 14, 14, 6, 6, 6, 8, 9,
534
10, 9, 7, 7, 7, 14, 14, 10, 9, 10, 8, 10, 10, 14, 14, 14,
535
13, 13, 13, 6, 3, 5, 6, 8, 9, 13, 5, 4, 4, 5, 7, 9,
536
6, 5, 5, 5, 6, 9, 8, 5, 5, 5, 7, 10, 7, 7, 7, 7,
537
7, 8, 10, 9, 8, 9, 9, 9, 3 /* 73 elements */
540
5, 7, 7, 6, 6, 5, 5, 6, 7, 5, 7, 8, 8, 8, 14, 9,
541
9, 9, 8, 14, 14, 9, 9, 14, 9, 14, 14, 14, 14, 14, 14, 14,
542
14, 14, 14, 14, 2, 3, 6, 8, 8, 6, 3, 4, 6, 8, 6, 9,
543
6, 6, 6, 8, 8, 8, 14, 7, 7, 8, 7, 9, 13, 9, 8, 9,
544
13, 9, 13, 13, 13, 13, 13, 13, 5 /* 73 elements */
548
3, 12, 12, 12, 12, 3, 4, 11, 11, 11, 11, 11, 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, 1, 5, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11,
551
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
552
11, 11, 11, 11, 11, 11, 11, 11, 11 /* 73 elements */
555
15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12,
556
12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11,
557
15, 10, 14, 10, 4, 4, 5, 7, 8, 9, 5, 3, 4, 5, 6, 8,
558
5, 4, 3, 5, 6, 8, 7, 5, 5, 5, 6, 7, 9, 7, 6, 6,
559
6, 7, 10, 8, 8, 8, 7, 7, 4 /* 73 elements */
563
/* DC differentials low+hi-mo, p217 are the same as in msmpeg4data .h */
566
const int8_t ff_vc1_simple_progressive_4x4_zz [16] =
574
const int8_t ff_vc1_adv_progressive_8x4_zz [32] = /* Table 233 */
576
0, 8, 1, 16, 2, 9, 10, 3,
577
24, 17, 4, 11, 18, 12, 5, 19,
578
25, 13, 20, 26, 27, 6, 21, 28,
579
14, 22, 29, 7, 30, 15, 23, 31
582
const int8_t ff_vc1_adv_progressive_4x8_zz [32] = /* Table 234 */
594
const int8_t ff_vc1_adv_interlaced_8x8_zz [64] = /* Table 235 */
596
0, 8, 1, 16, 24, 9, 2, 32,
597
40, 48, 56, 17, 10, 3, 25, 18,
598
11, 4, 33, 41, 49, 57, 26, 34,
599
42, 50, 58, 19, 12, 5, 27, 20,
600
13, 6, 35, 28, 21, 14, 7, 15,
601
22, 29, 36, 43, 51, 59, 60, 52,
602
44, 37, 30, 23, 31, 38, 45, 53,
603
61, 62, 54, 46, 39, 47, 55, 63
606
const int8_t ff_vc1_adv_interlaced_8x4_zz [32] = /* Table 236 */
608
0, 8, 16, 24, 1, 9, 2, 17,
609
25, 10, 3, 18, 26, 4, 11, 19,
610
12, 5, 13, 20, 27, 6, 21, 28,
611
14, 22, 29, 7, 30, 15, 23, 31
614
const int8_t ff_vc1_adv_interlaced_4x8_zz [32] = /* Table 237 */
626
const int8_t ff_vc1_adv_interlaced_4x4_zz [16] = /* Table 238 */
635
/* DQScale as specified in 8.1.3.9 - almost identical to 0x40000/i */
636
const int32_t ff_vc1_dqscale[63] = {
637
0x40000, 0x20000, 0x15555, 0x10000, 0xCCCD, 0xAAAB, 0x9249, 0x8000,
638
0x71C7, 0x6666, 0x5D17, 0x5555, 0x4EC5, 0x4925, 0x4444, 0x4000,
639
0x3C3C, 0x38E4, 0x35E5, 0x3333, 0x30C3, 0x2E8C, 0x2C86, 0x2AAB,
640
0x28F6, 0x2762, 0x25ED, 0x2492, 0x234F, 0x2222, 0x2108, 0x2000,
641
0x1F08, 0x1E1E, 0x1D42, 0x1C72, 0x1BAD, 0x1AF3, 0x1A42, 0x199A,
642
0x18FA, 0x1862, 0x17D0, 0x1746, 0x16C1, 0x1643, 0x15CA, 0x1555,
643
0x14E6, 0x147B, 0x1414, 0x13B1, 0x1352, 0x12F7, 0x129E, 0x1249,
644
0x11F7, 0x11A8, 0x115B, 0x1111, 0x10C9, 0x1084, 0x1000