correct mpeg4 vo type
[ffmpeg.git] / libavcodec / mpeg4data.h
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 #define MAIN_VO_TYPE               4
10 #define NBIT_VO_TYPE               5
11 #define ARTS_VO_TYPE               10
12 #define ACE_VO_TYPE                12
13 #define ADV_SIMPLE_VO_TYPE         17
14
15 // aspect_ratio_info
16 #define EXTENDED_PAR 15
17
18 //vol_sprite_usage / sprite_enable
19 #define STATIC_SPRITE 1
20 #define GMC_SPRITE 2
21
22 #define MOTION_MARKER 0x1F001
23 #define DC_MARKER     0x6B001
24
25 #define MB_TYPE_B_DIRECT 0
26 #define MB_TYPE_B_BIDIR  1
27 #define MB_TYPE_B_BACKW  2
28 #define MB_TYPE_B_FORW   3
29
30 /* dc encoding for mpeg4 */
31 const UINT8 DCtab_lum[13][2] =
32 {
33     {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
34     {1,8}, {1,9}, {1,10}, {1,11},
35 }; 
36
37 const UINT8 DCtab_chrom[13][2] =
38 {
39     {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
40     {1,9}, {1,10}, {1,11}, {1,12},
41 }; 
42
43 const UINT16 intra_vlc[103][2] = {
44 { 0x2, 2 },
45 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
46 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
47 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
48 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
49 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
50 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
51 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
52 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
53 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
54 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
55 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
56 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
57 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
58 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
59 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
60 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
61 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
62 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
63 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
64 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
65 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
66 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
67 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
68 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
69 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
70 { 0x5f, 12 },{ 0x3, 7 },
71 };
72
73 const INT8 intra_level[102] = {
74   1,  2,  3,  4,  5,  6,  7,  8,
75   9, 10, 11, 12, 13, 14, 15, 16,
76  17, 18, 19, 20, 21, 22, 23, 24,
77  25, 26, 27,  1,  2,  3,  4,  5,
78   6,  7,  8,  9, 10,  1,  2,  3,
79   4,  5,  1,  2,  3,  4,  1,  2,
80   3,  1,  2,  3,  1,  2,  3,  1,
81   2,  3,  1,  2,  1,  2,  1,  1,
82   1,  1,  1,  1,  2,  3,  4,  5,
83   6,  7,  8,  1,  2,  3,  1,  2,
84   1,  2,  1,  2,  1,  2,  1,  2,
85   1,  1,  1,  1,  1,  1,  1,  1,
86   1,  1,  1,  1,  1,  1,
87 };
88
89 const INT8 intra_run[102] = {
90   0,  0,  0,  0,  0,  0,  0,  0,
91   0,  0,  0,  0,  0,  0,  0,  0,
92   0,  0,  0,  0,  0,  0,  0,  0,
93   0,  0,  0,  1,  1,  1,  1,  1,
94   1,  1,  1,  1,  1,  2,  2,  2,
95   2,  2,  3,  3,  3,  3,  4,  4,
96   4,  5,  5,  5,  6,  6,  6,  7,
97   7,  7,  8,  8,  9,  9, 10, 11,
98  12, 13, 14,  0,  0,  0,  0,  0,
99   0,  0,  0,  1,  1,  1,  2,  2,
100   3,  3,  4,  4,  5,  5,  6,  6,
101   7,  8,  9, 10, 11, 12, 13, 14,
102  15, 16, 17, 18, 19, 20,
103 };
104
105 static RLTable rl_intra = {
106     102,
107     67,
108     intra_vlc,
109     intra_run,
110     intra_level,
111 };
112
113 static const UINT16 sprite_trajectory_tab[15][2] = {
114  {0x00, 2}, {0x02, 3},  {0x03, 3},  {0x04, 3}, {0x05, 3}, {0x06, 3},
115  {0x0E, 4}, {0x1E, 5},  {0x3E, 6},  {0x7E, 7}, {0xFE, 8}, 
116  {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
117 };
118
119 static const UINT8 mb_type_b_tab[4][2] = {
120  {1, 1}, {1, 2}, {1, 3}, {1, 4},
121 };
122
123 static const UINT16 pixel_aspect[16][2]={
124  {0, 0},
125  {1, 1},
126  {12, 11},
127  {10, 11},
128  {16, 11},
129  {40, 33},
130  {0, 0},
131  {0, 0},
132  {0, 0},
133  {0, 0},
134  {0, 0},
135  {0, 0},
136  {0, 0},
137  {0, 0},
138  {0, 0},
139  {0, 0},
140 };
141
142 /* these matrixes will be permuted for the idct */
143 const INT16 ff_mpeg4_default_intra_matrix[64] = {
144   8, 17, 18, 19, 21, 23, 25, 27,
145  17, 18, 19, 21, 23, 25, 27, 28,
146  20, 21, 22, 23, 24, 26, 28, 30,
147  21, 22, 23, 24, 26, 28, 30, 32,
148  22, 23, 24, 26, 28, 30, 32, 35,
149  23, 24, 26, 28, 30, 32, 35, 38,
150  25, 26, 28, 30, 32, 35, 38, 41,
151  27, 28, 30, 32, 35, 38, 41, 45, 
152 };
153
154 const INT16 ff_mpeg4_default_non_intra_matrix[64] = {
155  16, 17, 18, 19, 20, 21, 22, 23,
156  17, 18, 19, 20, 21, 22, 23, 24,
157  18, 19, 20, 21, 22, 23, 24, 25,
158  19, 20, 21, 22, 23, 24, 26, 27,
159  20, 21, 22, 23, 25, 26, 27, 28,
160  21, 22, 23, 24, 26, 27, 28, 30,
161  22, 23, 24, 26, 27, 28, 30, 31,
162  23, 24, 25, 27, 28, 30, 31, 33,
163 };
164
165 UINT8 ff_mpeg4_y_dc_scale_table[32]={
166 //  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
167     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
168 };
169 UINT8 ff_mpeg4_c_dc_scale_table[32]={
170 //  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
171     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
172 };
173
174 const UINT16 ff_mpeg4_resync_prefix[8]={
175     0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
176 };