Commit b69b11e3 authored by Manuel Jander's avatar Manuel Jander
Browse files

Add missing assignment of Q values of overlap add buffers.

parent 15b9ec52
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -690,6 +690,10 @@ void decoder_acelp_fx(
    E_UTIL_deemph2( st->Q_syn, syn, st->preemph_fac, st->L_frame, &tmp_deemph ); /* tmp_deemph and syn in Q0 starting from here*/

    bufferCopyFx( syn + shr( st->L_frame, 1 ), hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), 0 /*Qf_syn*/, -1 /*Qf_old_xnq*/, 0, 0 /*Q_old_xnq*/ );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    st->hTcxDec->Q_old_syn_Overl = sub( st->Q_syn, 1 );
    move16();
#endif

    Copy( syn + sub( st->L_frame, M + 1 ), st->syn, 1 + M ); /*Q0*/

+8 −1
Original line number Diff line number Diff line
@@ -1018,6 +1018,10 @@ void con_acelp_fx(
    Copy( syn, synth, st->L_frame );

    bufferCopyFx( syn + sub( st->L_frame, shr( st->L_frame, 1 ) ), hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), 0 /*Qf_syn*/, -1 /*Qf_old_xnq*/, 0, 0 /*Q_old_xnq*/ );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    st->hTcxDec->Q_old_syn_Overl = sub( Qf_syn, 1 );
    move16();
#endif

    /* save last half frame if next frame is TCX */
    bufferCopyFx( syn + st->L_frame, hTcxDec->syn_Overl_TDAC, shr( st->L_frame, 1 ), 0 /*Qf_syn*/, -1 /*Qf_old_xnq*/, 0, 0 /*Q_old_xnq*/ );
@@ -1057,7 +1061,10 @@ void con_acelp_fx(
        move16();
    }
    set16_fx( &hHQ_core->old_out_LB_fx[( W1 + n )], 0, n );
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    hHQ_core->Q_old_wtda_LB = st->Q_syn;
    move16();
#else
    hHQ_core->Q_old_wtda = hHQ_core->Q_old_wtda_LB;
    move16();
#endif
+10 −0
Original line number Diff line number Diff line
@@ -843,7 +843,15 @@ void con_tcx_fx(


    lerp( syn + sub( L_frame, shr( L_frame, 1 ) ), hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), shr( L_frame, 1 ) );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    st->hTcxDec->Q_old_syn_Overl = Q_syn;
    move16();
#endif
    Copy( syn + sub( L_frame, n ), hHQ_core->old_out_fx, sub( L_frame, n ) ); /*Q_syn*/
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    hHQ_core->Q_old_wtda = Q_syn;
    move16();
#endif

    FOR( i = 0; i < W12; i++ )
    {
@@ -934,7 +942,9 @@ void con_tcx_fx(
    move16();

    /* update memory for low band */
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
    Scale_sig( hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), sub( -1, Q_syn ) ); /*Q_syn*/
#endif
    lerp( hTcxDec->syn_OverlFB, hTcxDec->syn_Overl, shr( st->L_frame, 1 ), shr( L_frame, 1 ) );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    hTcxDec->Q_syn_Overl = hTcxDec->Q_syn_OverlFB;
+4 −0
Original line number Diff line number Diff line
@@ -1207,6 +1207,10 @@ void update_decoder_LPD_cng(
        Copy( hTcxDec->old_synth + st->L_frame, hTcxDec->old_synth, sub( hTcxDec->old_synth_len, st->L_frame ) );
        Copy( synth, hTcxDec->old_synth + sub( hTcxDec->old_synth_len, st->L_frame ), st->L_frame );
        bufferCopyFx( synth + sub( st->L_frame, ( st->L_frame / 2 ) ), hTcxDec->old_syn_Overl, st->L_frame / 2, 0 /*Qf_syn*/, -1 /*Qf_old_xnq*/, 0, 0 /*Q_old_xnq*/ );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
        st->hTcxDec->Q_old_syn_Overl = sub( st->Q_syn, 1 );
        move16();
#endif

        hTcxDec->tcxltp_last_gain_unmodified = 0;
        move16();