Statistics
| Branch: | Revision:

ffmpeg / libavcodec / mpeg4data.h @ 983e3246

History | View | Annotate | Download (5.23 KB)

1
/**
2
 * @file mpeg4data.h
3
 * mpeg4 tables.
4
 */
5

    
6
// shapes
7
#define RECT_SHAPE       0
8
#define BIN_SHAPE        1
9
#define BIN_ONLY_SHAPE   2
10
#define GRAY_SHAPE       3
11

    
12
#define SIMPLE_VO_TYPE             1
13
#define CORE_VO_TYPE               3
14
#define MAIN_VO_TYPE               4
15
#define NBIT_VO_TYPE               5
16
#define ARTS_VO_TYPE               10
17
#define ACE_VO_TYPE                12
18
#define ADV_SIMPLE_VO_TYPE         17
19

    
20
// aspect_ratio_info
21
#define EXTENDED_PAR 15
22

    
23
//vol_sprite_usage / sprite_enable
24
#define STATIC_SPRITE 1
25
#define GMC_SPRITE 2
26

    
27
#define MOTION_MARKER 0x1F001
28
#define DC_MARKER     0x6B001
29

    
30
#define MB_TYPE_B_DIRECT 0
31
#define MB_TYPE_B_BIDIR  1
32
#define MB_TYPE_B_BACKW  2
33
#define MB_TYPE_B_FORW   3
34

    
35
#define VOS_STARTCODE        0x1B0
36
#define USER_DATA_STARTCODE  0x1B2
37
#define GOP_STARTCODE        0x1B3
38
#define VISUAL_OBJ_STARTCODE 0x1B5
39
#define VOP_STARTCODE        0x1B6
40

    
41
/* dc encoding for mpeg4 */
42
const uint8_t DCtab_lum[13][2] =
43
{
44
    {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
45
    {1,8}, {1,9}, {1,10}, {1,11},
46
}; 
47

    
48
const uint8_t DCtab_chrom[13][2] =
49
{
50
    {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
51
    {1,9}, {1,10}, {1,11}, {1,12},
52
}; 
53

    
54
const uint16_t intra_vlc[103][2] = {
55
{ 0x2, 2 },
56
{ 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
57
{ 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
58
{ 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
59
{ 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
60
{ 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
61
{ 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
62
{ 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
63
{ 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
64
{ 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
65
{ 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
66
{ 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
67
{ 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
68
{ 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
69
{ 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
70
{ 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
71
{ 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
72
{ 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
73
{ 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
74
{ 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
75
{ 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
76
{ 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
77
{ 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
78
{ 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
79
{ 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
80
{ 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
81
{ 0x5f, 12 },{ 0x3, 7 },
82
};
83

    
84
const int8_t intra_level[102] = {
85
  1,  2,  3,  4,  5,  6,  7,  8,
86
  9, 10, 11, 12, 13, 14, 15, 16,
87
 17, 18, 19, 20, 21, 22, 23, 24,
88
 25, 26, 27,  1,  2,  3,  4,  5,
89
  6,  7,  8,  9, 10,  1,  2,  3,
90
  4,  5,  1,  2,  3,  4,  1,  2,
91
  3,  1,  2,  3,  1,  2,  3,  1,
92
  2,  3,  1,  2,  1,  2,  1,  1,
93
  1,  1,  1,  1,  2,  3,  4,  5,
94
  6,  7,  8,  1,  2,  3,  1,  2,
95
  1,  2,  1,  2,  1,  2,  1,  2,
96
  1,  1,  1,  1,  1,  1,  1,  1,
97
  1,  1,  1,  1,  1,  1,
98
};
99

    
100
const int8_t intra_run[102] = {
101
  0,  0,  0,  0,  0,  0,  0,  0,
102
  0,  0,  0,  0,  0,  0,  0,  0,
103
  0,  0,  0,  0,  0,  0,  0,  0,
104
  0,  0,  0,  1,  1,  1,  1,  1,
105
  1,  1,  1,  1,  1,  2,  2,  2,
106
  2,  2,  3,  3,  3,  3,  4,  4,
107
  4,  5,  5,  5,  6,  6,  6,  7,
108
  7,  7,  8,  8,  9,  9, 10, 11,
109
 12, 13, 14,  0,  0,  0,  0,  0,
110
  0,  0,  0,  1,  1,  1,  2,  2,
111
  3,  3,  4,  4,  5,  5,  6,  6,
112
  7,  8,  9, 10, 11, 12, 13, 14,
113
 15, 16, 17, 18, 19, 20,
114
};
115

    
116
static RLTable rl_intra = {
117
    102,
118
    67,
119
    intra_vlc,
120
    intra_run,
121
    intra_level,
122
};
123

    
124
static const uint16_t sprite_trajectory_tab[15][2] = {
125
 {0x00, 2}, {0x02, 3},  {0x03, 3},  {0x04, 3}, {0x05, 3}, {0x06, 3},
126
 {0x0E, 4}, {0x1E, 5},  {0x3E, 6},  {0x7E, 7}, {0xFE, 8}, 
127
 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
128
};
129

    
130
static const uint8_t mb_type_b_tab[4][2] = {
131
 {1, 1}, {1, 2}, {1, 3}, {1, 4},
132
};
133

    
134
static const uint16_t pixel_aspect[16][2]={
135
 {0, 0},
136
 {1, 1},
137
 {12, 11},
138
 {10, 11},
139
 {16, 11},
140
 {40, 33},
141
 {0, 0},
142
 {0, 0},
143
 {0, 0},
144
 {0, 0},
145
 {0, 0},
146
 {0, 0},
147
 {0, 0},
148
 {0, 0},
149
 {0, 0},
150
 {0, 0},
151
};
152

    
153
/* these matrixes will be permuted for the idct */
154
const int16_t ff_mpeg4_default_intra_matrix[64] = {
155
  8, 17, 18, 19, 21, 23, 25, 27,
156
 17, 18, 19, 21, 23, 25, 27, 28,
157
 20, 21, 22, 23, 24, 26, 28, 30,
158
 21, 22, 23, 24, 26, 28, 30, 32,
159
 22, 23, 24, 26, 28, 30, 32, 35,
160
 23, 24, 26, 28, 30, 32, 35, 38,
161
 25, 26, 28, 30, 32, 35, 38, 41,
162
 27, 28, 30, 32, 35, 38, 41, 45, 
163
};
164

    
165
const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
166
 16, 17, 18, 19, 20, 21, 22, 23,
167
 17, 18, 19, 20, 21, 22, 23, 24,
168
 18, 19, 20, 21, 22, 23, 24, 25,
169
 19, 20, 21, 22, 23, 24, 26, 27,
170
 20, 21, 22, 23, 25, 26, 27, 28,
171
 21, 22, 23, 24, 26, 27, 28, 30,
172
 22, 23, 24, 26, 27, 28, 30, 31,
173
 23, 24, 25, 27, 28, 30, 31, 33,
174
};
175

    
176
uint8_t ff_mpeg4_y_dc_scale_table[32]={
177
//  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
178
    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
179
};
180
uint8_t ff_mpeg4_c_dc_scale_table[32]={
181
//  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
182
    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
183
};
184

    
185
const uint16_t ff_mpeg4_resync_prefix[8]={
186
    0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
187
};