From 6eb051d0c51d305e6d5ca6612888e9f58a64085f Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Thu, 14 May 2026 17:25:58 +0200 Subject: [PATCH] basop issue 2593: revise initialization of hItd->E_band_n --- lib_com/options.h | 1 + lib_enc/ivas_stat_enc.h | 2 ++ lib_enc/ivas_stereo_dft_enc.c | 8 ++++++-- lib_enc/ivas_stereo_dft_enc_itd.c | 7 +++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index ce6f336f0..35adc8912 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -168,6 +168,7 @@ #define FIX_2570_BUF_OVFL /* Orange: basop issue 2570: global-buffer-overflow in lib_rend/ivas_objectRenderer_sources_fx.c */ #define FIX_1594_TDM_LAST_RATIO /* VA: float issue 1594: remove obsolete argument 'tdm_last_ratio' from stereo_memory_enc () */ #define FIX_1550_WRONG_RENDER_FRAMESIZE_PRINTOUT /* Dolby: float issue 1550: Wrong render framesize printout */ +#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 d2769d73d..26b8df00b 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 1908ec1e6..a529164ae 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 8f2cfa69e..a7d2ad80c 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd.c +++ b/lib_enc/ivas_stereo_dft_enc_itd.c @@ -625,6 +625,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; @@ -815,7 +818,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]; -- GitLab