Commit d0da6b43 authored by Mohammadreza Naghibzadeh's avatar Mohammadreza Naghibzadeh
Browse files

Fix tmp_deemph scaling in EVS_MONO mode.

parent 12c50030
Loading
Loading
Loading
Loading
Loading
+12 −11
Original line number Diff line number Diff line
@@ -202,10 +202,7 @@ void con_tcx_fx(
        move16();
        Q_exc = E_UTIL_f_preemph3( &( synth[-( ( ( L_frame / 2 ) + hTcxDec->pit_max_TCX ) + 2 * M )] ), st->preemph_fac, add( add( shr( L_frame, 1 ), hTcxDec->pit_max_TCX ), shl( M, 1 ) ), &mem, 1 );
#ifdef FIX_1793_DEC_MC_TO_MONO_SCALING_ISSUE
        if ( NE_32( st->element_mode, EVS_MONO ) ) // to keep evs bit-exactness
        {
        Scale_sig( &( synth[-( ( shr( L_frame, 1 ) + hTcxDec->pit_max_TCX ) + 2 * M )] ), add( add( shr( L_frame, 1 ), hTcxDec->pit_max_TCX ), shl( M, 1 ) ), negate( st->Q_syn_factor ) ); /*Q0, Setting back to Q0, as the following calculations are implemented assuming synth is in Q0 */
        }
#endif
        st->Mode2_lp_gainc = L_deposit_l( 0 );

@@ -253,10 +250,7 @@ void con_tcx_fx(
        move16();
        Q_exc = E_UTIL_f_preemph3( &( synth[-L_frame] ), st->preemph_fac, L_frame, &mem, 1 );
#ifdef FIX_1793_DEC_MC_TO_MONO_SCALING_ISSUE
        if ( NE_32( st->element_mode, EVS_MONO ) ) // to keep evs bit-exactness
        {
        Scale_sig( &synth[-L_frame], L_frame, negate( st->Q_syn_factor ) ); /*Q0, Setting back to Q0, as the following calculations are implemented assuming synth is in Q0 */
        }
#endif
        Copy( st->old_Aq_12_8_fx, A_local, M + 1 ); /*Q12*/

@@ -821,11 +815,18 @@ void con_tcx_fx(

    Copy_Scale_sig( buf, mem_syn, M, exp_scale ); /*Q: tmp16*/
#ifdef FIX_1793_DEC_MC_TO_MONO_SCALING_ISSUE
    if ( NE_32( st->element_mode, EVS_MONO ) && GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) )
    IF( NE_32( st->element_mode, EVS_MONO ) ) // to keep evs bit-exactness
    {
        if ( GT_16( sub( Q_syn, st->Q_syn_factor ), scf ) )
        {
            Q_syn = add( scf, st->Q_syn_factor ); // so that (Q_syn - st->Q_syn_factor) = scf;
        }
        tmp_deemph = shl( tmp_deemph, sub( Q_syn, st->Q_syn_factor ) );
    }
    ELSE
    {
        tmp_deemph = shl_sat( tmp_deemph, Q_syn ); /*Q_syn*/
    }
    st->Q_syn_factor = 0;
    move16();
#else