4 #define BIN_ONLY_SHAPE 2
7 #define SIMPLE_VO_TYPE 1
11 #define EXTENDED_PAR 15
13 //vol_sprite_usage / sprite_enable
14 #define STATIC_SPRITE 1
17 #define MOTION_MARKER 0x1F001
18 #define DC_MARKER 0x6B001
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
25 /* dc encoding for mpeg4 */
26 const UINT8 DCtab_lum[13][2] =
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},
32 const UINT8 DCtab_chrom[13][2] =
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},
38 const UINT16 intra_vlc[103][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 },
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,
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,
100 static RLTable rl_intra = {
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},
114 static const UINT8 mb_type_b_tab[4][2] = {
115 {1, 1}, {1, 2}, {1, 3}, {1, 4},
118 static const UINT16 pixel_aspect[16][2]={
137 /* these matrixes will be permuted for the idct */
138 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,
149 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,
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
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