From 9058ce84947e169d10412ca62dc3600e28762088 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 1 Apr 2026 13:53:01 +0200 Subject: [PATCH 1/5] FIX_1563_FIX_STEREO_SW --- lib_com/options.h | 2 +- lib_dec/ivas_stereo_switching_dec.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index d50152dd9..556b5ceb9 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -174,7 +174,7 @@ #define FIX_1543_MID_LSF_BITS /* VA: float issue 1543: Resolve "MSAN: use-of-uninitialized-value in lib_enc/lsf_enc.c:262:5 for EVS encoder" */ #define FIX_1547_ISMDTX_HANDLE /* VA: float issue 1547: fix use of 'hISMDTX' handle */ #define FIX_1540_EXPOSE_PT_IN_RTP_HEADER_API /* Expose Payload Type setting in RTP Header */ - +#define FIX_1563_FIX_STEREO_SW /* VA: float issue 1563: fix clicks in stereo switching */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_stereo_switching_dec.c b/lib_dec/ivas_stereo_switching_dec.c index 6db673082..94b66567c 100644 --- a/lib_dec/ivas_stereo_switching_dec.c +++ b/lib_dec/ivas_stereo_switching_dec.c @@ -1536,6 +1536,9 @@ void stereo_switching_dec( cldfb_reset_memory( sts[1]->cldfbSyn ); sts[1]->mem_deemph = 0; +#ifdef FIX_1563_FIX_STEREO_SW + sts[1]->last_core = ACELP_CORE; +#endif sts[1]->tilt_code = 0.0f; sts[1]->gc_threshold = 0.0f; -- GitLab From c0f3b2a7383278fe2a093ea615240c3cae0567e2 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 1 Apr 2026 14:05:36 +0200 Subject: [PATCH 2/5] use the fix specifically in the DFT->TD stereo only --- lib_dec/acelp_core_dec.c | 2 +- lib_dec/ivas_stereo_switching_dec.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 23b1b898c..0d128a5c8 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -315,7 +315,7 @@ ivas_error acelp_core_dec( { int16_t dec; - if ( st->hPFstat->on != 0 ) + if ( st->hPFstat != NULL && st->hPFstat->on == 0 ) { int16_t mem_syn_r_size_old, mem_syn_r_size_new; diff --git a/lib_dec/ivas_stereo_switching_dec.c b/lib_dec/ivas_stereo_switching_dec.c index 94b66567c..6b7132d07 100644 --- a/lib_dec/ivas_stereo_switching_dec.c +++ b/lib_dec/ivas_stereo_switching_dec.c @@ -1536,9 +1536,6 @@ void stereo_switching_dec( cldfb_reset_memory( sts[1]->cldfbSyn ); sts[1]->mem_deemph = 0; -#ifdef FIX_1563_FIX_STEREO_SW - sts[1]->last_core = ACELP_CORE; -#endif sts[1]->tilt_code = 0.0f; sts[1]->gc_threshold = 0.0f; @@ -1566,6 +1563,12 @@ void stereo_switching_dec( mvr2r( sts[0]->delay_buf_out, sts[1]->delay_buf_out, HQ_DELTA_MAX * HQ_DELAY_COMP ); mvr2r( sts[0]->hTcxDec->old_syn_Overl, sts[1]->hTcxDec->old_syn_Overl, 256 ); } +#ifdef FIX_1563_FIX_STEREO_SWaa + else if( hCPE->element_mode == IVAS_CPE_TD ) + { + sts[1]->last_core = ACELP_CORE; + } +#endif } else if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_MDCT ) { -- GitLab From 9e90749eb97c6970f37e9176a52bfbf46c05fa90 Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 1 Apr 2026 14:20:35 +0200 Subject: [PATCH 3/5] use the fix specifically in the DFT->TD stereo only --- lib_dec/ivas_stereo_switching_dec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_dec/ivas_stereo_switching_dec.c b/lib_dec/ivas_stereo_switching_dec.c index 6b7132d07..a06345d0e 100644 --- a/lib_dec/ivas_stereo_switching_dec.c +++ b/lib_dec/ivas_stereo_switching_dec.c @@ -1563,8 +1563,8 @@ void stereo_switching_dec( mvr2r( sts[0]->delay_buf_out, sts[1]->delay_buf_out, HQ_DELTA_MAX * HQ_DELAY_COMP ); mvr2r( sts[0]->hTcxDec->old_syn_Overl, sts[1]->hTcxDec->old_syn_Overl, 256 ); } -#ifdef FIX_1563_FIX_STEREO_SWaa - else if( hCPE->element_mode == IVAS_CPE_TD ) +#ifdef FIX_1563_FIX_STEREO_SW + else if ( hCPE->element_mode == IVAS_CPE_TD ) { sts[1]->last_core = ACELP_CORE; } -- GitLab From f63c53980042e20af38f60054ee7bc97c935d3fd Mon Sep 17 00:00:00 2001 From: vaclav Date: Wed, 1 Apr 2026 15:38:22 +0200 Subject: [PATCH 4/5] revert debugging code --- lib_dec/acelp_core_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 0d128a5c8..23b1b898c 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -315,7 +315,7 @@ ivas_error acelp_core_dec( { int16_t dec; - if ( st->hPFstat != NULL && st->hPFstat->on == 0 ) + if ( st->hPFstat->on != 0 ) { int16_t mem_syn_r_size_old, mem_syn_r_size_new; -- GitLab From 95dcc5fd35c0e7782b234fd9991b9bb6f6056a5f Mon Sep 17 00:00:00 2001 From: vaclav Date: Thu, 2 Apr 2026 09:56:35 +0200 Subject: [PATCH 5/5] FIX_1563_FIX_STEREO_SW to encoder --- lib_enc/ivas_stereo_switching_enc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib_enc/ivas_stereo_switching_enc.c b/lib_enc/ivas_stereo_switching_enc.c index 0768fab94..318cd9375 100644 --- a/lib_enc/ivas_stereo_switching_enc.c +++ b/lib_enc/ivas_stereo_switching_enc.c @@ -821,6 +821,12 @@ void stereo_switching_enc( sts[1]->last_coder_type = sts[0]->last_coder_type; sts[1]->last_bwidth = sts[0]->last_bwidth; } +#ifdef FIX_1563_FIX_STEREO_SW + else if ( hCPE->element_mode == IVAS_CPE_TD ) + { + sts[1]->last_core = ACELP_CORE; + } +#endif } else if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_MDCT ) { -- GitLab