0092a9f5e007c6743985d30e08be410d8ddf9e1f
[libav.git] / libavcodec / mpeg4data.h
1 /**
2 * @file mpeg4data.h
3 * mpeg4 tables.
4 */
5
6 // shapes
7 #define RECT_SHAPE 0
8 #define BIN_SHAPE 1
9 #define BIN_ONLY_SHAPE 2
10 #define GRAY_SHAPE 3
11
12 #define SIMPLE_VO_TYPE 1
13 #define CORE_VO_TYPE 3
14 #define MAIN_VO_TYPE 4
15 #define NBIT_VO_TYPE 5
16 #define ARTS_VO_TYPE 10
17 #define ACE_VO_TYPE 12
18 #define ADV_SIMPLE_VO_TYPE 17
19
20 // aspect_ratio_info
21 #define EXTENDED_PAR 15
22
23 //vol_sprite_usage / sprite_enable
24 #define STATIC_SPRITE 1
25 #define GMC_SPRITE 2
26
27 #define MOTION_MARKER 0x1F001
28 #define DC_MARKER 0x6B001
29
30 static const int mb_type_b_map[4]= {
31 MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
32 MB_TYPE_L0L1 | MB_TYPE_16x16,
33 MB_TYPE_L1 | MB_TYPE_16x16,
34 MB_TYPE_L0 | MB_TYPE_16x16,
35 };
36
37 #define VOS_STARTCODE 0x1B0
38 #define USER_DATA_STARTCODE 0x1B2
39 #define GOP_STARTCODE 0x1B3
40 #define VISUAL_OBJ_STARTCODE 0x1B5
41 #define VOP_STARTCODE 0x1B6
42
43 /* dc encoding for mpeg4 */
44 const uint8_t DCtab_lum[13][2] =
45 {
46 {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
47 {1,8}, {1,9}, {1,10}, {1,11},
48 };
49
50 const uint8_t DCtab_chrom[13][2] =
51 {
52 {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
53 {1,9}, {1,10}, {1,11}, {1,12},
54 };
55
56 const uint16_t intra_vlc[103][2] = {
57 { 0x2, 2 },
58 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
59 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
60 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
61 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
62 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
63 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
64 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
65 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
66 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
67 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
68 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
69 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
70 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
71 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
72 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
73 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
74 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
75 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
76 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
77 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
78 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
79 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
80 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
81 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
82 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
83 { 0x5f, 12 },{ 0x3, 7 },
84 };
85
86 const int8_t intra_level[102] = {
87 1, 2, 3, 4, 5, 6, 7, 8,
88 9, 10, 11, 12, 13, 14, 15, 16,
89 17, 18, 19, 20, 21, 22, 23, 24,
90 25, 26, 27, 1, 2, 3, 4, 5,
91 6, 7, 8, 9, 10, 1, 2, 3,
92 4, 5, 1, 2, 3, 4, 1, 2,
93 3, 1, 2, 3, 1, 2, 3, 1,
94 2, 3, 1, 2, 1, 2, 1, 1,
95 1, 1, 1, 1, 2, 3, 4, 5,
96 6, 7, 8, 1, 2, 3, 1, 2,
97 1, 2, 1, 2, 1, 2, 1, 2,
98 1, 1, 1, 1, 1, 1, 1, 1,
99 1, 1, 1, 1, 1, 1,
100 };
101
102 const int8_t intra_run[102] = {
103 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 1, 1, 1, 1, 1,
107 1, 1, 1, 1, 1, 2, 2, 2,
108 2, 2, 3, 3, 3, 3, 4, 4,
109 4, 5, 5, 5, 6, 6, 6, 7,
110 7, 7, 8, 8, 9, 9, 10, 11,
111 12, 13, 14, 0, 0, 0, 0, 0,
112 0, 0, 0, 1, 1, 1, 2, 2,
113 3, 3, 4, 4, 5, 5, 6, 6,
114 7, 8, 9, 10, 11, 12, 13, 14,
115 15, 16, 17, 18, 19, 20,
116 };
117
118 static RLTable rl_intra = {
119 102,
120 67,
121 intra_vlc,
122 intra_run,
123 intra_level,
124 };
125
126 static const uint16_t inter_rvlc[170][2]={ //note this is identical to the intra rvlc except that its reordered
127 {0x0006, 3},{0x0001, 4},{0x0004, 5},{0x001C, 7},
128 {0x003C, 8},{0x003D, 8},{0x007C, 9},{0x00FC, 10},
129 {0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12},
130 {0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13},
131 {0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007, 3},
132 {0x000C, 6},{0x005C, 8},{0x007D, 9},{0x017C, 10},
133 {0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14},
134 {0x17FD, 14},{0x000A, 4},{0x001D, 7},{0x00BC, 9},
135 {0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14},
136 {0x0005, 5},{0x005D, 8},{0x017D, 10},{0x05FD, 12},
137 {0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008, 5},
138 {0x006C, 8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15},
139 {0x0009, 5},{0x00BD, 9},{0x037D, 11},{0x0EFD, 13},
140 {0x000D, 6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14},
141 {0x0014, 6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15},
142 {0x0015, 6},{0x01DC, 10},{0x0F7C, 13},{0x002C, 7},
143 {0x01DD, 10},{0x1EFC, 14},{0x002D, 7},{0x03BC, 11},
144 {0x0034, 7},{0x077C, 12},{0x006D, 8},{0x0F7D, 13},
145 {0x0074, 8},{0x1EFD, 14},{0x0075, 8},{0x1F7C, 14},
146 {0x00DC, 9},{0x1F7D, 14},{0x00DD, 9},{0x1FBC, 14},
147 {0x00EC, 9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10},
148 {0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11},
149 {0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12},
150 {0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13},
151 {0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14},
152 {0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15},
153 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
154 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
155 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
156 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
157 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
158 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
159 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
160 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
161 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
162 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
163 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
164 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
165 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
166 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
167 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
168 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
169 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
170 };
171
172 static const uint8_t inter_rvlc_run[169]={
173 0, 0, 0, 0, 0, 0, 0, 0,
174 0, 0, 0, 0, 0, 0, 0, 0,
175 0, 0, 0, 1, 1, 1, 1, 1,
176 1, 1, 1, 1, 1, 2, 2, 2,
177 2, 2, 2, 2, 3, 3, 3, 3,
178 3, 3, 3, 4, 4, 4, 4, 4,
179 5, 5, 5, 5, 6, 6, 6, 6,
180 7, 7, 7, 7, 8, 8, 8, 9,
181 9, 9, 10, 10, 11, 11, 12, 12,
182 13, 13, 14, 14, 15, 15, 16, 16,
183 17, 17, 18, 19, 20, 21, 22, 23,
184 24, 25, 26, 27, 28, 29, 30, 31,
185 32, 33, 34, 35, 36, 37, 38,
186 0, 0, 0, 0, 0, 1, 1, 1,
187 1, 1, 2, 2, 2, 3, 3, 4,
188 4, 5, 5, 6, 6, 7, 7, 8,
189 8, 9, 9, 10, 10, 11, 11, 12,
190 12, 13, 13, 14, 15, 16, 17, 18,
191 19, 20, 21, 22, 23, 24, 25, 26,
192 27, 28, 29, 30, 31, 32, 33, 34,
193 35, 36, 37, 38, 39, 40, 41, 42,
194 43, 44,
195 };
196
197 static const uint8_t inter_rvlc_level[169]={
198 1, 2, 3, 4, 5, 6, 7, 8,
199 9, 10, 11, 12, 13, 14, 15, 16,
200 17, 18, 19, 1, 2, 3, 4, 5,
201 6, 7, 8, 9, 10, 1, 2, 3,
202 4, 5, 6, 7, 1, 2, 3, 4,
203 5, 6, 7, 1, 2, 3, 4, 5,
204 1, 2, 3, 4, 1, 2, 3, 4,
205 1, 2, 3, 4, 1, 2, 3, 1,
206 2, 3, 1, 2, 1, 2, 1, 2,
207 1, 2, 1, 2, 1, 2, 1, 2,
208 1, 2, 1, 1, 1, 1, 1, 1,
209 1, 1, 1, 1, 1, 1, 1, 1,
210 1, 1, 1, 1, 1, 1, 1,
211 1, 2, 3, 4, 5, 1, 2, 3,
212 4, 5, 1, 2, 3, 1, 2, 1,
213 2, 1, 2, 1, 2, 1, 2, 1,
214 2, 1, 2, 1, 2, 1, 2, 1,
215 2, 1, 2, 1, 1, 1, 1, 1,
216 1, 1, 1, 1, 1, 1, 1, 1,
217 1, 1, 1, 1, 1, 1, 1, 1,
218 1, 1, 1, 1, 1, 1, 1, 1,
219 1, 1,
220 };
221
222 static RLTable rvlc_rl_inter = {
223 169,
224 103,
225 inter_rvlc,
226 inter_rvlc_run,
227 inter_rvlc_level,
228 };
229
230 static const uint16_t intra_rvlc[170][2]={
231 {0x0006, 3},{0x0007, 3},{0x000A, 4},{0x0009, 5},
232 {0x0014, 6},{0x0015, 6},{0x0034, 7},{0x0074, 8},
233 {0x0075, 8},{0x00DD, 9},{0x00EC, 9},{0x01EC, 10},
234 {0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11},
235 {0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13},
236 {0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14},
237 {0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001, 4},
238 {0x0008, 5},{0x002D, 7},{0x006C, 8},{0x006D, 8},
239 {0x00DC, 9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11},
240 {0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14},
241 {0x0004, 5},{0x002C, 7},{0x00BC, 9},{0x01DC, 10},
242 {0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13},
243 {0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005, 5},
244 {0x005C, 8},{0x00BD, 9},{0x037D, 11},{0x06FC, 12},
245 {0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15},
246 {0x000C, 6},{0x005D, 8},{0x01BD, 10},{0x03FD, 12},
247 {0x06FD, 12},{0x1BFD, 14},{0x000D, 6},{0x007D, 9},
248 {0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14},
249 {0x001C, 7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12},
250 {0x2FFC, 15},{0x001D, 7},{0x017D, 10},{0x037C, 11},
251 {0x0DFD, 13},{0x2FFD, 15},{0x003C, 8},{0x01BC, 10},
252 {0x0BFD, 13},{0x17FD, 14},{0x003D, 8},{0x01FD, 11},
253 {0x0DFC, 13},{0x37FC, 15},{0x007C, 9},{0x03FC, 12},
254 {0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15},
255 {0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14},
256 {0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15},
257 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
258 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
259 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
260 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
261 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
262 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
263 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
264 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
265 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
266 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
267 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
268 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
269 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
270 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
271 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
272 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
273 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
274 };
275
276 static const uint8_t intra_rvlc_run[169]={
277 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 1, 1, 1, 1, 1,
281 1, 1, 1, 1, 1, 1, 1, 1,
282 2, 2, 2, 2, 2, 2, 2, 2,
283 2, 2, 2, 3, 3, 3, 3, 3,
284 3, 3, 3, 3, 4, 4, 4, 4,
285 4, 4, 5, 5, 5, 5, 5, 5,
286 6, 6, 6, 6, 6, 7, 7, 7,
287 7, 7, 8, 8, 8, 8, 9, 9,
288 9, 9, 10, 10, 11, 11, 12, 12,
289 13, 14, 15, 16, 17, 18, 19,
290 0, 0, 0, 0, 0, 1, 1, 1,
291 1, 1, 2, 2, 2, 3, 3, 4,
292 4, 5, 5, 6, 6, 7, 7, 8,
293 8, 9, 9, 10, 10, 11, 11, 12,
294 12, 13, 13, 14, 15, 16, 17, 18,
295 19, 20, 21, 22, 23, 24, 25, 26,
296 27, 28, 29, 30, 31, 32, 33, 34,
297 35, 36, 37, 38, 39, 40, 41, 42,
298 43, 44,
299 };
300
301 static const uint8_t intra_rvlc_level[169]={
302 1, 2, 3, 4, 5, 6, 7, 8,
303 9, 10, 11, 12, 13, 14, 15, 16,
304 17, 18, 19, 20, 21, 22, 23, 24,
305 25, 26, 27, 1, 2, 3, 4, 5,
306 6, 7, 8, 9, 10, 11, 12, 13,
307 1, 2, 3, 4, 5, 6, 7, 8,
308 9, 10, 11, 1, 2, 3, 4, 5,
309 6, 7, 8, 9, 1, 2, 3, 4,
310 5, 6, 1, 2, 3, 4, 5, 6,
311 1, 2, 3, 4, 5, 1, 2, 3,
312 4, 5, 1, 2, 3, 4, 1, 2,
313 3, 4, 1, 2, 1, 2, 1, 2,
314 1, 1, 1, 1, 1, 1, 1,
315 1, 2, 3, 4, 5, 1, 2, 3,
316 4, 5, 1, 2, 3, 1, 2, 1,
317 2, 1, 2, 1, 2, 1, 2, 1,
318 2, 1, 2, 1, 2, 1, 2, 1,
319 2, 1, 2, 1, 1, 1, 1, 1,
320 1, 1, 1, 1, 1, 1, 1, 1,
321 1, 1, 1, 1, 1, 1, 1, 1,
322 1, 1, 1, 1, 1, 1, 1, 1,
323 1, 1,
324 };
325
326 static RLTable rvlc_rl_intra = {
327 169,
328 103,
329 intra_rvlc,
330 intra_rvlc_run,
331 intra_rvlc_level,
332 };
333
334 static const uint16_t sprite_trajectory_tab[15][2] = {
335 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3},
336 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8},
337 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
338 };
339
340 static const uint8_t mb_type_b_tab[4][2] = {
341 {1, 1}, {1, 2}, {1, 3}, {1, 4},
342 };
343
344 static const AVRational pixel_aspect[16]={
345 {0, 1},
346 {1, 1},
347 {12, 11},
348 {10, 11},
349 {16, 11},
350 {40, 33},
351 {0, 1},
352 {0, 1},
353 {0, 1},
354 {0, 1},
355 {0, 1},
356 {0, 1},
357 {0, 1},
358 {0, 1},
359 {0, 1},
360 {0, 1},
361 };
362
363 /* these matrixes will be permuted for the idct */
364 const int16_t ff_mpeg4_default_intra_matrix[64] = {
365 8, 17, 18, 19, 21, 23, 25, 27,
366 17, 18, 19, 21, 23, 25, 27, 28,
367 20, 21, 22, 23, 24, 26, 28, 30,
368 21, 22, 23, 24, 26, 28, 30, 32,
369 22, 23, 24, 26, 28, 30, 32, 35,
370 23, 24, 26, 28, 30, 32, 35, 38,
371 25, 26, 28, 30, 32, 35, 38, 41,
372 27, 28, 30, 32, 35, 38, 41, 45,
373 };
374
375 const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
376 16, 17, 18, 19, 20, 21, 22, 23,
377 17, 18, 19, 20, 21, 22, 23, 24,
378 18, 19, 20, 21, 22, 23, 24, 25,
379 19, 20, 21, 22, 23, 24, 26, 27,
380 20, 21, 22, 23, 25, 26, 27, 28,
381 21, 22, 23, 24, 26, 27, 28, 30,
382 22, 23, 24, 26, 27, 28, 30, 31,
383 23, 24, 25, 27, 28, 30, 31, 33,
384 };
385
386 uint8_t ff_mpeg4_y_dc_scale_table[32]={
387 // 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
388 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
389 };
390 uint8_t ff_mpeg4_c_dc_scale_table[32]={
391 // 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
392 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
393 };
394
395 const uint16_t ff_mpeg4_resync_prefix[8]={
396 0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
397 };
398
399 static const uint8_t mpeg4_dc_threshold[8]={
400 99, 13, 15, 17, 19, 21, 23, 0
401 };