@ -517,23 +517,30 @@ static void init_dequantizer(Vp3DecodeContext *s, int qpi)
/*
* This function initializes the loop filter boundary limits if the frame ' s
* quality index is different from the previous frame ' s .
*
* The filter_limit_values may not be larger than 127.
*/
static void init_loop_filter ( Vp3DecodeContext * s )
{
int * bounding_values = s - > bounding_values_array + 127 ;
int filter_limit ;
int x ;
int value ;
filter_limit = s - > filter_limit_values [ s - > qps [ 0 ] ] ;
/* set up the bounding values */
memset ( s - > bounding_values_array , 0 , 256 * sizeof ( int ) ) ;
for ( x = 0 ; x < filter_limit ; x + + ) {
bounding_values [ - x - filter_limit ] = - filter_limit + x ;
bounding_values [ - x ] = - x ;
bounding_values [ x ] = x ;
bounding_values [ x + filter_limit ] = filter_limit - x ;
}
for ( x = value = filter_limit ; x < 128 & & value ; x + + , value - - ) {
bounding_values [ x ] = value ;
bounding_values [ - x ] = - value ;
}
if ( value )
bounding_values [ 128 ] = value ;
bounding_values [ 129 ] = bounding_values [ 130 ] = filter_limit * 0x02020202 ;
}