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 /* dc encoding for mpeg4 */
31 const UINT8 DCtab_lum
[13][2] =
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},
37 const UINT8 DCtab_chrom
[13][2] =
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},
43 const UINT16 intra_vlc
[103][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 },
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,
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,
105 static RLTable rl_intra
= {
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},
119 static const UINT8 mb_type_b_tab
[4][2] = {
120 {1, 1}, {1, 2}, {1, 3}, {1, 4},
123 static const UINT16 pixel_aspect
[16][2]={
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,
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,
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
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
174 const UINT16 ff_mpeg4_resync_prefix
[8]={
175 0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000