4 #define BIN_ONLY_SHAPE 2
7 #define SIMPLE_VO_TYPE 1
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
16 #define EXTENDED_PAR 15
18 //vol_sprite_usage / sprite_enable
19 #define STATIC_SPRITE 1
22 #define MOTION_MARKER 0x1F001
23 #define DC_MARKER 0x6B001
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
30 #define VOS_STARTCODE 0x1B0
31 #define USER_DATA_STARTCODE 0x1B2
32 #define GOP_STARTCODE 0x1B3
33 #define VISUAL_OBJ_STARTCODE 0x1B5
34 #define VOP_STARTCODE 0x1B6
36 /* dc encoding for mpeg4 */
37 const UINT8 DCtab_lum[13][2] =
39 {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
40 {1,8}, {1,9}, {1,10}, {1,11},
43 const UINT8 DCtab_chrom[13][2] =
45 {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
46 {1,9}, {1,10}, {1,11}, {1,12},
49 const UINT16 intra_vlc[103][2] = {
51 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
52 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
53 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
54 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
55 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
56 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
57 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
58 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
59 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
60 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
61 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
62 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
63 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
64 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
65 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
66 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
67 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
68 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
69 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
70 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
71 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
72 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
73 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
74 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
75 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
76 { 0x5f, 12 },{ 0x3, 7 },
79 const INT8 intra_level[102] = {
80 1, 2, 3, 4, 5, 6, 7, 8,
81 9, 10, 11, 12, 13, 14, 15, 16,
82 17, 18, 19, 20, 21, 22, 23, 24,
83 25, 26, 27, 1, 2, 3, 4, 5,
84 6, 7, 8, 9, 10, 1, 2, 3,
85 4, 5, 1, 2, 3, 4, 1, 2,
86 3, 1, 2, 3, 1, 2, 3, 1,
87 2, 3, 1, 2, 1, 2, 1, 1,
88 1, 1, 1, 1, 2, 3, 4, 5,
89 6, 7, 8, 1, 2, 3, 1, 2,
90 1, 2, 1, 2, 1, 2, 1, 2,
91 1, 1, 1, 1, 1, 1, 1, 1,
95 const INT8 intra_run[102] = {
96 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 0, 0, 0, 0, 0, 0,
99 0, 0, 0, 1, 1, 1, 1, 1,
100 1, 1, 1, 1, 1, 2, 2, 2,
101 2, 2, 3, 3, 3, 3, 4, 4,
102 4, 5, 5, 5, 6, 6, 6, 7,
103 7, 7, 8, 8, 9, 9, 10, 11,
104 12, 13, 14, 0, 0, 0, 0, 0,
105 0, 0, 0, 1, 1, 1, 2, 2,
106 3, 3, 4, 4, 5, 5, 6, 6,
107 7, 8, 9, 10, 11, 12, 13, 14,
108 15, 16, 17, 18, 19, 20,
111 static RLTable rl_intra = {
119 static const UINT16 sprite_trajectory_tab[15][2] = {
120 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3},
121 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8},
122 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
125 static const UINT8 mb_type_b_tab[4][2] = {
126 {1, 1}, {1, 2}, {1, 3}, {1, 4},
129 static const UINT16 pixel_aspect[16][2]={
148 /* these matrixes will be permuted for the idct */
149 const INT16 ff_mpeg4_default_intra_matrix[64] = {
150 8, 17, 18, 19, 21, 23, 25, 27,
151 17, 18, 19, 21, 23, 25, 27, 28,
152 20, 21, 22, 23, 24, 26, 28, 30,
153 21, 22, 23, 24, 26, 28, 30, 32,
154 22, 23, 24, 26, 28, 30, 32, 35,
155 23, 24, 26, 28, 30, 32, 35, 38,
156 25, 26, 28, 30, 32, 35, 38, 41,
157 27, 28, 30, 32, 35, 38, 41, 45,
160 const INT16 ff_mpeg4_default_non_intra_matrix[64] = {
161 16, 17, 18, 19, 20, 21, 22, 23,
162 17, 18, 19, 20, 21, 22, 23, 24,
163 18, 19, 20, 21, 22, 23, 24, 25,
164 19, 20, 21, 22, 23, 24, 26, 27,
165 20, 21, 22, 23, 25, 26, 27, 28,
166 21, 22, 23, 24, 26, 27, 28, 30,
167 22, 23, 24, 26, 27, 28, 30, 31,
168 23, 24, 25, 27, 28, 30, 31, 33,
171 UINT8 ff_mpeg4_y_dc_scale_table[32]={
172 // 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
173 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
175 UINT8 ff_mpeg4_c_dc_scale_table[32]={
176 // 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
177 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
180 const UINT16 ff_mpeg4_resync_prefix[8]={
181 0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000