Commit fadfcdca authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into kiene/first-frame-is-sid-test

parents 56fd29b2 8c93d871
Loading
Loading
Loading
Loading
Loading
+3 −2
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 */

#ifdef IND_LIST_DYN
@@ -151,7 +152,7 @@
#endif

#define FIX_383_CLEAN_UP                                /* Dlb : Clean up of unused functions */
// #define FIX_532_ISM_MD_INACTIVE                         /* VA: issue 532: improve MD coding in ISM inactive frames */
#define FIX_532_ISM_MD_INACTIVE                         /* VA: issue 532: improve MD coding in ISM inactive frames */
#define FIX_547_NAN_IGF_DEC                             /* FhG: issue 547: fix possible nan in IGF decoder */

#define FIX_529_BWD_ISSUE                               /* VA: issue 529: fix Bandwidth Detector not working reliably for Music and Generic Audio */
+1 −1
Original line number Diff line number Diff line
@@ -542,7 +542,7 @@ ivas_error ivas_ism_metadata_dec(
            if ( ism_mode == ISM_MODE_DISC )
            {
#ifdef FIX_532_ISM_MD_INACTIVE
                if ( ism_imp[ch] == ISM_NO_META )
                if ( ism_imp[ch] == ISM_NO_META && total_brate[ch] < ACELP_8k00 )
#else
                if ( hIsmMeta[ch]->ism_metadata_flag == 0 && localVAD[ch] == 0 && ism_metadata_flag_global )
#endif
+1 −1
Original line number Diff line number Diff line
@@ -636,7 +636,7 @@ ivas_error ivas_ism_metadata_enc(
        if ( ism_mode == ISM_MODE_DISC )
        {
#ifdef FIX_532_ISM_MD_INACTIVE
            if ( ism_imp[ch] == ISM_NO_META )
            if ( ism_imp[ch] == ISM_NO_META && total_brate[ch] < ACELP_8k00 )
#else
            if ( hIsmMeta[ch]->ism_metadata_flag == 0 && vad_flag[ch] == 0 && ism_metadata_flag_global )
#endif
+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++;