Commit 3968cd2f authored by gaoyuy's avatar gaoyuy
Browse files

Update old issue_69_DISABLE_ADAP_RES_COD_TMP branch to the latest main branch

parent 7c560c29
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -143,7 +143,8 @@
#define BITSTREAM_INDICES_MEMORY                        /* Don't count memory for bitstream Indice at the encoder - it is a temporary solution for development only */
#endif

#define DISABLE_ADAP_RES_COD_TMP                        /* temporary fix for IVAS-403, disables adaptive residual coding */
/*#define DISABLE_ADAP_RES_COD_TMP*/                    /* temporary fix for IVAS-403, disables adaptive residual coding */
#define ADAP_OPT                                        /* Issue 69: optimized the adap algorithm */
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */

#define USE_HRIR_128_METH5_IRC_53_Q10_SYML_ITRP1_48000  /* Dolby (Orange, FhG) : Contribution 36 - SBA HRIR update */
+3 −0
Original line number Diff line number Diff line
@@ -256,6 +256,9 @@ typedef struct stereo_dft_enc_data_struct
    float res_cod_NRG_S[STEREO_DFT_BAND_MAX];
    float res_cod_SNR_M[STEREO_DFT_BAND_MAX];
    float old_snr;
#ifdef ADAP_OPT
    int16_t first_frm_flag; /* ADAP first frame flag */
#endif

    /* flags and data for adaptive wideband residual coding */
    float res_dmx_ratio_lt;                /* long term energy ratio between RES and DMX */
+43 −0
Original line number Diff line number Diff line
@@ -508,6 +508,10 @@ void stereo_dft_enc_reset(
    hStereoDft->hItd->prev_itd1 = 0;
    hStereoDft->hItd->prev_itd2 = 0;

#ifdef ADAP_OPT
    hStereoDft->first_frm_flag = 1;
#endif

#ifdef DEBUG_MODE_DFT
    hStereoDft->verbose = 1;
#endif
@@ -1648,7 +1652,11 @@ void stereo_dft_enc_process(
    {
        stereo_dft_enc_get_res_cod_mode_flag( hStereoDft, res_nrg_all_curr, dmx_nrg_all_curr, &res_dmx_ratio, &frame_nrg_ratio );

#ifdef ADAP_OPT
        if ( hStereoDft->res_cod_sw_flag )
#else
        if ( hStereoDft->res_cod_mode[k_offset] == STEREO_DFT_RES_COD_OFF || hStereoDft->res_cod_sw_flag )
#endif
        {
            int16_t res_cod_band_max;

@@ -1749,6 +1757,16 @@ static void stereo_dft_enc_get_res_cod_mode_flag(
    }

    /* Calculate long term energy ratio between residual signal and downmix signal */
#ifdef ADAP_OPT
    if ( fast_update_flag )
    {
        hStereoDft->res_dmx_ratio_lt = *res_dmx_ratio * 0.2f + hStereoDft->res_dmx_ratio_lt * 0.8f;
    }
    else
    {
        hStereoDft->res_dmx_ratio_lt = *res_dmx_ratio * 0.05f + hStereoDft->res_dmx_ratio_lt * 0.95f;
    }
#else
    if ( fast_update_flag )
    {
        hStereoDft->res_dmx_ratio_lt = *res_dmx_ratio * 0.5f + hStereoDft->res_dmx_ratio_lt * 0.5f;
@@ -1757,9 +1775,14 @@ static void stereo_dft_enc_get_res_cod_mode_flag(
    {
        hStereoDft->res_dmx_ratio_lt = *res_dmx_ratio * 0.1f + hStereoDft->res_dmx_ratio_lt * 0.9f;
    }
#endif

    /*Get the  residual signal coding initial flag */
#ifdef ADAP_OPT
    if ( hStereoDft->res_dmx_ratio_lt > 0.01f )
#else
    if ( hStereoDft->res_dmx_ratio_lt > 0.075f )
#endif
    {
        res_cod_mode_flag = 1;
    }
@@ -1769,12 +1792,28 @@ static void stereo_dft_enc_get_res_cod_mode_flag(
    }

    /* Get the residual signal coding flag */
#ifdef ADAP_OPT
    if ( hStereoDft->first_frm_flag )
    {
        prev_res_cod_mode_flag = res_cod_mode_flag;
        hStereoDft->first_frm_flag = 0;
    }
    else
    {
        prev_res_cod_mode_flag = hStereoDft->res_cod_mode[STEREO_DFT_OFFSET - 1];
    }
#else
    prev_res_cod_mode_flag = hStereoDft->res_cod_mode[STEREO_DFT_OFFSET - 1];
#endif
    if ( res_cod_mode_flag != prev_res_cod_mode_flag )
    {
        if ( prev_res_cod_mode_flag == 1 )
        {
#ifdef ADAP_OPT
            if ( hStereoDft->hangover_cnt0 < 5 && hStereoDft->last_res_cod_mode_modify_flag == 0 && fast_update_flag == 0 )
#else
            if ( hStereoDft->hangover_cnt0 < 3 && hStereoDft->last_res_cod_mode_modify_flag == 0 && fast_update_flag == 0 )
#endif
            {
                res_cod_mode_flag = prev_res_cod_mode_flag;
                hStereoDft->hangover_cnt0++;
@@ -1794,7 +1833,11 @@ static void stereo_dft_enc_get_res_cod_mode_flag(
            }
            else
            {
#ifdef ADAP_OPT
                if ( hStereoDft->hangover_cnt1 < 5 )
#else
                if ( hStereoDft->hangover_cnt1 < 3 )
#endif
                {
                    res_cod_mode_flag = prev_res_cod_mode_flag;
                    hStereoDft->hangover_cnt1++;