Commit bf0b0115 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into...

Merge branch 'main' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into lc3plus-v161-update-main
parents 574e8b08 e18c9336
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 ########################### */
+5 −5
Original line number Diff line number Diff line
@@ -344,9 +344,8 @@ void ivas_osba_stereo_add_channels_fx(
    IF( EQ_16( ism_mode, ISM_SBA_MODE_DISC ) )
    {
        Word32 gain = gain_bed_fx;
        test();
        move32();

        // TODO: Enable gain editing feature (NE_32 ( gain, ONE_IN_Q_gain ) )
        test();
        IF( NE_32( gain, ONE_IN_Q29 ) && GT_32( gain, 0 ) )
        {
@@ -354,7 +353,8 @@ void ivas_osba_stereo_add_channels_fx(
            {
                FOR( i = 0; i < n_samples_to_render; i++ )
                {
                    Word32 tmp1 = Mpy_32_32( tc_fx[n + nchan_ism][i], gain ); // Q11 + Q29 - 31 = Q9
                    Word32 tmp1;
                    tmp1 = Mpy_32_32( tc_fx[n + nchan_ism][i], gain );    // Q11 + Q29 - 31 = Q9
                    tmp1 = L_shl( tmp1, 2 );                              // Q9 --> Q11
                    output_fx[n][i] = L_add_sat( output_fx[n][i], tmp1 ); // Q11
                }
+22 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@

*******************************************************************************************************/

#include "enh32.h"
#include <assert.h>
#include <stdint.h>
#include "options.h"
@@ -886,6 +887,27 @@ ivas_error ivas_sba_dec_render_fx(

        ivas_spar_dec_upmixer_sf_fx( st_ivas, output_fx_local, nchan_internal );

        test();
        IF( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) )
        {
            Word32 gain = st_ivas->hSbaIsmData->gain_bed_fx; // Q29
            move32();

            test();
            IF( NE_32( gain, ONE_IN_Q29 ) && NE_32( gain, 0 ) )
            {
                FOR( ch = 0; ch < nchan_out; ch++ )
                {
                    FOR( Word16 i = 0; i < n_samples_sf; i++ )
                    {
                        Word32 tmp1;
                        tmp1 = Mpy_32_32( output_fx_local[ch][i], gain ); // Q11 + Q29 - 31 = Q9
                        output_fx_local[ch][i] = L_shl( tmp1, 2 );        // Q9 --> Q11
                    }
                }
            }
        }

        FOR( ch = 0; ch < nchan_out; ch++ )
        {
            output_fx_local[ch] = output_fx_local[ch] + n_samples_sf; /*Q11*/
+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
        }
    }