Commit 3055ca9e authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch...

Merge branch '27-tcx-plc-fadeout-to-noise-for-long-frameloss-periods-not-working-correctly-185' into 'main'

[non-BE]MDCT-Stereo PLC fadeout improvements contribution

See merge request !35
parents 6a653a4a b63baaef
Loading
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -805,16 +805,25 @@ enum fea_names
#define MAX_MDCT_ITD_BRATE                      IVAS_64k

#define SNS_LOW_BR_MODE                         -1
#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
#define SNS_NPTS                                16 /* Number of downsampled SNS parameters */

#define MDCT_ST_PLC_FADEOUT_START_FRAME         3
#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      2 * FRAMES_PER_SEC
#define MDCT_ST_PLC_FADEOUT_TO_ZERO_LEN         20
#endif

typedef enum {
    EQUAL_CORES,
    TCX10_IN_0_TCX20_IN_1,
    TCX20_IN_0_TCX10_IN_1,
} TONALMDCTCONC_NOISE_GEN_MODE;

typedef enum {
    ON_FIRST_LOST_FRAME,
    ON_FIRST_GOOD_FRAME,
} TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE;
#endif


+25 −6
Original line number Diff line number Diff line
@@ -1950,15 +1950,12 @@ void decoder_tcx_invQ(
    const int16_t **prm_sqQ,
    int16_t *nf_seed,
    const int16_t bfi,                                          /* i  : Bad frame indicator                     */
#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
    const int16_t isMCT,
#endif
    const int16_t frame_cnt                                     /* i  : frame counter in the super frame        */
);

void decoder_tcx_noisefilling(
    Decoder_State *st,                                          /* i/o: coder memory state                      */
#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
    float concealment_noise[L_FRAME48k],
#endif
    const float A[],                                            /* i  : coefficients NxAz[M+1]                  */
@@ -1973,7 +1970,7 @@ void decoder_tcx_noisefilling(
    const int16_t *prm_sqQ,
    int16_t nf_seed,
    const int16_t bfi,                                          /* i  : Bad frame indicator                     */
#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
    const int16_t isMCT,
#endif
    const int16_t frame_cnt                                     /* i  : frame counter in the super frame        */
@@ -2058,7 +2055,12 @@ void decoder_tcx_IGF_stereo(
    const int16_t L_frame,                                      /* i  : frame length                            */
    const int16_t left_rect,                                    /* i  : left part is rectangular                */
    const int16_t k,                                            /* i  : Subframe index                          */
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
    const int16_t bfi,                                          /* i  : bad frame indicator                     */
    const int16_t is_mct                                        /* i  : flag to signal MCT or SMDCT                         */
#else
    const int16_t bfi                                           /* i  : bad frame indicator                     */
#endif
);

void ms_processing(
@@ -2091,7 +2093,12 @@ void IGFDecApplyStereo(
    const int16_t igfGridIdx,                                   /* i  : in case of CELP->TCX switching, use 1.25 framelength */
    const int16_t *coreMsMask,
    const int16_t restrict_hopsize,
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
    const int16_t bfi,                                          /* i  : frame loss == 1, frame good == 0        */
    const int16_t bfi_apply_damping                                  /* i  : decoder element mode                    */
#else
    const int16_t bfi                                           /* i  : frame loss == 1, frame good == 0        */
#endif
);

void IGFEncStereoEncoder(
@@ -5442,7 +5449,7 @@ ivas_error ivas_orient_trk_GetTrackedOrientation(
    float *roll 
);

#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
void TonalMdctConceal_create_concealment_noise(
    float concealment_noise[L_FRAME48k],
    CPE_DEC_HANDLE hCPE,
@@ -5454,6 +5461,18 @@ void TonalMdctConceal_create_concealment_noise(
    const int16_t crossfade_gain,
    const TONALMDCTCONC_NOISE_GEN_MODE noise_gen_mode
);

void TonalMdctConceal_whiten_noise_shape(
    Decoder_State *st,
    const int16_t L_frame,
    const TONALMDCTCONC_NOISE_SHAPE_WHITENING_MODE
);

int16_t get_igf_startline(
    Decoder_State *st,
    int16_t L_frame,
    int16_t L_frameTCX
);
#endif

float rand_triangular_signed(
+2 −2
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
#include "ivas_prot.h"
#include "rom_com.h"
#include <math.h>
#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE
#include <assert.h>
#endif
#ifdef DEBUGGING
@@ -45,7 +45,7 @@
#endif
#include "wmops.h"

#ifdef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifdef MDCT_STEREO_PLC_FADE_2_BG_NOISE

/*-------------------------------------------------------------------
 * sns_compute_scf()
+2 −3
Original line number Diff line number Diff line
@@ -68,11 +68,10 @@ static void SpectrumWeighting_Init(
 *  initialize a PsychoacousticParameters structure
 *-------------------------------------------------------------------*/

#ifndef FIX_IVAS_185_MDCT_ST_PLC_FADEOUT
#ifndef MDCT_STEREO_PLC_FADE_2_BG_NOISE
static
#endif
    ivas_error
    PsychoacousticParameters_Init(
ivas_error PsychoacousticParameters_Init(
        const int32_t sr_core,  /* i  : sampling rate of core-coder                                     */
        const int16_t nBins,    /* i  : Number of bins (spectral lines)                                 */
        const int8_t nBands,    /* i  : Number of spectrum subbands                                     */
+2 −1
Original line number Diff line number Diff line
@@ -142,7 +142,8 @@
#define DISABLE_ADAP_RES_COD_TMP                        /* temporary fix for IVAS-403, disables adaptive residual coding */
/*#define ITD_WINNER_GAIN_MODIFY */                     /* ITD optimization - WORK IN PROGRESS */
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */
/*#define FIX_IVAS_185_MDCT_ST_PLC_FADEOUT*/            /* IVAS-185 fix bug in TCX-PLC fadeout for MDCT-Stereo and improve fadeout by fading to background noise instead of white noise */
#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 FIX_I106_TDREND_5MS                             /* Issue 106: 5 ms update rate in TD object renderer */
Loading