Loading lib_com/options.h +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 */ Loading lib_dec/ivas_ism_metadata_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading lib_enc/ivas_ism_metadata_enc.c +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading lib_enc/ivas_stat_enc.h +3 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading lib_enc/ivas_stereo_dft_enc.c +43 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } Loading @@ -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++; Loading @@ -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++; Loading Loading
lib_com/options.h +3 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 */ Loading
lib_dec/ivas_ism_metadata_dec.c +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
lib_enc/ivas_ism_metadata_enc.c +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
lib_enc/ivas_stat_enc.h +3 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading
lib_enc/ivas_stereo_dft_enc.c +43 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } Loading @@ -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++; Loading @@ -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++; Loading