Commit 8bdcaf00 authored by Jan Kiene's avatar Jan Kiene
Browse files

fade to complete zero after 2 seconds

parent ab3b5eb8
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -801,6 +801,10 @@ enum fea_names
#define SNS_NPTS                                16 /* Number of downsampled SNS parameters */

#define MDCT_ST_PLC_FADEOUT_MIN_NOISE_NRG       0.001f
#ifdef FADE_TO_ZERO_FOR_TOO_LONG_FRAMELOSS
#define MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME      1 * FRAMES_PER_SEC
#define MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN         20
#endif

typedef enum {
    EQUAL_CORES,
+1 −0
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@

/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */
/*#define MDCT_STEREO_PLC_FADE_2_BG_NOISE*/                /* IVAS-185 fix bug in TCX-PLC fadeout for MDCT-Stereo and improve fadeout by fading to background noise instead of white noise */
/*#define FADE_TO_ZERO_FOR_TOO_LONG_FRAMELOSS*/
/*#define FIX_I1_113*/                                  /* under review : MCT bit distribution optimization for SBA high bitrates*/

#define SPAR_SCALING_HARMONIZATION                      /* Issue 80: Changes to harmonize scaling in spar */
+14 −0
Original line number Diff line number Diff line
@@ -202,6 +202,20 @@ void decoder_tcx_post(
        if ( st->tcxonly )
        {
            gainCNG = hTcxDec->CngLevelBackgroundTrace_bfi / ( level_syn + 0.01f );
#ifdef FADE_TO_ZERO_FOR_TOO_LONG_FRAMELOSS

            if ( st->element_mode == IVAS_CPE_MDCT && ! isMCT )
            {
                if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME + MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN )
                {
                    gainCNG = 0.f;
                }
                else if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME )
                {
                    gainCNG *= 1.f - (float) ( st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME ) / MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN;
                }
            }
#endif
        }
        else
        {
+14 −0
Original line number Diff line number Diff line
@@ -452,6 +452,20 @@ void con_tcx(
    if ( st->tcxonly )
    {
        gainCNG = hTcxDec->CngLevelBackgroundTrace_bfi / gainSynthDeemph;

#ifdef FADE_TO_ZERO_FOR_TOO_LONG_FRAMELOSS
        if ( st->element_mode == IVAS_CPE_MDCT && A_cng != NULL )
        {
            if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME + MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN )
            {
                gainCNG = 0.f;
            }
            else if ( st->nbLostCmpt > MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME )
            {
                gainCNG *= 1.f - (float) ( st->nbLostCmpt - MDCT_ST_PLC_FADEOUT_MAX_CONC_FRAME ) / MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN;
            }
        }
#endif
    }
    else
    {