# HG changeset patch # User michaelni # Date 1031917677 0 # Node ID 5446a41a00fe58816dc2226af1eeea666efc78b0 # Parent f5b8b5dd50d72decce03a7a58a5f6d2e694f7fc5 10l (field select readed at the wrong place ...) diff -r f5b8b5dd50d7 -r 5446a41a00fe h263.c --- a/h263.c Fri Sep 13 11:24:58 2002 +0000 +++ b/h263.c Fri Sep 13 11:47:57 2002 +0000 @@ -2840,10 +2840,21 @@ if(cbp) s->interlaced_dct= get_bits1(&s->gb); - if(mb_type!=MB_TYPE_B_DIRECT && get_bits1(&s->gb)) + if(mb_type!=MB_TYPE_B_DIRECT && get_bits1(&s->gb)){ field_mv=1; + + if(mb_type!=MB_TYPE_B_BACKW){ + s->field_select[0][0]= get_bits1(&s->gb); + s->field_select[0][1]= get_bits1(&s->gb); + } + if(mb_type!=MB_TYPE_B_FORW){ + s->field_select[1][0]= get_bits1(&s->gb); + s->field_select[1][1]= get_bits1(&s->gb); + } + } } + s->mv_dir = 0; if(mb_type!=MB_TYPE_B_DIRECT && !field_mv){ s->mv_type= MV_TYPE_16X16; if(mb_type!=MB_TYPE_B_BACKW){ @@ -2853,8 +2864,7 @@ my = h263_decode_motion(s, s->last_mv[0][0][1], s->f_code); s->last_mv[0][1][0]= s->last_mv[0][0][0]= s->mv[0][0][0] = mx; s->last_mv[0][1][1]= s->last_mv[0][0][1]= s->mv[0][0][1] = my; - }else - s->mv_dir = 0; + } if(mb_type!=MB_TYPE_B_FORW){ s->mv_dir |= MV_DIR_BACKWARD; @@ -2868,10 +2878,9 @@ PRINT_MB_TYPE(mb_type==MB_TYPE_B_FORW ? "F" : (mb_type==MB_TYPE_B_BACKW ? "B" : "T")); }else if(mb_type!=MB_TYPE_B_DIRECT){ s->mv_type= MV_TYPE_FIELD; + if(mb_type!=MB_TYPE_B_BACKW){ s->mv_dir = MV_DIR_FORWARD; - s->field_select[0][0]= get_bits1(&s->gb); - s->field_select[0][1]= get_bits1(&s->gb); for(i=0; i<2; i++){ mx = h263_decode_motion(s, s->last_mv[0][i][0] , s->f_code); @@ -2879,13 +2888,10 @@ s->last_mv[0][i][0]= s->mv[0][i][0] = mx; s->last_mv[0][i][1]= (s->mv[0][i][1] = my)*2; } - }else - s->mv_dir = 0; + } if(mb_type!=MB_TYPE_B_FORW){ s->mv_dir |= MV_DIR_BACKWARD; - s->field_select[1][0]= get_bits1(&s->gb); - s->field_select[1][1]= get_bits1(&s->gb); for(i=0; i<2; i++){ mx = h263_decode_motion(s, s->last_mv[1][i][0] , s->b_code);