Loading lib_enc/ivas_stereo_dft_enc.c +40 −3 Original line number Diff line number Diff line Loading @@ -1657,8 +1657,11 @@ void stereo_dft_enc_process( if ( hStereoDft->NFFT == STEREO_DFT_N_16k_ENC && hStereoDft->hConfig->ada_wb_res_cod_mode ) { 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 @@ -1731,7 +1734,9 @@ static void stereo_dft_enc_get_res_cod_mode_flag( float dmx_res_all, g; int16_t fast_update_flag; int16_t prev_res_cod_mode_flag, res_cod_mode_flag; #ifdef ADAP_OPT static int first_frm_flag = 1; #endif k_offset = STEREO_DFT_OFFSET; /*Add an offset at encoder*/ /*Calculate energy ratio between residual signal and downmix signal */ Loading Loading @@ -1759,6 +1764,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 @@ -1767,9 +1782,13 @@ 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 @@ -1779,12 +1798,26 @@ static void stereo_dft_enc_get_res_cod_mode_flag( } /* Get the residual signal coding flag */ #ifdef ADAP_OPT if (first_frm_flag) { prev_res_cod_mode_flag = res_cod_mode_flag; 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 @@ -1804,7 +1837,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_enc/ivas_stereo_dft_enc.c +40 −3 Original line number Diff line number Diff line Loading @@ -1657,8 +1657,11 @@ void stereo_dft_enc_process( if ( hStereoDft->NFFT == STEREO_DFT_N_16k_ENC && hStereoDft->hConfig->ada_wb_res_cod_mode ) { 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 @@ -1731,7 +1734,9 @@ static void stereo_dft_enc_get_res_cod_mode_flag( float dmx_res_all, g; int16_t fast_update_flag; int16_t prev_res_cod_mode_flag, res_cod_mode_flag; #ifdef ADAP_OPT static int first_frm_flag = 1; #endif k_offset = STEREO_DFT_OFFSET; /*Add an offset at encoder*/ /*Calculate energy ratio between residual signal and downmix signal */ Loading Loading @@ -1759,6 +1764,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 @@ -1767,9 +1782,13 @@ 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 @@ -1779,12 +1798,26 @@ static void stereo_dft_enc_get_res_cod_mode_flag( } /* Get the residual signal coding flag */ #ifdef ADAP_OPT if (first_frm_flag) { prev_res_cod_mode_flag = res_cod_mode_flag; 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 @@ -1804,7 +1837,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