diff --git a/lib_com/options.h b/lib_com/options.h index 5c079fce2cc95976007f99cb6aca5453e324be0a..447cc343dc7184977e5bdad22e2792d2084dbb36 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -162,6 +162,7 @@ #define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */ #define NONBE_1122_KEEP_EVS_MODE_UNCHANGED /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR. */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* Nokia: reintroduce format switching for g192 bitstreams */ +#define FIX_BASOP_2593_E_BAND_N_INIT /* FhG: basop issue 2593: revise initialization of hItd->E_band_n */ /* #################### End BE switches ################################## */ diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index d2769d73da8b40babc9821f9df3db966d01ecdc7..26b8df00bebd23458bd9657b4d06eb8c58ff632f 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -58,7 +58,9 @@ typedef struct stereo_itd_data_struct int16_t itd_cnt; /* Consecutive valid ITD counter */ float prev_sum_nrg_L_lb; float prev_xcorr_lb[STEREO_DFT_XCORR_LB_MAX]; +#ifndef FIX_BASOP_2593_E_BAND_N_INIT float E_band_n[STEREO_DFT_ITD_VAD_BAND_NUM]; +#endif int16_t vad_frm_cnt; int16_t pre_vad; int16_t itd_nonzero_cnt; diff --git a/lib_enc/ivas_stereo_dft_enc.c b/lib_enc/ivas_stereo_dft_enc.c index 1908ec1e6da2c08b0395c19320fea67ff9336adf..a529164ae90da7c029654e2b04336d17126c41d2 100644 --- a/lib_enc/ivas_stereo_dft_enc.c +++ b/lib_enc/ivas_stereo_dft_enc.c @@ -61,8 +61,10 @@ static FILE *pF = NULL; #define STEREO_DFT_NRG_PAST_MAX_BAND 9 #define STEREO_DFT_NRG_PAST_MAX_BAND_LB 4 #define STEREO_DFT_DMX_CROSSOVER ( int16_t )( 132 * ( (float) ( STEREO_DFT_N_NS_ENC ) / STEREO_DFT_N_NS ) + 0.5f ) /* crossover bin between binwise and bandwise DMX */ -#define ITD_VAD_E_BAND_N_INIT 200000 -#define ITD_SID_PREV_FRAMES 5 +#ifndef FIX_BASOP_2593_E_BAND_N_INIT +#define ITD_VAD_E_BAND_N_INIT 200000 +#endif +#define ITD_SID_PREV_FRAMES 5 /*------------------------------------------------------------------------- @@ -542,7 +544,9 @@ void stereo_enc_itd_init( hItd->itd_cnt = 0; hItd->prev_sum_nrg_L_lb = 0.f; set_zero( hItd->prev_xcorr_lb, STEREO_DFT_XCORR_LB_MAX ); +#ifndef FIX_BASOP_2593_E_BAND_N_INIT set_f( hItd->E_band_n, (float) ITD_VAD_E_BAND_N_INIT, STEREO_DFT_ITD_VAD_BAND_NUM ); +#endif hItd->vad_frm_cnt = 0; hItd->pre_vad = 0; hItd->itd_nonzero_cnt = 0; diff --git a/lib_enc/ivas_stereo_dft_enc_itd.c b/lib_enc/ivas_stereo_dft_enc_itd.c index 186dee9c6af9a656a0360cdda8d523df1f324b2e..45b13726f52dbb9eeabc627078fbcdf6088f7e3b 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd.c +++ b/lib_enc/ivas_stereo_dft_enc_itd.c @@ -621,6 +621,9 @@ void stereo_dft_enc_compute_itd( float xcorr_lb[STEREO_DFT_XCORR_LB_MAX]; float num_cor, den_cor_cur, den_cor_prev, cor_lb_avrg; float cor_lb[XCORR_LB_NUM_BANDS]; +#ifdef FIX_BASOP_2593_E_BAND_N_INIT + float E_band_n[STEREO_DFT_ITD_VAD_BAND_NUM]; +#endif float Spd_L[STEREO_DFT_N_32k_ENC / 2 + 1]; float Spd_R[STEREO_DFT_N_32k_ENC / 2 + 1]; int16_t vad_flag_itd; @@ -811,7 +814,11 @@ void stereo_dft_enc_compute_itd( mvr2r( &Spd_L[1], &xcorr_lb[1], STEREO_DFT_XCORR_LB_MAX - 1 ); sum_nrg_L_lb = sum_nrg_L_lb + sum_f( &Spd_L[1], 11 ); +#ifdef FIX_BASOP_2593_E_BAND_N_INIT + vad_flag_itd = stereo_dft_enc_itd_vad( E_band_n, &( hItd->vad_frm_cnt ), Spd_L, Spd_R, &mssnr ); +#else vad_flag_itd = stereo_dft_enc_itd_vad( hItd->E_band_n, &( hItd->vad_frm_cnt ), Spd_L, Spd_R, &mssnr ); +#endif vad_flag_itd = vad_flag_itd && vad_flag_dtx[0];