Commit 3fa130ba authored by Manuel Jander's avatar Manuel Jander
Browse files

Correct asignments of Q_syn_OverlFB which was wrong or missing at some places.

parent f67e5519
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -396,8 +396,15 @@ void open_decoder_LPD_fx(
                move16();

                Copy( hHQ_core->fer_samples_fx + delay_comp, hTcxDec->syn_OverlFB, shr( hTcxDec->L_frameTCX, 1 ) ); /* hHQ_core->Q_fer_samples*/

#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
                hTcxDec->Q_syn_OverlFB = hHQ_core->Q_fer_samples;
                move16();
#endif
                lerp( hHQ_core->fer_samples_fx + delay_comp, hTcxDec->syn_Overl, shr( st->L_frame, 1 ), shr( hTcxDec->L_frameTCX, 1 ) ); /*Q0: ACELP(bfi)->TCX(rect)*/
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
                hTcxDec->Q_syn_Overl = hHQ_core->Q_fer_samples;
                move16();
#endif

                /*old_out needed for MODE1 routine and syn_Overl_TDAC for MODE2 routine*/
                hHQ_core->Q_old_wtda = -1;
@@ -1070,7 +1077,15 @@ void acelp_plc_mdct_transition_fx(
        move16(); /*CLDFB delay*/

        Copy( st->hHQ_core->fer_samples_fx + delay_comp, st->hTcxDec->syn_OverlFB, shr( st->hTcxDec->L_frameTCX, 1 ) );                      /* Q_fer_samples */
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
        st->hTcxDec->Q_syn_OverlFB = st->hHQ_core->Q_fer_samples;
        move16();
#endif
        lerp( st->hHQ_core->fer_samples_fx + delay_comp, st->hTcxDec->syn_Overl, shr( st->L_frame, 1 ), shr( st->hTcxDec->L_frameTCX, 1 ) ); /*ACELP(bfi)->TCX(rect)*/
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
        st->hTcxDec->Q_syn_Overl = st->hHQ_core->Q_fer_samples;
        move16();
#endif
        /*old_out needed for MODE1 routine and syn_Overl_TDAC for MODE2 routine*/
        st->hHQ_core->Q_old_wtda = -1;
        move16();
+4 −0
Original line number Diff line number Diff line
@@ -1104,6 +1104,10 @@ void con_acelp_fx(
    st->hTcxDec->Q_syn_Overl_TDACFB = st->hTcxDec->Q_syn_Overl_TDAC;
    move16();
    lerp( hTcxDec->syn_Overl, hTcxDec->syn_OverlFB, shr( hTcxDec->L_frameTCX, 1 ), shr( st->L_frame, 1 ) );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    hTcxDec->Q_syn_OverlFB = hTcxDec->Q_syn_Overl;
    move16();
#endif
    lerp( hHQ_core->old_out_LB_fx, hHQ_core->old_out_fx, hTcxDec->L_frameTCX, st->L_frame );
#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    hHQ_core->Q_old_wtda = hHQ_core->Q_old_wtda_LB;
+20 −0
Original line number Diff line number Diff line
@@ -910,7 +910,13 @@ void con_tcx_fx(
    bufferCopyFx( syn, synth, L_frame, Q_syn, 0, 0, 0 ); /*Q_syn*/
    BASOP_SATURATE_WARNING_ON_EVS

#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    Copy_Scale_sig( syn + L_frame, hTcxDec->syn_OverlFB, shr( L_frame, 1 ), sub( 0, Q_syn ) ); /*Q0*/
    hTcxDec->Q_syn_OverlFB = 0;
    move16();
#else
    Copy_Scale_sig( syn + L_frame, hTcxDec->syn_OverlFB, shr( L_frame, 1 ), negate( Q_syn ) ); /*Q0*/
#endif

    /* copy total excitation exc2 as 16kHz for acelp mode1 decoding */
    IF( st->hWIDec != NULL )
@@ -973,6 +979,10 @@ void con_tcx_fx(
    /* update memory for low band */
    Scale_sig( hTcxDec->old_syn_Overl, shr( st->L_frame, 1 ), sub( -1, Q_syn ) ); /*Q_syn*/
    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;
    move16();
#endif
    lerp( hTcxDec->syn_Overl_TDACFB, hTcxDec->syn_Overl_TDAC, shr( st->L_frame, 1 ), shr( L_frame, 1 ) );
    hTcxDec->Q_syn_Overl_TDAC = hTcxDec->Q_syn_Overl_TDACFB;
    move16();
@@ -1865,7 +1875,13 @@ void con_tcx_ivas_fx(
    bufferCopyFx( syn, synth, L_frame, Q_syn, 0, 0, 0 ); /*Q_syn*/
    BASOP_SATURATE_WARNING_ON_EVS

#ifdef FIX_1348_BIT_PRECISION_IMPROVEMENT
    Copy_Scale_sig( syn + L_frame, hTcxDec->syn_OverlFB, shr( L_frame, 1 ), sub( 0, Q_syn ) ); /*Q0*/
    hTcxDec->Q_syn_OverlFB = 0;
    move16();
#else
    Copy_Scale_sig( syn + L_frame, hTcxDec->syn_OverlFB, shr( L_frame, 1 ), negate( Q_syn ) ); /*Q0*/
#endif

    /* copy total excitation exc2 as 16kHz for acelp mode1 decoding */
    IF( st->hWIDec != NULL )
@@ -1934,6 +1950,10 @@ void con_tcx_ivas_fx(
    st->hTcxDec->Q_old_syn_Overl = -1;
#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;
    move16();
#endif
    lerp( hTcxDec->syn_Overl_TDACFB, hTcxDec->syn_Overl_TDAC, shr( st->L_frame, 1 ), shr( L_frame, 1 ) );
    hTcxDec->Q_syn_Overl_TDAC = hTcxDec->Q_syn_Overl_TDACFB;
    move16();
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ ivas_error evs_dec_fx(
            tmp1 = extract_l( L_shr_r( f, s ) ); /*Q14 - s*/
            FOR( i = 0; i < st_fx->hTcxCfg->tcx_mdct_window_lengthFB; i++ )
            {
                hTcxDec->syn_OverlFB[i] = shl_sat( mult_sat( tmp1, hTcxDec->syn_OverlFB[i] ), add( s, 1 ) ); /*hTcxDec->Q_syn_Overl*/
                hTcxDec->syn_OverlFB[i] = shl_sat( mult_sat( tmp1, hTcxDec->syn_OverlFB[i] ), add( s, 1 ) ); /*hTcxDec->Q_syn_OverlFB*/
                move16();
            }
            s = norm_l( f );
+2 −1
Original line number Diff line number Diff line
@@ -707,6 +707,7 @@ ivas_error ivas_core_dec_fx(
                        st->hHQ_core->Q_fer_samples = 0;
                        move16();
                    }
#ifndef FIX_1348_BIT_PRECISION_IMPROVEMENT
                    IF( NE_16( st->core, st->last_core ) )
                    {
                        IF( st->hTcxDec )
@@ -716,7 +717,7 @@ ivas_error ivas_core_dec_fx(
                        st->Q_syn = 0;
                        move16();
                    }

#endif
                    st->prev_Q_syn = st->Q_syn;
                    move16();

Loading