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