Commit d6ebdec9 authored by Manuel Jander's avatar Manuel Jander
Browse files

Fix extract_l() error in spectral_balancer_fx16(). IVAS_cod -masa 2...

Fix extract_l() error in spectral_balancer_fx16(). IVAS_cod -masa 2 ../ltv/ltv48_MASA2TC.met -dtx -max_band swb 24400 32 ../ltv/ltv48_MASA2TC_32khz.wav out.192
parent e04199e8
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 ########################### */

+4 −0
Original line number Diff line number Diff line
@@ -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();