Commit e18c9336 authored by fotopoulou's avatar fotopoulou
Browse files

Merge branch...

Merge branch '2166-ltv-decoder-crash-with-osba-bitrate-switching-stereo-output-and-fer-10-for-10db-input' into 'main'

[non-BE][allow regression]Resolve "LTV decoder crash with OSBA bitrate switching stereo output and FER 10% for +10dB input"

Closes #2145 and #2166

See merge request !2482
parents 1c58160c 0df1312e
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@
#define FIX_2164_ASSERT_IN_OMASA_PREPROC_FOR_EDIT            /* Nokia: Issue 2164: Prevent overflow when calculating equalization coefficient for editing before clamping to safe range */
#define FIX_BASOP_ASSERT_IN_TONAL_MDCT_PLC                   /* FhG: fix for issue 2165 - using saturating addition in tonal MDCT PLC function */
#define OPT_2146_BASOP_UTIL_ADD_MANT32EXP                    /* Dlb: optimized version of BASOP_Util_Add_Mant32Exp() */
#define FIX_2166_ASSERT_OSBA_PLC_STEREO_OUT                  /* FhG: fix for issue 2166 - add missing averaging factor 0.5 in for the sum of energies in function stereo_dft_dmx_swb_nrg_fx()*/

#define FIX_1793_DEC_MC_TO_MONO_SCALING_ISSUE                /* FhG: Use dynamic Q factor for synth_fx and synthFB_fx to prevent overflow */
/* ################### End FIXES switches ########################### */
+15 −0
Original line number Diff line number Diff line
@@ -785,18 +785,33 @@ Word32 stereo_dft_dmx_swb_nrg_fx(
    {
        FOR( i = 0; i < frame_length / 2; i++ )
        {
#ifdef FIX_2166_ASSERT_OSBA_PLC_STEREO_OUT
            dmx_nrg = L_add( dmx_nrg,
                             L_shr( L_add( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ),
                                           Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ) ),
                                    1 ) ); /* Q0 */
#else
            dmx_nrg = L_add( dmx_nrg,
                             L_add( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ),
                                    Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ) ) ); /* Q0 */
#endif
        }
    }
    ELSE
    {
        FOR( i = 0; i < frame_length / 2; i++ )
        {
#ifdef FIX_2166_ASSERT_OSBA_PLC_STEREO_OUT
            dmx_nrg = L_add( dmx_nrg,
                             L_shr( L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ),
                                           L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ),
                                    1 ) ); /*3*q0 - 31*/
#else
            dmx_nrg = L_add( dmx_nrg,
                             L_add( L_shl( Madd_32_32( Mpy_32_32( dmx_k0[2 * i], dmx_k0[2 * i] ), dmx_k0[2 * i + 1], dmx_k0[2 * i + 1] ), q0 ),
                                    L_shl( Madd_32_32( Mpy_32_32( dmx_k1[2 * i], dmx_k1[2 * i] ), dmx_k1[2 * i + 1], dmx_k1[2 * i + 1] ), q1 ) ) ); /*3*q0 - 31*/

#endif
        }
    }