@ -891,11 +891,6 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
motion_y [ 0 ] = fixed_motion_vector_table [ get_bits ( gb , 6 ) ] ;
}
for ( k = 1 ; k < 6 ; k + + ) {
motion_x [ k ] = motion_x [ 0 ] ;
motion_y [ k ] = motion_y [ 0 ] ;
}
/* vector maintenance, only on MODE_INTER_PLUS_MV */
if ( s - > macroblock_coding [ current_macroblock ] = =
MODE_INTER_PLUS_MV ) {
@ -946,10 +941,6 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
/* all 6 fragments use the last motion vector */
motion_x [ 0 ] = last_motion_x ;
motion_y [ 0 ] = last_motion_y ;
for ( k = 1 ; k < 6 ; k + + ) {
motion_x [ k ] = motion_x [ 0 ] ;
motion_y [ k ] = motion_y [ 0 ] ;
}
/* no vector maintenance (last vector remains the
* last vector ) */
@ -960,10 +951,6 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
* last motion vector */
motion_x [ 0 ] = prior_last_motion_x ;
motion_y [ 0 ] = prior_last_motion_y ;
for ( k = 1 ; k < 6 ; k + + ) {
motion_x [ k ] = motion_x [ 0 ] ;
motion_y [ k ] = motion_y [ 0 ] ;
}
/* vector maintenance */
prior_last_motion_x = last_motion_x ;
@ -974,8 +961,8 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
default :
/* covers intra, inter without MV, golden without MV */
memset ( motion_x , 0 , 6 * sizeof ( int ) ) ;
memset ( motion_y , 0 , 6 * sizeof ( int ) ) ;
motion_x [ 0 ] = 0 ;
motion_y [ 0 ] = 0 ;
/* no vector maintenance */
break ;
@ -992,8 +979,13 @@ static int unpack_vectors(Vp3DecodeContext *s, GetBitContext *gb)
current_fragment , s - > fragment_count ) ;
return 1 ;
}
if ( s - > macroblock_coding [ current_macroblock ] = = MODE_INTER_FOURMV ) {
s - > all_fragments [ current_fragment ] . motion_x = motion_x [ k ] ;
s - > all_fragments [ current_fragment ] . motion_y = motion_y [ k ] ;
} else {
s - > all_fragments [ current_fragment ] . motion_x = motion_x [ 0 ] ;
s - > all_fragments [ current_fragment ] . motion_y = motion_y [ 0 ] ;
}
}
}
}