5
INT16 default_intra_matrix[64] = {
6
8, 16, 19, 22, 26, 27, 29, 34,
7
16, 16, 22, 24, 27, 29, 34, 37,
8
19, 22, 26, 27, 29, 34, 34, 38,
9
22, 22, 26, 27, 29, 34, 37, 40,
10
22, 26, 27, 29, 32, 35, 40, 48,
11
26, 27, 29, 32, 35, 40, 48, 58,
12
26, 27, 29, 34, 38, 46, 56, 69,
13
27, 29, 35, 38, 46, 56, 69, 83
16
INT16 default_non_intra_matrix[64] = {
17
16, 16, 16, 16, 16, 16, 16, 16,
18
16, 16, 16, 16, 16, 16, 16, 16,
19
16, 16, 16, 16, 16, 16, 16, 16,
20
16, 16, 16, 16, 16, 16, 16, 16,
21
16, 16, 16, 16, 16, 16, 16, 16,
22
16, 16, 16, 16, 16, 16, 16, 16,
23
16, 16, 16, 16, 16, 16, 16, 16,
24
16, 16, 16, 16, 16, 16, 16, 16,
27
const unsigned char vlc_dc_table[256] = {
30
4, 4, 4, 4, 4, 4, 4, 4,
31
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
32
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
33
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
35
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
36
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
37
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
38
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
40
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
41
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
42
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
43
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
44
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
45
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
46
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
47
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
50
const UINT16 vlc_dc_lum_code[12] = {
51
0x4, 0x0, 0x1, 0x5, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, 0x1ff,
53
const unsigned char vlc_dc_lum_bits[12] = {
54
3, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 9,
57
const UINT16 vlc_dc_chroma_code[12] = {
58
0x0, 0x1, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, 0x3fe, 0x3ff,
60
const unsigned char vlc_dc_chroma_bits[12] = {
61
2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10,
64
static const UINT16 mpeg1_vlc[113][2] = {
65
{ 0x3, 2 }, { 0x4, 4 }, { 0x5, 5 }, { 0x6, 7 },
66
{ 0x26, 8 }, { 0x21, 8 }, { 0xa, 10 }, { 0x1d, 12 },
67
{ 0x18, 12 }, { 0x13, 12 }, { 0x10, 12 }, { 0x1a, 13 },
68
{ 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 }, { 0x1f, 14 },
69
{ 0x1e, 14 }, { 0x1d, 14 }, { 0x1c, 14 }, { 0x1b, 14 },
70
{ 0x1a, 14 }, { 0x19, 14 }, { 0x18, 14 }, { 0x17, 14 },
71
{ 0x16, 14 }, { 0x15, 14 }, { 0x14, 14 }, { 0x13, 14 },
72
{ 0x12, 14 }, { 0x11, 14 }, { 0x10, 14 }, { 0x18, 15 },
73
{ 0x17, 15 }, { 0x16, 15 }, { 0x15, 15 }, { 0x14, 15 },
74
{ 0x13, 15 }, { 0x12, 15 }, { 0x11, 15 }, { 0x10, 15 },
75
{ 0x3, 3 }, { 0x6, 6 }, { 0x25, 8 }, { 0xc, 10 },
76
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x1f, 15 },
77
{ 0x1e, 15 }, { 0x1d, 15 }, { 0x1c, 15 }, { 0x1b, 15 },
78
{ 0x1a, 15 }, { 0x19, 15 }, { 0x13, 16 }, { 0x12, 16 },
79
{ 0x11, 16 }, { 0x10, 16 }, { 0x5, 4 }, { 0x4, 7 },
80
{ 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 }, { 0x7, 5 },
81
{ 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 }, { 0x6, 5 },
82
{ 0xf, 10 }, { 0x12, 12 }, { 0x7, 6 }, { 0x9, 10 },
83
{ 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 }, { 0x14, 16 },
84
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12 },
85
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
86
{ 0x23, 8 }, { 0x1a, 16 }, { 0x22, 8 }, { 0x19, 16 },
87
{ 0x20, 8 }, { 0x18, 16 }, { 0xe, 10 }, { 0x17, 16 },
88
{ 0xd, 10 }, { 0x16, 16 }, { 0x8, 10 }, { 0x15, 16 },
89
{ 0x1f, 12 }, { 0x1a, 12 }, { 0x19, 12 }, { 0x17, 12 },
90
{ 0x16, 12 }, { 0x1f, 13 }, { 0x1e, 13 }, { 0x1d, 13 },
91
{ 0x1c, 13 }, { 0x1b, 13 }, { 0x1f, 16 }, { 0x1e, 16 },
92
{ 0x1d, 16 }, { 0x1c, 16 }, { 0x1b, 16 },
93
{ 0x1, 6 }, /* escape */
97
static const UINT16 mpeg2_vlc[113][2] = {
98
{0x02, 2}, {0x06, 3}, {0x07, 4}, {0x1c, 5},
99
{0x1d, 5}, {0x05, 6}, {0x04, 6}, {0x7b, 7},
100
{0x7c, 7}, {0x23, 8}, {0x22, 8}, {0xfa, 8},
101
{0xfb, 8}, {0xfe, 8}, {0xff, 8}, {0x1f,14},
102
{0x1e,14}, {0x1d,14}, {0x1c,14}, {0x1b,14},
103
{0x1a,14}, {0x19,14}, {0x18,14}, {0x17,14},
104
{0x16,14}, {0x15,14}, {0x14,14}, {0x13,14},
105
{0x12,14}, {0x11,14}, {0x10,14}, {0x18,15},
106
{0x17,15}, {0x16,15}, {0x15,15}, {0x14,15},
107
{0x13,15}, {0x12,15}, {0x11,15}, {0x10,15},
108
{0x02, 3}, {0x06, 5}, {0x79, 7}, {0x27, 8},
109
{0x20, 8}, {0x16,13}, {0x15,13}, {0x1f,15},
110
{0x1e,15}, {0x1d,15}, {0x1c,15}, {0x1b,15},
111
{0x1a,15}, {0x19,15}, {0x13,16}, {0x12,16},
112
{0x11,16}, {0x10,16}, {0x05, 5}, {0x07, 7},
113
{0xfc, 8}, {0x0c,10}, {0x14,13}, {0x07, 5},
114
{0x26, 8}, {0x1c,12}, {0x13,13}, {0x06, 6},
115
{0xfd, 8}, {0x12,12}, {0x07, 6}, {0x04, 9},
116
{0x12,13}, {0x06, 7}, {0x1e,12}, {0x14,16},
117
{0x04, 7}, {0x15,12}, {0x05, 7}, {0x11,12},
118
{0x78, 7}, {0x11,13}, {0x7a, 7}, {0x10,13},
119
{0x21, 8}, {0x1a,16}, {0x25, 8}, {0x19,16},
120
{0x24, 8}, {0x18,16}, {0x05, 9}, {0x17,16},
121
{0x07, 9}, {0x16,16}, {0x0d,10}, {0x15,16},
122
{0x1f,12}, {0x1a,12}, {0x19,12}, {0x17,12},
123
{0x16,12}, {0x1f,13}, {0x1e,13}, {0x1d,13},
124
{0x1c,13}, {0x1b,13}, {0x1f,16}, {0x1e,16},
125
{0x1d,16}, {0x1c,16}, {0x1b,16},
126
{0x01,6}, /* escape */
130
static const INT8 mpeg1_level[111] = {
131
1, 2, 3, 4, 5, 6, 7, 8,
132
9, 10, 11, 12, 13, 14, 15, 16,
133
17, 18, 19, 20, 21, 22, 23, 24,
134
25, 26, 27, 28, 29, 30, 31, 32,
135
33, 34, 35, 36, 37, 38, 39, 40,
136
1, 2, 3, 4, 5, 6, 7, 8,
137
9, 10, 11, 12, 13, 14, 15, 16,
138
17, 18, 1, 2, 3, 4, 5, 1,
139
2, 3, 4, 1, 2, 3, 1, 2,
140
3, 1, 2, 3, 1, 2, 1, 2,
141
1, 2, 1, 2, 1, 2, 1, 2,
142
1, 2, 1, 2, 1, 2, 1, 2,
143
1, 1, 1, 1, 1, 1, 1, 1,
147
static const INT8 mpeg1_run[111] = {
148
0, 0, 0, 0, 0, 0, 0, 0,
149
0, 0, 0, 0, 0, 0, 0, 0,
150
0, 0, 0, 0, 0, 0, 0, 0,
151
0, 0, 0, 0, 0, 0, 0, 0,
152
0, 0, 0, 0, 0, 0, 0, 0,
153
1, 1, 1, 1, 1, 1, 1, 1,
154
1, 1, 1, 1, 1, 1, 1, 1,
155
1, 1, 2, 2, 2, 2, 2, 3,
156
3, 3, 3, 4, 4, 4, 5, 5,
157
5, 6, 6, 6, 7, 7, 8, 8,
158
9, 9, 10, 10, 11, 11, 12, 12,
159
13, 13, 14, 14, 15, 15, 16, 16,
160
17, 18, 19, 20, 21, 22, 23, 24,
161
25, 26, 27, 28, 29, 30, 31,
164
static RLTable rl_mpeg1 = {
172
static RLTable rl_mpeg2 = {
180
static const UINT8 mbAddrIncrTable[35][2] = {
214
{0x8, 11}, /* escape */
215
{0xf, 11}, /* stuffing */
218
static const UINT8 mbPatTable[63][2] = {
284
#define MB_INTRA 0x01
288
#define MB_QUANT 0x10
290
static const UINT8 table_mb_ptype[32][2] = {
292
{ 3, 5 }, // 0x01 MB_INTRA
293
{ 1, 2 }, // 0x02 MB_PAT
299
{ 1, 3 }, // 0x08 MB_FOR
301
{ 1, 1 }, // 0x0A MB_FOR|MB_PAT
308
{ 1, 6 }, // 0x11 MB_QUANT|MB_INTRA
309
{ 1, 5 }, // 0x12 MB_QUANT|MB_PAT
317
{ 2, 5 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT
325
static const UINT8 table_mb_btype[32][2] = {
327
{ 3, 5 }, // 0x01 MB_INTRA
330
{ 2, 3 }, // 0x04 MB_BACK
332
{ 3, 3 }, // 0x06 MB_BACK|MB_PAT
334
{ 2, 4 }, // 0x08 MB_FOR
336
{ 3, 4 }, // 0x0A MB_FOR|MB_PAT
338
{ 2, 2 }, // 0x0C MB_FOR|MB_BACK
340
{ 3, 2 }, // 0x0E MB_FOR|MB_BACK|MB_PAT
343
{ 1, 6 }, // 0x11 MB_QUANT|MB_INTRA
348
{ 2, 6 }, // 0x16 MB_QUANT|MB_BACK|MB_PAT
352
{ 3, 6 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT
356
{ 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT
360
static const UINT8 mbMotionVectorTable[17][2] = {
380
static const int frame_rate_tab[9] = {
382
(int)(23.976 * FRAME_RATE_BASE),
383
(int)(24 * FRAME_RATE_BASE),
384
(int)(25 * FRAME_RATE_BASE),
385
(int)(29.97 * FRAME_RATE_BASE),
386
(int)(30 * FRAME_RATE_BASE),
387
(int)(50 * FRAME_RATE_BASE),
388
(int)(59.94 * FRAME_RATE_BASE),
389
(int)(60 * FRAME_RATE_BASE),
392
static const UINT8 non_linear_qscale[32] = {
393
0, 1, 2, 3, 4, 5, 6, 7,
394
8,10,12,14,16,18,20,22,
395
24,28,32,36,40,44,48,52,
396
56,64,72,80,88,96,104,112,