comparison msmpeg4.c @ 1938:e2501e6e7ff7 libavcodec

unify table indexing (motion_val,dc_val,ac_val,coded_block changed) minor +-1 bugfix
author michael
date Fri, 16 Apr 2004 01:01:45 +0000
parents 07a484280a82
children 4225c131a2eb
comparison
equal deleted inserted replaced
1937:4d91a9342d95 1938:e2501e6e7ff7
447 static inline int coded_block_pred(MpegEncContext * s, int n, uint8_t **coded_block_ptr) 447 static inline int coded_block_pred(MpegEncContext * s, int n, uint8_t **coded_block_ptr)
448 { 448 {
449 int xy, wrap, pred, a, b, c; 449 int xy, wrap, pred, a, b, c;
450 450
451 xy = s->block_index[n]; 451 xy = s->block_index[n];
452 wrap = s->block_wrap[0]; 452 wrap = s->b8_stride;
453 453
454 /* B C 454 /* B C
455 * A X 455 * A X
456 */ 456 */
457 a = s->coded_block[xy - 1 ]; 457 a = s->coded_block[xy - 1 ];
565 cbpy_tab[coded_cbp>>2][1], 565 cbpy_tab[coded_cbp>>2][1],
566 cbpy_tab[coded_cbp>>2][0]); 566 cbpy_tab[coded_cbp>>2][0]);
567 567
568 s->misc_bits += get_bits_diff(s); 568 s->misc_bits += get_bits_diff(s);
569 569
570 h263_pred_motion(s, 0, &pred_x, &pred_y); 570 h263_pred_motion(s, 0, 0, &pred_x, &pred_y);
571 msmpeg4v2_encode_motion(s, motion_x - pred_x); 571 msmpeg4v2_encode_motion(s, motion_x - pred_x);
572 msmpeg4v2_encode_motion(s, motion_y - pred_y); 572 msmpeg4v2_encode_motion(s, motion_y - pred_y);
573 }else{ 573 }else{
574 put_bits(&s->pb, 574 put_bits(&s->pb,
575 table_mb_non_intra[cbp + 64][1], 575 table_mb_non_intra[cbp + 64][1],
576 table_mb_non_intra[cbp + 64][0]); 576 table_mb_non_intra[cbp + 64][0]);
577 577
578 s->misc_bits += get_bits_diff(s); 578 s->misc_bits += get_bits_diff(s);
579 579
580 /* motion vector */ 580 /* motion vector */
581 h263_pred_motion(s, 0, &pred_x, &pred_y); 581 h263_pred_motion(s, 0, 0, &pred_x, &pred_y);
582 msmpeg4_encode_motion(s, motion_x - pred_x, 582 msmpeg4_encode_motion(s, motion_x - pred_x,
583 motion_y - pred_y); 583 motion_y - pred_y);
584 } 584 }
585 585
586 s->mv_bits += get_bits_diff(s); 586 s->mv_bits += get_bits_diff(s);
1547 } 1547 }
1548 1548
1549 cbp|= cbpy<<2; 1549 cbp|= cbpy<<2;
1550 if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C; 1550 if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C;
1551 1551
1552 h263_pred_motion(s, 0, &mx, &my); 1552 h263_pred_motion(s, 0, 0, &mx, &my);
1553 mx= msmpeg4v2_decode_motion(s, mx, 1); 1553 mx= msmpeg4v2_decode_motion(s, mx, 1);
1554 my= msmpeg4v2_decode_motion(s, my, 1); 1554 my= msmpeg4v2_decode_motion(s, my, 1);
1555 1555
1556 s->mv_dir = MV_DIR_FORWARD; 1556 s->mv_dir = MV_DIR_FORWARD;
1557 s->mv_type = MV_TYPE_16X16; 1557 s->mv_type = MV_TYPE_16X16;
1635 if(s->per_mb_rl_table && cbp){ 1635 if(s->per_mb_rl_table && cbp){
1636 s->rl_table_index = decode012(&s->gb); 1636 s->rl_table_index = decode012(&s->gb);
1637 s->rl_chroma_table_index = s->rl_table_index; 1637 s->rl_chroma_table_index = s->rl_table_index;
1638 } 1638 }
1639 set_stat(ST_MV); 1639 set_stat(ST_MV);
1640 h263_pred_motion(s, 0, &mx, &my); 1640 h263_pred_motion(s, 0, 0, &mx, &my);
1641 if (msmpeg4_decode_motion(s, &mx, &my) < 0) 1641 if (msmpeg4_decode_motion(s, &mx, &my) < 0)
1642 return -1; 1642 return -1;
1643 s->mv_dir = MV_DIR_FORWARD; 1643 s->mv_dir = MV_DIR_FORWARD;
1644 s->mv_type = MV_TYPE_16X16; 1644 s->mv_type = MV_TYPE_16X16;
1645 s->mv[0][0][0] = mx; 1645 s->mv[0][0][0] = mx;