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 }, |
