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