Statistics
| Branch: | Revision:

ffmpeg / libavcodec / mpeg4data.h @ af27aea9

History | View | Annotate | Download (4.78 KB)

1
// shapes
2
#define RECT_SHAPE       0
3
#define BIN_SHAPE        1
4
#define BIN_ONLY_SHAPE   2
5
#define GRAY_SHAPE       3
6

    
7
#define SIMPLE_VO_TYPE 1
8
#define CORE_VO_TYPE   3
9

    
10
// aspect_ratio_info
11
#define EXTENDED_PAR 15
12

    
13
//vol_sprite_usage / sprite_enable
14
#define STATIC_SPRITE 1
15
#define GMC_SPRITE 2
16

    
17
#define MOTION_MARKER 0x1F001
18
#define DC_MARKER     0x6B001
19

    
20
#define MB_TYPE_B_DIRECT 0
21
#define MB_TYPE_B_BIDIR  1
22
#define MB_TYPE_B_BACKW  2
23
#define MB_TYPE_B_FORW   3
24

    
25
/* dc encoding for mpeg4 */
26
const UINT8 DCtab_lum[13][2] =
27
{
28
    {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
29
    {1,8}, {1,9}, {1,10}, {1,11},
30
}; 
31

    
32
const UINT8 DCtab_chrom[13][2] =
33
{
34
    {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
35
    {1,9}, {1,10}, {1,11}, {1,12},
36
}; 
37

    
38
const UINT16 intra_vlc[103][2] = {
39
{ 0x2, 2 },
40
{ 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
41
{ 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
42
{ 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
43
{ 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
44
{ 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
45
{ 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
46
{ 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
47
{ 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
48
{ 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
49
{ 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
50
{ 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
51
{ 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
52
{ 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
53
{ 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
54
{ 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
55
{ 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
56
{ 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
57
{ 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
58
{ 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
59
{ 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
60
{ 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
61
{ 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
62
{ 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
63
{ 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
64
{ 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
65
{ 0x5f, 12 },{ 0x3, 7 },
66
};
67

    
68
const INT8 intra_level[102] = {
69
  1,  2,  3,  4,  5,  6,  7,  8,
70
  9, 10, 11, 12, 13, 14, 15, 16,
71
 17, 18, 19, 20, 21, 22, 23, 24,
72
 25, 26, 27,  1,  2,  3,  4,  5,
73
  6,  7,  8,  9, 10,  1,  2,  3,
74
  4,  5,  1,  2,  3,  4,  1,  2,
75
  3,  1,  2,  3,  1,  2,  3,  1,
76
  2,  3,  1,  2,  1,  2,  1,  1,
77
  1,  1,  1,  1,  2,  3,  4,  5,
78
  6,  7,  8,  1,  2,  3,  1,  2,
79
  1,  2,  1,  2,  1,  2,  1,  2,
80
  1,  1,  1,  1,  1,  1,  1,  1,
81
  1,  1,  1,  1,  1,  1,
82
};
83

    
84
const INT8 intra_run[102] = {
85
  0,  0,  0,  0,  0,  0,  0,  0,
86
  0,  0,  0,  0,  0,  0,  0,  0,
87
  0,  0,  0,  0,  0,  0,  0,  0,
88
  0,  0,  0,  1,  1,  1,  1,  1,
89
  1,  1,  1,  1,  1,  2,  2,  2,
90
  2,  2,  3,  3,  3,  3,  4,  4,
91
  4,  5,  5,  5,  6,  6,  6,  7,
92
  7,  7,  8,  8,  9,  9, 10, 11,
93
 12, 13, 14,  0,  0,  0,  0,  0,
94
  0,  0,  0,  1,  1,  1,  2,  2,
95
  3,  3,  4,  4,  5,  5,  6,  6,
96
  7,  8,  9, 10, 11, 12, 13, 14,
97
 15, 16, 17, 18, 19, 20,
98
};
99

    
100
static RLTable rl_intra = {
101
    102,
102
    67,
103
    intra_vlc,
104
    intra_run,
105
    intra_level,
106
};
107

    
108
static const UINT16 sprite_trajectory_tab[15][2] = {
109
 {0x00, 2}, {0x02, 3},  {0x03, 3},  {0x04, 3}, {0x05, 3}, {0x06, 3},
110
 {0x0E, 4}, {0x1E, 5},  {0x3E, 6},  {0x7E, 7}, {0xFE, 8}, 
111
 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
112
};
113

    
114
static const UINT8 mb_type_b_tab[4][2] = {
115
 {1, 1}, {1, 2}, {1, 3}, {1, 4},
116
};
117

    
118
static const UINT16 pixel_aspect[16][2]={
119
 {0, 0},
120
 {1, 1},
121
 {12, 11},
122
 {10, 11},
123
 {16, 11},
124
 {40, 33},
125
 {0, 0},
126
 {0, 0},
127
 {0, 0},
128
 {0, 0},
129
 {0, 0},
130
 {0, 0},
131
 {0, 0},
132
 {0, 0},
133
 {0, 0},
134
 {0, 0},
135
};
136

    
137
/* these matrixes will be permuted for the idct */
138
const INT16 ff_mpeg4_default_intra_matrix[64] = {
139
  8, 17, 18, 19, 21, 23, 25, 27,
140
 17, 18, 19, 21, 23, 25, 27, 28,
141
 20, 21, 22, 23, 24, 26, 28, 30,
142
 21, 22, 23, 24, 26, 28, 30, 32,
143
 22, 23, 24, 26, 28, 30, 32, 35,
144
 23, 24, 26, 28, 30, 32, 35, 38,
145
 25, 26, 28, 30, 32, 35, 38, 41,
146
 27, 28, 30, 32, 35, 38, 41, 45, 
147
};
148

    
149
const INT16 ff_mpeg4_default_non_intra_matrix[64] = {
150
 16, 17, 18, 19, 20, 21, 22, 23,
151
 17, 18, 19, 20, 21, 22, 23, 24,
152
 18, 19, 20, 21, 22, 23, 24, 25,
153
 19, 20, 21, 22, 23, 24, 26, 27,
154
 20, 21, 22, 23, 25, 26, 27, 28,
155
 21, 22, 23, 24, 26, 27, 28, 30,
156
 22, 23, 24, 26, 27, 28, 30, 31,
157
 23, 24, 25, 27, 28, 30, 31, 33,
158
};
159

    
160
UINT8 ff_mpeg4_y_dc_scale_table[32]={
161
//  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
162
    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,34,36,38,40,42,44,46
163
};
164
UINT8 ff_mpeg4_c_dc_scale_table[32]={
165
//  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
166
    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,20,21,22,23,24,25
167
};
168

    
169
const UINT16 ff_mpeg4_resync_prefix[8]={
170
    0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
171
};