@ -787,15 +787,16 @@ static int rv34_decode_mv(RV34DecContext *r, int block_type)
case RV34_MB_B_DIRECT :
//surprisingly, it uses motion scheme from next reference frame
next_bt = s - > next_picture_ptr - > mb_type [ s - > mb_x + s - > mb_y * s - > mb_stride ] ;
if ( IS_INTRA ( next_bt ) )
if ( IS_INTRA ( next_bt ) | | IS_SKIP ( next_bt ) ) {
fill_rectangle ( s - > current_picture_ptr - > motion_val [ 0 ] [ s - > mb_x * 2 + s - > mb_y * 2 * s - > b8_stride ] , 2 , 2 , s - > b8_stride , 0 , 4 ) ;
else
fill_rectangle ( s - > current_picture_ptr - > motion_val [ 1 ] [ s - > mb_x * 2 + s - > mb_y * 2 * s - > b8_stride ] , 2 , 2 , s - > b8_stride , 0 , 4 ) ;
} else
for ( j = 0 ; j < 2 ; j + + )
for ( i = 0 ; i < 2 ; i + + )
for ( k = 0 ; k < 2 ; k + + )
for ( l = 0 ; l < 2 ; l + + )
s - > current_picture_ptr - > motion_val [ l ] [ mv_pos + i + j * s - > b8_stride ] [ k ] = calc_add_mv ( r , l , s - > next_picture_ptr - > motion_val [ 0 ] [ mv_pos + i + j * s - > b8_stride ] [ k ] ) ;
if ( IS_16X16 ( next_bt ) ) //we can use whole macroblock MC
if ( ! ( IS_16X8 ( next_bt ) | | IS_8X 16 ( next_bt ) | | IS_8X8 ( next_bt ) ) ) //we can use whole macroblock MC
rv34_mc_2mv ( r , block_type ) ;
else
rv34_mc_2mv_skip ( r ) ;