diff --git a/lib_rend/ivas_reverb_filter_design.c b/lib_rend/ivas_reverb_filter_design.c index 79ad2c1514cf78f30ec855acd31bd8ae95bedd5c..b4cc42a340f91abaf977af3e05335548a7463691 100644 --- a/lib_rend/ivas_reverb_filter_design.c +++ b/lib_rend/ivas_reverb_filter_design.c @@ -681,9 +681,18 @@ static void response_step_limit_fx( FOR( i = add( pivot_bin_idx, 1 ); i < dim_x; i++ ) { Word16 div_e; - Word32 desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i - 1], &div_e ); - Word16 desiredChange_q = sub( 31, ( div_e ) ); + Word32 desiredChange = 0; + move32(); + Word16 desiredChange_q = Q31; + move16(); Word64 temp; + + IF( X[i] ) + { + desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i - 1], &div_e ); + desiredChange_q = sub( 31, ( div_e ) ); + } + IF( GT_16( desiredChange_q, 30 ) ) { desiredChange = L_shr( desiredChange, desiredChange_q - 30 ); @@ -720,9 +729,17 @@ static void response_step_limit_fx( FOR( i = sub( pivot_bin_idx, 1 ); i >= 0; i-- ) { Word16 div_e; - Word32 desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i + 1], &div_e ); - Word16 desiredChange_q = sub( 31, ( div_e ) ); + Word32 desiredChange = 0; + move32(); + Word16 desiredChange_q = Q31; + move16(); Word64 temp; + + IF( X[i] ) + { + desiredChange = BASOP_Util_Divide3232_Scale_cadence( X[i], X[i + 1], &div_e ); + desiredChange_q = sub( 31, ( div_e ) ); + } IF( GT_16( desiredChange_q, 30 ) ) { desiredChange = L_shr( desiredChange, desiredChange_q - 30 );