Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,7 @@ #define FIX_2493_CHECK_EXTRACT_L /* FhG: Verify that extract_l, W_extract_l etc. do not encounter an overflow. */ #define NONBE_FIX_2493_CHECK_EXTRACT_L_estDownmixGain_fx /* FhG: Fix extract_l overflow inside estDownmixGain_fx() */ #define FIX_2493_CHECK_EXTRACT_L_swb_pre_proc_fx_BE_EVS /* FhG: Keep EVS bitexact within the fix in swb_pre_proc_fx() */ #define NONBE_FIX_2493_EXTRACT_L_spectral_balancer_fx16 /* FhG: Fix extract_l overflow inside spectral_balancer_fx16() */ /* ##################### End NON-BE switches ########################### */ Loading lib_enc/ivas_stereo_ica_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -273,10 +273,14 @@ void spectral_balancer_fx16( x0 = signal[i]; /*Qx*/ move16(); // y0 = (y1 * a1) + (y2 * a2) + (x0 * b0) + (x1 * b1) + (x2 * b2); #ifdef NONBE_FIX_2493_EXTRACT_L_spectral_balancer_fx16 y0 = extract_h( W_extract_h( W_shl( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 2 + 16 ) ) ); // Qx #else #ifdef FIX_2493_CHECK_EXTRACT_L y0 = extract_l2( W_extract_l2( W_shr( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 30 ) ) ); // Qx #else y0 = extract_l( W_extract_l( W_shr( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 30 ) ) ); // Qx #endif #endif signal[i] = y0; /*Qx*/ move16(); Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,7 @@ #define FIX_2493_CHECK_EXTRACT_L /* FhG: Verify that extract_l, W_extract_l etc. do not encounter an overflow. */ #define NONBE_FIX_2493_CHECK_EXTRACT_L_estDownmixGain_fx /* FhG: Fix extract_l overflow inside estDownmixGain_fx() */ #define FIX_2493_CHECK_EXTRACT_L_swb_pre_proc_fx_BE_EVS /* FhG: Keep EVS bitexact within the fix in swb_pre_proc_fx() */ #define NONBE_FIX_2493_EXTRACT_L_spectral_balancer_fx16 /* FhG: Fix extract_l overflow inside spectral_balancer_fx16() */ /* ##################### End NON-BE switches ########################### */ Loading
lib_enc/ivas_stereo_ica_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -273,10 +273,14 @@ void spectral_balancer_fx16( x0 = signal[i]; /*Qx*/ move16(); // y0 = (y1 * a1) + (y2 * a2) + (x0 * b0) + (x1 * b1) + (x2 * b2); #ifdef NONBE_FIX_2493_EXTRACT_L_spectral_balancer_fx16 y0 = extract_h( W_extract_h( W_shl( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 2 + 16 ) ) ); // Qx #else #ifdef FIX_2493_CHECK_EXTRACT_L y0 = extract_l2( W_extract_l2( W_shr( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 30 ) ) ); // Qx #else y0 = extract_l( W_extract_l( W_shr( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mac_32_16( W_mult_32_16( a1, y1 ), a2, y2 ), b0, x0 ), b1, x1 ), b2, x2 ), 30 ) ) ); // Qx #endif #endif signal[i] = y0; /*Qx*/ move16(); Loading