Commit 9d9ed4dc authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_933_fix' into 'main'

Fix for 3GPP issue 933: Decoder: High MLD for ParamISM, 32 kbps, DTX off [allow regression]

See merge request !678
parents dd902be5 0e1a65b4
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -2863,7 +2863,6 @@ void GenShapedSHBExcitation_ivas_fx(
#endif
    set16_fx( zero_mem, 0, LPC_SHB_ORDER );
    set16_fx( wht_fil_mem, 0, LPC_WHTN_ORDER );

    FOR( i = 0; i < L_FRAME32k; i = i + 2 )
    {
        exc32k[i] = negate( bwe_exc_extended[i] ); // Q_bwe_exc
@@ -3036,7 +3035,11 @@ void GenShapedSHBExcitation_ivas_fx(

    White_exc16k = exc16k;
    move16();
    Word16 Q_excTmp2 = sub( add( s_min( getScaleFactor16( excTmp2, L_FRAME16k ), norm_l( *mem_csfilt ) ), *Q_bwe_exc ), 1 );
    Word16 Q_excTmp2 = add( getScaleFactor16( excTmp2, L_FRAME16k ), *Q_bwe_exc );
    IF( *mem_csfilt )
    {
        Q_excTmp2 = s_min( Q_excTmp2, sub( add( norm_l( *mem_csfilt ), *Q_bwe_exc ), 1 ) );
    }
    test();
    /* Track the low band envelope */
    IF( element_mode == IVAS_CPE_TD || element_mode == IVAS_CPE_DFT )
@@ -3148,7 +3151,7 @@ void GenShapedSHBExcitation_ivas_fx(
        tmp = add( *Q_bwe_exc, 1 );
        FOR( k = 0; k < L_FRAME16k; k++ )
        {
            L_tmp4 = L_mult( shr( excNoisyEnv[k], sub( Q_excTmp2, *Q_bwe_exc ) ), White_exc16k[k] ); /* (Q_excTmp2)  +5 +1*/
            L_tmp4 = L_mult( excNoisyEnv[k], White_exc16k[k] ); /* (Q_excTmp2)  +5 +1*/
            White_exc16k_32[k] = L_tmp4;                        /* (Q_excTmp2)  +5 +1*/
            move32();
            L_tmp = L_max( L_tmp, L_abs( White_exc16k_32[k] ) );
@@ -3166,11 +3169,10 @@ void GenShapedSHBExcitation_ivas_fx(
        /* pow22=0.00001f */
        tmp = sub( shl( sub( *Q_bwe_exc, NOISE_QADJ ), 1 ), 31 );
        pow22 = L_shl( 21475l /*0.00001f Q31*/, tmp ); /* 0.00001f in 2*(*Q_bwe_exc-NOISE_QADJ) */
        tmp = sub( NOISE_QFAC, 5 );
        FOR( k = 0; k < L_FRAME16k; k++ )
        {
            /* White_exc16k[k] *= excNoisyEnv[k]; */
            White_exc16k[k] = mult_r( excNoisyEnv[k], shl( White_exc16k[k], tmp ) ); // Q_excTmp2 + 5 + 1 - 15 ==> Q_excTmp2 - 9
            White_exc16k[k] = mult_r( excNoisyEnv[k], shl( White_exc16k[k], 1 ) ); // Q_excTmp2 + 5 + 1 - 15 ==> Q_excTmp2 - 9
            move16();
            chk2 = s_or( chk2, White_exc16k[k] );
            /* i: excNoisyEnv in (Q_excTmp2)     */
@@ -3178,7 +3180,7 @@ void GenShapedSHBExcitation_ivas_fx(
            /* o: White_exc16k in (Q_bwe_exc-NOISE_QADJ)  */
            /* pow22 += White_exc16k[k] * White_exc16k[k]; */
#ifdef BASOP_NOGLOB
            pow22 = L_mac0_sat( pow22, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_bwe_exc-NOISE_QADJ)*/
            pow22 = L_mac0_sat( pow22, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_excTmp2-NOISE_QADJ)*/
#else
            pow22 = L_mac0( pow22, White_exc16k[k], White_exc16k[k] ); /* 2*(Q_bwe_exc-NOISE_QADJ)*/
#endif
@@ -3504,6 +3506,7 @@ void GenShapedSHBExcitation_ivas_fx(
    deemph_fx( White_exc16k, PREEMPH_FAC, L_FRAME16k, tbe_demph );
    /* i/o: White_exc16k (Q_bwe_exc-NOISE_QADJ) */
    /* i: tbe_demph (Q_bwe_exc-NOISE_QADJ) */

#if 1 // def ADD_IVAS_TBE_CODE
    test();
    IF( EQ_32( extl_brate, SWB_TBE_1k10 ) || EQ_32( extl_brate, SWB_TBE_1k75 ) )
@@ -3644,7 +3647,7 @@ void GenShapedSHBExcitation_ivas_fx(
                    tempQ15 = mult_r( SWB_NOISE_MIX_FAC_FX, formant_fac );
                    /* vf_tmp = voice_factors[i] * (1.0f - vf_tmp); */
                    vf_tmp = sub( MAX_16, tempQ15 );
                    vf_tmp = mult_r( voice_factors[i], vf_tmp );
                    vf_tmp = mult( voice_factors[i], vf_tmp );

                    exp = 0;
                    move16();