From b3e5dc5beeec880c3c129da720ce2b9e0b88c141 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 18 Oct 2024 16:02:33 +0200 Subject: [PATCH 1/3] also zero out hHQ_core->old_out buffers in MCT_CHAN_MODE_IGNORE frames --- lib_com/options.h | 1 + lib_dec/ivas_mdct_core_dec.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 30200d09d1..36094f8fea 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -186,6 +186,7 @@ #define NONBE_FIX_1197_OMASA_META_BUFFER /* Nokia: OMASA ISM_MASA_MODE_PARAM_ONE_OBJ history zero in rateswitching */ #define FIX_1139_REV_COLORATION_SHORT_T60 /* Nokia,FhG: Fix issue 1139, prevent sound coloration artefacts at very low reverberation times */ +#define FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE /* FhG: zero out all relevant imdct buffers in MCT decoding of channels with mct_chan_mode == MCT_CHAN_MODE_IGNORE */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index 3f8ff738c7..e9efe184fd 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -865,6 +865,10 @@ void ivas_mdct_core_reconstruct( { set_f( &synth[k * L_frame[ch]], 0.f, L_frame[ch] ); set_f( &synthFB[k * L_frame[ch]], 0.f, L_frameTCX[ch] ); +#ifdef FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE + set_f( &st->hHQ_core->old_outLB[k * L_frame[ch]], 0.f, L_frame[ch] ); + set_f( &st->hHQ_core->old_out[k * L_frame[ch]], 0.f, L_frameTCX[ch] ); +#endif } } -- GitLab From ea65a15c484ee7f1b53ed0192b60a04760a0975c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 18 Oct 2024 16:36:52 +0200 Subject: [PATCH 2/3] correct indexing --- lib_dec/ivas_mdct_core_dec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index e9efe184fd..d7e283b767 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -866,8 +866,9 @@ void ivas_mdct_core_reconstruct( set_f( &synth[k * L_frame[ch]], 0.f, L_frame[ch] ); set_f( &synthFB[k * L_frame[ch]], 0.f, L_frameTCX[ch] ); #ifdef FIX_1206_ZERO_OUT_IMDCT_BUFFERS_FOR_MCT_IGNORE - set_f( &st->hHQ_core->old_outLB[k * L_frame[ch]], 0.f, L_frame[ch] ); - set_f( &st->hHQ_core->old_out[k * L_frame[ch]], 0.f, L_frameTCX[ch] ); + /* Note: these buffers are not subframe-based, hence no indexing with k */ + set_f( &st->hHQ_core->old_outLB[0], 0.f, L_frame[ch] ); + set_f( &st->hHQ_core->old_out[0], 0.f, L_frameTCX[ch] ); #endif } } -- GitLab From b55de9cf3353c56288c6273a94945431b6df324e Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 18 Oct 2024 16:47:46 +0200 Subject: [PATCH 3/3] also zero-out syn_Overl buffers, can be used with PLC --- lib_dec/ivas_mdct_core_dec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index d7e283b767..e07b44da03 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -869,6 +869,10 @@ void ivas_mdct_core_reconstruct( /* Note: these buffers are not subframe-based, hence no indexing with k */ set_f( &st->hHQ_core->old_outLB[0], 0.f, L_frame[ch] ); set_f( &st->hHQ_core->old_out[0], 0.f, L_frameTCX[ch] ); + set_f( &st->hTcxDec->syn_Overl[0], 0.f, L_frame[ch] / 2 ); + set_f( &st->hTcxDec->syn_OverlFB[0], 0.f, L_frameTCX[ch] / 2 ); + set_f( &st->hTcxDec->syn_Overl_TDAC[0], 0.f, L_frame[ch] / 2 ); + set_f( &st->hTcxDec->syn_Overl_TDACFB[0], 0.f, L_frameTCX[ch] / 2 ); #endif } } -- GitLab