Mercurial > libavcodec.hg
comparison mpeg12data.h @ 1177:fea03d2c4946 libavcodec
simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
more direct use of the new mb_type stuff instead of codec specific stuff
runtime mb_type debug output h264/h263 variants/mpeg1/2/4
error concealment /resilience for mpeg1/2
various minor optimizations
author | michaelni |
---|---|
date | Thu, 10 Apr 2003 13:18:38 +0000 |
parents | 77ccf7fe3bd0 |
children | 4c2339f3863a |
comparison
equal
deleted
inserted
replaced
1176:a39d55237445 | 1177:fea03d2c4946 |
---|---|
287 {0xa, 5}, | 287 {0xa, 5}, |
288 {0x8, 5}, | 288 {0x8, 5}, |
289 {0xc, 6} | 289 {0xc, 6} |
290 }; | 290 }; |
291 | 291 |
292 #define MB_INTRA 0x01 | 292 #define MB_TYPE_PAT 0x40000000 |
293 #define MB_PAT 0x02 | 293 #define MB_TYPE_ZERO_MV 0x20000000 |
294 #define MB_BACK 0x04 | 294 #define IS_ZERO_MV(a) ((a)&MB_TYPE_ZERO_MV) |
295 #define MB_FOR 0x08 | 295 #define IS_PAT(a) ((a)&MB_TYPE_PAT) |
296 #define MB_QUANT 0x10 | 296 |
297 | 297 static const uint8_t table_mb_ptype[7][2] = { |
298 static const uint8_t table_mb_ptype[32][2] = { | |
299 { 0, 0 }, // 0x00 | |
300 { 3, 5 }, // 0x01 MB_INTRA | 298 { 3, 5 }, // 0x01 MB_INTRA |
301 { 1, 2 }, // 0x02 MB_PAT | 299 { 1, 2 }, // 0x02 MB_PAT |
302 { 0, 0 }, // 0x03 | |
303 { 0, 0 }, // 0x04 | |
304 { 0, 0 }, // 0x05 | |
305 { 0, 0 }, // 0x06 | |
306 { 0, 0 }, // 0x07 | |
307 { 1, 3 }, // 0x08 MB_FOR | 300 { 1, 3 }, // 0x08 MB_FOR |
308 { 0, 0 }, // 0x09 | |
309 { 1, 1 }, // 0x0A MB_FOR|MB_PAT | 301 { 1, 1 }, // 0x0A MB_FOR|MB_PAT |
310 { 0, 0 }, // 0x0B | |
311 { 0, 0 }, // 0x0C | |
312 { 0, 0 }, // 0x0D | |
313 { 0, 0 }, // 0x0E | |
314 { 0, 0 }, // 0x0F | |
315 { 0, 0 }, // 0x10 | |
316 { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA | 302 { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA |
317 { 1, 5 }, // 0x12 MB_QUANT|MB_PAT | 303 { 1, 5 }, // 0x12 MB_QUANT|MB_PAT |
318 { 0, 0 }, // 0x13 | |
319 { 0, 0 }, // 0x14 | |
320 { 0, 0 }, // 0x15 | |
321 { 0, 0 }, // 0x16 | |
322 { 0, 0 }, // 0x17 | |
323 { 0, 0 }, // 0x18 | |
324 { 0, 0 }, // 0x19 | |
325 { 2, 5 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT | 304 { 2, 5 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT |
326 { 0, 0 }, // 0x1B | 305 }; |
327 { 0, 0 }, // 0x1C | 306 |
328 { 0, 0 }, // 0x1D | 307 static const uint32_t ptype2mb_type[7] = { |
329 { 0, 0 }, // 0x1E | 308 MB_TYPE_INTRA, |
330 { 0, 0 }, // 0x1F | 309 MB_TYPE_L0 | MB_TYPE_PAT | MB_TYPE_ZERO_MV | MB_TYPE_16x16, |
331 }; | 310 MB_TYPE_L0, |
332 | 311 MB_TYPE_L0 | MB_TYPE_PAT, |
333 static const uint8_t table_mb_btype[32][2] = { | 312 MB_TYPE_QUANT | MB_TYPE_INTRA, |
334 { 0, 0 }, // 0x00 | 313 MB_TYPE_QUANT | MB_TYPE_L0 | MB_TYPE_PAT | MB_TYPE_ZERO_MV | MB_TYPE_16x16, |
314 MB_TYPE_QUANT | MB_TYPE_L0 | MB_TYPE_PAT, | |
315 }; | |
316 | |
317 static const uint8_t table_mb_btype[11][2] = { | |
335 { 3, 5 }, // 0x01 MB_INTRA | 318 { 3, 5 }, // 0x01 MB_INTRA |
336 { 0, 0 }, // 0x02 | |
337 { 0, 0 }, // 0x03 | |
338 { 2, 3 }, // 0x04 MB_BACK | 319 { 2, 3 }, // 0x04 MB_BACK |
339 { 0, 0 }, // 0x05 | |
340 { 3, 3 }, // 0x06 MB_BACK|MB_PAT | 320 { 3, 3 }, // 0x06 MB_BACK|MB_PAT |
341 { 0, 0 }, // 0x07 | |
342 { 2, 4 }, // 0x08 MB_FOR | 321 { 2, 4 }, // 0x08 MB_FOR |
343 { 0, 0 }, // 0x09 | |
344 { 3, 4 }, // 0x0A MB_FOR|MB_PAT | 322 { 3, 4 }, // 0x0A MB_FOR|MB_PAT |
345 { 0, 0 }, // 0x0B | |
346 { 2, 2 }, // 0x0C MB_FOR|MB_BACK | 323 { 2, 2 }, // 0x0C MB_FOR|MB_BACK |
347 { 0, 0 }, // 0x0D | |
348 { 3, 2 }, // 0x0E MB_FOR|MB_BACK|MB_PAT | 324 { 3, 2 }, // 0x0E MB_FOR|MB_BACK|MB_PAT |
349 { 0, 0 }, // 0x0F | |
350 { 0, 0 }, // 0x10 | |
351 { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA | 325 { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA |
352 { 0, 0 }, // 0x12 | |
353 { 0, 0 }, // 0x13 | |
354 { 0, 0 }, // 0x14 | |
355 { 0, 0 }, // 0x15 | |
356 { 2, 6 }, // 0x16 MB_QUANT|MB_BACK|MB_PAT | 326 { 2, 6 }, // 0x16 MB_QUANT|MB_BACK|MB_PAT |
357 { 0, 0 }, // 0x17 | |
358 { 0, 0 }, // 0x18 | |
359 { 0, 0 }, // 0x19 | |
360 { 3, 6 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT | 327 { 3, 6 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT |
361 { 0, 0 }, // 0x1B | |
362 { 0, 0 }, // 0x1C | |
363 { 0, 0 }, // 0x1D | |
364 { 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT | 328 { 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT |
365 { 0, 0 }, // 0x1F | 329 }; |
330 | |
331 static const uint32_t btype2mb_type[11] = { | |
332 MB_TYPE_INTRA, | |
333 MB_TYPE_L1, | |
334 MB_TYPE_L1 | MB_TYPE_PAT, | |
335 MB_TYPE_L0, | |
336 MB_TYPE_L0 | MB_TYPE_PAT, | |
337 MB_TYPE_L0L1, | |
338 MB_TYPE_L0L1 | MB_TYPE_PAT, | |
339 MB_TYPE_QUANT | MB_TYPE_INTRA, | |
340 MB_TYPE_QUANT | MB_TYPE_L1 | MB_TYPE_PAT, | |
341 MB_TYPE_QUANT | MB_TYPE_L0 | MB_TYPE_PAT, | |
342 MB_TYPE_QUANT | MB_TYPE_L0L1 | MB_TYPE_PAT, | |
366 }; | 343 }; |
367 | 344 |
368 static const uint8_t mbMotionVectorTable[17][2] = { | 345 static const uint8_t mbMotionVectorTable[17][2] = { |
369 { 0x1, 1 }, | 346 { 0x1, 1 }, |
370 { 0x1, 2 }, | 347 { 0x1, 2 }, |