Commit 005edb87 authored by Mohammadreza Naghibzadeh's avatar Mohammadreza Naghibzadeh
Browse files

Modified q_win calculation for the case when all memory buffers are zero.

Disabled Q_syn_Overl modification in PLC mode.
parent 0d5df829
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -2613,14 +2613,26 @@ static Word16 IMDCT_ivas_fx_calc_qwin(

    q_win = 6;
    move16();
    Word16 q_scale_syn_Overl_TDAC ,q_scale_syn_Overl, q_scale_old_syn_Overl, q_scale_old_out;

    // q_win  == norm + Q_syn_Overl_TDAC
    q_win = s_min( q_win, norm_arr( syn_Overl_TDAC, syn_Overl_TDAC_len ) + Q_syn_Overl_TDAC );
    q_scale_syn_Overl_TDAC = norm_arr( syn_Overl_TDAC, syn_Overl_TDAC_len );
    q_win = s_min( q_win, q_scale_syn_Overl_TDAC + Q_syn_Overl_TDAC );

    // q_win = s_min( q_win, norm_arr( syn_Overl, oldLength / 2 ) + Q_syn_Overl );
    q_win = s_min( q_win, norm_arr( syn_Overl, old_syn_Overl_len ) + Q_syn_Overl );
    q_win = s_min( q_win, norm_arr( old_syn_Overl, old_syn_Overl_len ) + Q_old_syn_Overl );
    q_scale_syn_Overl = norm_arr( syn_Overl, old_syn_Overl_len );
    q_win = s_min( q_win, q_scale_syn_Overl + Q_syn_Overl );

    q_scale_old_syn_Overl = norm_arr( old_syn_Overl, old_syn_Overl_len );
    q_win = s_min( q_win, q_scale_old_syn_Overl + Q_old_syn_Overl );

    // q_win = s_min( q_win, norm_arr( old_out_fx, oldLength ) + Q_old_out_fx );
    q_win = s_min( q_win, norm_arr( old_out_fx, t ) + Q_old_out_fx );
    q_scale_old_out = norm_arr( old_out_fx, t );
    q_win = s_min( q_win, q_scale_old_out + Q_old_out_fx );

    if ( q_scale_old_out == Q15 && q_scale_old_syn_Overl == Q15 &&
        q_scale_old_syn_Overl == Q15 && q_scale_syn_Overl_TDAC == Q15 ) 
        q_win = 0;

#if 0
    set16_zero_fx(syn_Overl_TDAC + oldLength / 2, (t-oldLength)/2 );
+2 −2
Original line number Diff line number Diff line
@@ -1430,8 +1430,8 @@ void ivas_mdct_core_reconstruct_fx(
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT_QWIN
            st->hTcxDec->Q_syn_OverlFB = add( st->hTcxDec->Q_syn_OverlFB, q_syn );
            move16();
            st->hTcxDec->Q_syn_Overl = add( st->hTcxDec->Q_syn_Overl, q_syn );
            move16();
            //st->hTcxDec->Q_syn_Overl = add( st->hTcxDec->Q_syn_Overl, q_syn );    // It is disabled because it increased the number of regressions.
            //move16();
#endif

            IF( ( EQ_16( st->nbLostCmpt, 1 ) ) || ( st->hTcxDec->tcxConceal_recalc_exc != 0 ) )