Commit 2132a821 authored by multrus's avatar multrus
Browse files

[cleanup] accept HARMONIZE_2604_decoder_tcx_post

parent a41bb380
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@
#define FIX_1990_SANITIZER_IN_REVERB_LOAD               /* Nokia: Fix issue part of issue 1990 by introducing missing free of structure - keep until #2059 is addressed */
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */
#define HARMONIZE_2604_decoder_tcx_post                 /* FhG: Harmonize decoder_tcx_post with its ivas derivate */
#define HARMONIZE_2598_tcx_arith_decode_envelope        /* FhG: harmonize tcx_arith_decode_envelope between EVS and IVAS versions */
#define HARMONIZE_2598_tcx_arith_encode_envelope        /* FhG: harmonize tcx_arith_encode_envelope between EVS and IVAS versions */
#define FIX_ISSUE_2594_FALSE_COMMENT                    /* FhG: basop issue 2594: fixing false comments about Q value*/
+0 −18
Original line number Diff line number Diff line
@@ -7955,14 +7955,6 @@ void decoder_tcx_ivas_fx(
    const Word16 frame_cnt,
    const Word16 sba_dirac_stereo_flag );

#ifndef HARMONIZE_2604_decoder_tcx_post
void decoder_tcx_post_fx(
    Decoder_State *st_fx,
    Word16 *synth,
    Word16 *synthFB,
    Word16 *A,
    Word16 bfi );
#endif

#ifndef HARMONIZE_2598_tcx_arith_decode_envelope
void tcx_arith_decode_envelope_fx(
@@ -8388,7 +8380,6 @@ UWord32 mvl2s_r(
    const Word16 n /* i  : vector size   */
);

#ifdef HARMONIZE_2604_decoder_tcx_post
void decoder_tcx_post_fx( Decoder_State *st_fx,
                          Word16 *synth,   // Q_syn
                          Word16 *synthFB, // Q_syn
@@ -8396,15 +8387,6 @@ void decoder_tcx_post_fx( Decoder_State *st_fx,
                          Word16 *A, // Q: 14 - norm_s(A[0])
                          Word16 bfi,
                          Word16 MCT_flag );
#else
void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                               Word16 *synth,   // Q_syn
                               Word16 *synthFB, // Q_syn
                               Word16 Q_syn,
                               Word16 *A, // Q: 14 - norm_s(A[0])
                               Word16 bfi,
                               Word16 MCT_flag );
#endif

void con_tcx_fx(
    Decoder_State *st,      /* i/o: coder memory state          */
+0 −4
Original line number Diff line number Diff line
@@ -770,11 +770,7 @@ void decoder_LPD_fx(
        {
            TonalMDCTConceal_SaveTimeSignal_fx( st->element_mode, st->hTonalMDCTConc, synthFB, 0, L_frameTCX );
        }
#ifdef HARMONIZE_2604_decoder_tcx_post
        decoder_tcx_post_fx( st, synth, synthFB, 0, Aq, bfi, 0 );
#else
        decoder_tcx_post_fx( st, synth, synthFB, Aq, bfi );
#endif
        IF( EQ_16( st->core, TCX_20_CORE ) )
        {
            /* LPC Interpolation for BWE/post-processing */
+0 −309
Original line number Diff line number Diff line
@@ -1275,270 +1275,7 @@ void decoder_tcx_fx(
    Copy( xn_bufFB + sub( shr( overlapFB, 1 ), tcx_offsetFB ), synthFB, L_frameTCX_glob );
}

#ifndef HARMONIZE_2604_decoder_tcx_post
void decoder_tcx_post_fx( Decoder_State *st_fx,
                          Word16 *synth,
                          Word16 *synthFB,
                          Word16 *A,
                          Word16 bfi )
{
    Word16 i;
    Word16 level_syn;
    Word16 level_syn_e;
    Word32 step;
    Word16 gainCNG, gainCNG_e;
    Word16 xn_buf[L_FRAME_MAX];
    Word16 tmp1, tmp2, s;
    Word32 tmp32;
    Word32 tmp32_1, tmp32_2;
    TCX_DEC_HANDLE hTcxDec;

    hTcxDec = st_fx->hTcxDec;

    /* TCX output */
    Copy( synth, xn_buf, st_fx->L_frame );

    /* first TCX frame after ACELP; overwrite ltp initialization done during acelp PLC */
    test();
    test();
    if ( !st_fx->bfi && st_fx->prev_bfi && st_fx->last_core == ACELP_CORE )
    {
        hTcxDec->tcxltp_last_gain_unmodified = 0;
        move16();
    }
    test();
    IF( bfi != 0 && st_fx->use_partial_copy == 0 )
    {
        test();
        /* run lpc gain compensation not for waveform adjustment */
        IF( 0 == st_fx->enablePlcWaveadjust || EQ_16( st_fx->hPlcInfo->concealment_method, TCX_TONAL ) )
        {
            UWord32 dmy;
            tmp32_1 /*gainHelperFB*/ = L_shl_r( L_deposit_h( hTcxDec->gainHelper ), sub( hTcxDec->gainHelper_e, 31 - 28 ) );             /*Q28*/
            tmp32_2 /*stepCompensateFB*/ = L_shl_r( L_deposit_h( hTcxDec->stepCompensate ), sub( hTcxDec->stepCompensate_e, 31 - 28 ) ); /*Q28*/

            Mpy_32_32_ss( tmp32_2 /*Q28*/,
                          L_shl( L_mult0( st_fx->L_frame,
                                          getInvFrameLen( hTcxDec->L_frameTCX ) /*Q21*/ ) /*Q21*/,
                                 8 ) /*Q29*/,
                          &tmp32_2,
                          &dmy ); /*Q26*/

            tmp32_2 = L_shl( tmp32_2, 3 - 1 ); /*Q28*/

            FOR( i = 0; i < hTcxDec->L_frameTCX; i++ )
            {
                tmp32 = L_shl( tmp32_1 /*Q28*/, -( 28 - 15 ) ); /*16Q15*/
                synthFB[i] = round_fx_sat( L_shl_sat( Mpy_32_16_1( tmp32, synthFB[i] ), 16 ) );
                move16();
                tmp32_1 = L_sub( tmp32_1, tmp32_2 );
            }
        }
        tmp32_1 /*gainHelper*/ = L_shl_r( L_deposit_h( hTcxDec->gainHelper ), sub( hTcxDec->gainHelper_e, 31 - 28 ) );             /*Q28*/
        tmp32_2 /*stepCompensate*/ = L_shl_r( L_deposit_h( hTcxDec->stepCompensate ), sub( hTcxDec->stepCompensate_e, 31 - 28 ) ); /*Q28*/
        FOR( i = 0; i < st_fx->L_frame; i++ )
        {
            tmp32 = L_shl( tmp32_1 /*Q28*/, -( 28 - 15 ) ); /*16Q15*/
            xn_buf[i] = extract_l( Mpy_32_16_1( tmp32, xn_buf[i] ) );
            move16();
            tmp32_1 = L_sub( tmp32_1, tmp32_2 );
        }
    }

    /* PLC: [TCX: Fade-out]
     * PLC: estimate and update CNG energy */

    /* level_syn = (float)sqrt(( dot_product(synthFB, synthFB, L_frame)) / L_frame ); */
    s = sub( getScaleFactor16( synthFB, hTcxDec->L_frameTCX ), 4 );
    {
        Word64 tmp64;
        tmp64 = 0;
        move64();
        FOR( i = 0; i < hTcxDec->L_frameTCX; i++ )
        {
            tmp1 = shl( synthFB[i], s );
            tmp64 = W_mac0_16_16( tmp64, tmp1, tmp1 );
        }
        tmp32 = W_sat_l( tmp64 );
    }
    tmp32 = Mpy_32_16_1( tmp32, getInvFrameLen( hTcxDec->L_frameTCX ) );
    tmp2 = norm_l( tmp32 );
    tmp1 = round_fx_sat( L_shl( tmp32, tmp2 ) );
    s = sub( sub( sub( 1, shl( s, 1 ) ), 6 /*table lookup for inverse framelength*/ ), tmp2 );
    tmp1 = Sqrt16( tmp1, &s );
    move16();
    level_syn = tmp1; /*Q0*/

    /* PLC: [TCX: Fade-out]
     * PLC: estimate and update CNG energy */

    level_syn_e = add( s, 15 );
    test();
    test();
    IF( bfi == 0 && st_fx->tcxonly != 0 && EQ_16( st_fx->clas_dec, UNVOICED_CLAS ) )
    {

        Word16 Qnew_levelBackgroundTrace;
        Qnew_levelBackgroundTrace = 0;
        move16();
        minimumStatistics_fx( hTcxDec->conNoiseLevelMemory,         /*Q15*/
                              &hTcxDec->conNoiseLevelIndex,         /*Q0 */
                              &hTcxDec->conCurrLevelIndex,          /*Q0 */
                              &hTcxDec->conCngLevelBackgroundTrace, /*Q15*/
                              &hTcxDec->conLastFrameLevel,          /*Q15*/
                              level_syn,                            /*Q15*/
                              hTcxDec->conNoiseLevelMemory_e,
                              hTcxDec->conCngLevelBackgroundTrace_e,
                              &Qnew_levelBackgroundTrace,
                              &hTcxDec->conLastFrameLevel_e,
                              level_syn_e /*scaling of level_syn*/
        );

        /*note: All parameters being different from Q0 have to have the same Q-format*/

        hTcxDec->conCngLevelBackgroundTrace_e = Qnew_levelBackgroundTrace;
        move16();
    }

    /* PLC: [TCX: Fade-out]
     * PLC: fade-out in time domain */
    IF( bfi != 0 )
    {
        Word32 conceal_eof_gain32;
        Word32 conceal_eof_gainFB;
        move16();
        move16();
        gainCNG = 1;
        gainCNG_e = 14 + 15 + 6; /*gainCNG is 2`097`152 - should be enough in case tracinglevel =~0 */
        IF( st_fx->tcxonly != 0 )
        {
            /*gainCNG = st_fx->conCngLevelBackgroundTrace/(tracingLevel+0.01f);*/

            IF( level_syn != 0 )
            {
                BASOP_Util_Divide_MantExp(
                    hTcxDec->conCngLevelBackgroundTrace,
                    hTcxDec->conCngLevelBackgroundTrace_e,
                    level_syn,
                    level_syn_e,
                    &gainCNG,
                    &gainCNG_e );
            }
        }
        ELSE
        {
            /*gainCNG = st_fx->cngTDLevel/(tracingLevel+0.01f);*/
            IF( level_syn != 0 )
            {
                BASOP_Util_Divide_MantExp(
                    st_fx->cngTDLevel,
                    st_fx->cngTDLevel_e,
                    level_syn,
                    level_syn_e,
                    &gainCNG,
                    &gainCNG_e );
            }
        }

        if ( ( EQ_16( st_fx->nbLostCmpt, 1 ) ) )
        {
            hTcxDec->conceal_eof_gain = 16384 /*1.0f Q14*/; /*Q14*/
            move16();
        }

        /* step = (st_fx->conceal_eof_gain - ( st_fx->conceal_eof_gain * st_fx->damping + gainCNG * (1 - st_fx->damping) )) / st_fx->L_frame; */
        tmp2 = BASOP_Util_Add_MantExp(
            mult_r( hTcxDec->conceal_eof_gain /*Q14*/,
                    hTcxDec->damping /*Q14*/ ),
            15 - 13 /*->Q15*/,
            mult_r( gainCNG /*Q15*/, sub( 0x4000, hTcxDec->damping /*Q14*/ ) ) /*Q14*/,
            add( gainCNG_e, 15 - 14 ) /*->Q15*/,
            &tmp1 );
        tmp2 = BASOP_Util_Add_MantExp( hTcxDec->conceal_eof_gain, 15 - 14, negate( tmp1 ), tmp2, &tmp1 );

        step = L_shl_sat( L_mult( tmp1, getInvFrameLen( st_fx->L_frame ) ), sub( tmp2, 6 /*scaling from table lookup*/ + 1 /*go to Q30*/ ) ); /*Q30*/
        {
            Word32 stepFB;
            UWord32 dmy;
            conceal_eof_gainFB = L_deposit_h( hTcxDec->conceal_eof_gain ); /*Q30*/
            Mpy_32_32_ss( step, L_shl( L_mult0( st_fx->L_frame, getInvFrameLen( hTcxDec->L_frameTCX ) ), 8 ), &stepFB, &dmy );
            stepFB = L_shl_sat( stepFB, 3 - 1 ); /*Q30*/
            FOR( i = 0; i < hTcxDec->L_frameTCX; i++ )
            {
                synthFB[i] = round_fx_sat( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB, synthFB[i] ), 1 ) );
                move16();
                conceal_eof_gainFB = L_sub_sat( conceal_eof_gainFB, stepFB );
            }
        }
        conceal_eof_gain32 = L_deposit_h( hTcxDec->conceal_eof_gain ); /*Q30*/
        FOR( i = 0; i < st_fx->L_frame; i++ )
        {
            xn_buf[i] = round_fx_sat( L_shl_sat( Mpy_32_16_1( conceal_eof_gain32 /*Q30*/, xn_buf[i] ), 1 ) );
            move16();
            conceal_eof_gain32 = L_sub_sat( conceal_eof_gain32, step );
        }
        hTcxDec->conceal_eof_gain = round_fx_sat( conceal_eof_gain32 ); /*Q14*/
        move16();
        /* run lpc gain compensation not for waveform adjustment */
        test();
        IF( 0 == st_fx->enablePlcWaveadjust || EQ_16( st_fx->hPlcInfo->concealment_method, TCX_TONAL ) )
        {
            st_fx->hPlcInfo->recovery_gain = extract_h( L_shl_sat( Mpy_32_16_1( conceal_eof_gainFB,
                                                                                st_fx->last_concealed_gain_syn_deemph ),
                                                                   st_fx->last_concealed_gain_syn_deemph_e ) );
            /*Q30->Q14*/
            move16();
        }
        ELSE
        {
            st_fx->hPlcInfo->recovery_gain = extract_h( conceal_eof_gainFB ); /*Q14*/
            move16();
        }
        st_fx->hPlcInfo->step_concealgain_fx = round_fx_sat( L_shl_sat( L_mult0( round_fx_sat( step ), round_fx_sat( L_shl_sat( L_mult0( st_fx->L_frame, getInvFrameLen( hTcxDec->L_frameTCX ) ), 8 ) ) ), 3 ) ); /*Q15*/
        move16();
    }

    /*-----------------------------------------------------------*
     * Memory update                                             *
     *-----------------------------------------------------------*/

    /* Update synth, exc and old_Aq  */
    tcx_decoder_memory_update( xn_buf, /*Q0*/
                               synth,  /*Q0*/
                               A,
                               st_fx,
                               0 );


    /* PLC: [TCX: Memory update] */

    st_fx->old_pitch_buf_fx[0] = st_fx->old_pitch_buf_fx[st_fx->nb_subfr];
    move32();
    st_fx->old_pitch_buf_fx[1] = st_fx->old_pitch_buf_fx[st_fx->nb_subfr + 1];
    move32();
    Copy32( &st_fx->old_pitch_buf_fx[st_fx->nb_subfr + 2], &st_fx->old_pitch_buf_fx[2], st_fx->nb_subfr );
    set32_fx( &st_fx->old_pitch_buf_fx[st_fx->nb_subfr + 2], st_fx->old_fpitch, st_fx->nb_subfr );
    st_fx->bfi_pitch_fx = shl_sat( round_fx( st_fx->old_fpitch ), 6 );
    move16();
    st_fx->bfi_pitch_frame = st_fx->L_frame;
    move16();

    st_fx->mem_pitch_gain[add( shl( st_fx->nb_subfr, 1 ), 1 )] = st_fx->mem_pitch_gain[st_fx->nb_subfr + 1];
    move16();
    st_fx->mem_pitch_gain[st_fx->nb_subfr * 2] = st_fx->mem_pitch_gain[st_fx->nb_subfr];
    move16();

    FOR( i = 0; i < st_fx->nb_subfr; i++ )
    {
        st_fx->mem_pitch_gain[sub( sub( shl( st_fx->nb_subfr, 1 ), 1 ), i )] = st_fx->mem_pitch_gain[sub( sub( st_fx->nb_subfr, 1 ), i )];
        move16();
        st_fx->mem_pitch_gain[sub( sub( st_fx->nb_subfr, 1 ), i )] = hTcxDec->tcxltp_last_gain_unmodified;
        move16();
    }
}
#endif /*HARMONIZE_2604_decoder_tcx_post*/

#ifdef HARMONIZE_2604_decoder_tcx_post
void decoder_tcx_post_fx( Decoder_State *st_fx,
                          Word16 *synth,   // Q_syn
                          Word16 *synthFB, // Q_syn
@@ -1546,15 +1283,6 @@ void decoder_tcx_post_fx( Decoder_State *st_fx,
                          Word16 *A, // Q: 14 - norm_s(A[0])
                          Word16 bfi,
                          Word16 MCT_flag ) /*EVS: 0*/
#else
void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                               Word16 *synth,   // Q_syn
                               Word16 *synthFB, // Q_syn
                               Word16 Q_syn,
                               Word16 *A, // Q: 14 - norm_s(A[0])
                               Word16 bfi,
                               Word16 MCT_flag )
#endif
{
    Word16 i;
    Word16 level_syn;
@@ -1566,9 +1294,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
    Word16 tmp1, tmp2, s;
    Word32 tmp32;
    Word32 tmp32_1, tmp32_2;
#ifdef HARMONIZE_2604_decoder_tcx_post
    Word16 tcxltp_last_gain_unmodified_tmp;
#endif
    TCX_DEC_HANDLE hTcxDec;

    hTcxDec = st_fx->hTcxDec;
@@ -1674,7 +1400,6 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
        Word16 Qnew_levelBackgroundTrace;
        Qnew_levelBackgroundTrace = 0;
        move16();
#ifdef HARMONIZE_2604_decoder_tcx_post
        Word16 *NoiseLevelIndex_tmp, *CurrLevelIndex_tmp;
        IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
        {
@@ -1699,20 +1424,6 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                              &hTcxDec->conLastFrameLevel_e,
                              level_syn_e /*scaling of level_syn*/
        );
#else
        minimumStatistics_fx( hTcxDec->conNoiseLevelMemory,         /*Q15*/
                              &hTcxDec->NoiseLevelIndex_bfi,        /*Q0 */
                              &hTcxDec->CurrLevelIndex_bfi,         /*Q0 */
                              &hTcxDec->conCngLevelBackgroundTrace, /*Q15*/
                              &hTcxDec->conLastFrameLevel,          /*Q15*/
                              level_syn,                            /*Q15*/
                              hTcxDec->conNoiseLevelMemory_e,
                              hTcxDec->conCngLevelBackgroundTrace_e,
                              &Qnew_levelBackgroundTrace,
                              &hTcxDec->conLastFrameLevel_e,
                              level_syn_e /*scaling of level_syn*/
        );
#endif

        /*note: All parameters being different from Q0 have to have the same Q-format*/

@@ -1724,9 +1435,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
     * PLC: fade-out in time domain */
    IF( bfi != 0 )
    {
#ifdef HARMONIZE_2604_decoder_tcx_post
        Word32 conceal_eof_gain32;
#endif
        Word32 conceal_eof_gainFB;
        Word16 conceal_eof_gainFB_e;
        move16();
@@ -1736,10 +1445,8 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
        IF( st_fx->tcxonly != 0 )
        {
            /*gainCNG = st_fx->conCngLevelBackgroundTrace/(tracingLevel+0.01f);*/
#ifdef HARMONIZE_2604_decoder_tcx_post
            IF( GT_16( st_fx->element_mode, EVS_MONO ) )
            {
#endif
                IF( level_syn )
                {
                    level_syn_e = BASOP_Util_Add_MantExp( level_syn, level_syn_e, 20992, -6, &level_syn ); /* 0.01 in Q21*/
@@ -1751,9 +1458,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                    move16();
                    move16();
                }
#ifdef HARMONIZE_2604_decoder_tcx_post
            }
#endif

            IF( level_syn != 0 )
            {
@@ -1784,10 +1489,8 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
        ELSE
        {
            /*gainCNG = st_fx->cngTDLevel/(tracingLevel+0.01f);*/
#ifdef HARMONIZE_2604_decoder_tcx_post
            IF( GT_16( st_fx->element_mode, EVS_MONO ) )
            {
#endif
                IF( level_syn )
                {
                    level_syn_e = BASOP_Util_Add_MantExp( level_syn, level_syn_e, 20992, -6, &level_syn ); /* 0.01 in Q21*/
@@ -1799,9 +1502,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                    move16();
                    move16();
                }
#ifdef HARMONIZE_2604_decoder_tcx_post
            }
#endif

            IF( level_syn != 0 )
            {
@@ -1816,7 +1517,6 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
        }


#ifdef HARMONIZE_2604_decoder_tcx_post
        IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
        {
            IF( ( EQ_16( st_fx->nbLostCmpt, 1 ) ) )
@@ -1878,7 +1578,6 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
        }
        ELSE
        {
#endif
            IF( ( EQ_16( st_fx->nbLostCmpt, 1 ) ) )
            {
                hTcxDec->conceal_eof_gain32 = ONE_IN_Q30 /*1.0f Q30*/;
@@ -1944,9 +1643,7 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
                st_fx->hPlcInfo->step_concealgain_fx = round_fx_sat( L_shl_sat( L_mult0( round_fx_sat( L_shr_sat( step, sub( 1, step_e ) ) ), round_fx_sat( L_shl_sat( L_mult0( st_fx->L_frame, getInvFrameLen( hTcxDec->L_frameTCX ) ), 8 ) ) ), 4 ) ); /*Q15*/
                move16();
            }
#ifdef HARMONIZE_2604_decoder_tcx_post
        }
#endif
    }

    /*-----------------------------------------------------------*
@@ -1978,23 +1675,17 @@ void decoder_tcx_post_ivas_fx( Decoder_State *st_fx,
    st_fx->mem_pitch_gain[st_fx->nb_subfr * 2] = st_fx->mem_pitch_gain[st_fx->nb_subfr]; // Q14
    move16();

#ifdef HARMONIZE_2604_decoder_tcx_post
    tcxltp_last_gain_unmodified_tmp = hTcxDec->tcxltp_last_gain_unmodified;
    if ( GT_16( st_fx->element_mode, EVS_MONO ) )
    {
        tcxltp_last_gain_unmodified_tmp = shr( tcxltp_last_gain_unmodified_tmp, 1 );
    }
#endif

    FOR( i = 0; i < st_fx->nb_subfr; i++ )
    {
        st_fx->mem_pitch_gain[( st_fx->nb_subfr * 2 - 1 ) - i] = st_fx->mem_pitch_gain[st_fx->nb_subfr - 1 - i]; // Q14
        move16();
#ifdef HARMONIZE_2604_decoder_tcx_post
        st_fx->mem_pitch_gain[st_fx->nb_subfr - 1 - i] = tcxltp_last_gain_unmodified_tmp; /* Q14 */
#else
        st_fx->mem_pitch_gain[st_fx->nb_subfr - 1 - i] = shr( hTcxDec->tcxltp_last_gain_unmodified, 1 ); /* Q14 */
#endif
        move16();
    }
}
+0 −4
Original line number Diff line number Diff line
@@ -1259,11 +1259,7 @@ void ivas_mdct_core_reconstruct_fx(
            {
                TonalMDCTConceal_SaveTimeSignal_fx( st->element_mode, st->hTonalMDCTConc, synthFB_fx, q_winFB, L_frameTCX[ch] );
            }
#ifdef HARMONIZE_2604_decoder_tcx_post
            decoder_tcx_post_fx( st, synth_fx, synthFB_fx, q_winFB, NULL, bfi, MCT_flag );
#else
            decoder_tcx_post_ivas_fx( st, synth_fx, synthFB_fx, q_winFB, NULL, bfi, MCT_flag );
#endif

            // norm(synth_buf) >= q_syn - q_win
            // norm(synth_buf) + q_win >= q_syn
Loading