From bc23b6ff1bcdc5d0efa62970de5dfe6c25628bc5 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 23 Feb 2026 15:15:36 +0100 Subject: [PATCH 01/12] port fixes from float MR !2534 --- lib_com/options.h | 2 +- lib_dec/ivas_dec_fx.c | 10 ++++++++++ lib_dec/ivas_sba_dirac_stereo_dec_fx.c | 14 +++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 439a9e508..f1b5a3fb8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -104,7 +104,7 @@ #define NONBE_MR2809 #define FIX_2432_ISM_SPIKES_16KHZ /* VA: basop issue 2432: fix spikes in ISM decoding at 16kHz output sampling rate */ - +#define FIX_1518 /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index bd3eab3e4..b6d3ab212 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -494,6 +494,10 @@ ivas_error ivas_dec_fx( { Word16 nchan_ism, sba_ch_idx; +#ifdef FIX_1518 + int16_t sba_mono_flag = ( st_ivas->hDecoderConfig->nchan_out == 1 ) ? 1 : 0; +#endif + set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); nchan_ism = st_ivas->nchan_ism; move16(); @@ -574,6 +578,12 @@ ivas_error ivas_dec_fx( ivas_sba_dirac_stereo_dec_fx( st_ivas, &p_output_fx[sba_ch_idx], output_frame ); } +#ifdef FIX_1518 + ELSE IF ( sba_mono_flag && st_ivas->ism_mode == ISM_MODE_NONE ) + { + v_shr( p_output_fx[0], -1, p_output_fx[0], output_frame ); + } +#endif /* HP filtering */ FOR( n = 0; n < getNumChanSynthesis( st_ivas ); n++ ) diff --git a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c index 0f18a6eab..6cd8da032 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c @@ -1502,11 +1502,19 @@ void ivas_sba_dirac_stereo_dec_fx( synchro_synthesis_fx( st_ivas->hDecoderConfig->ivas_total_brate, hCPE, output, output_frame, 1 /*st_ivas->sba_dirac_stereo_flag*/, q_dft[0] ); /* output scaling */ - IF( !sba_mono_flag ) +#ifdef FIX_1518 + test(); + if ( !( EQ_16(st_ivas->ivas_format, SBA_ISM_FORMAT) && EQ_16(st_ivas->ism_mode, ISM_MODE_NONE ) ) ) { - v_shr( output[0], 1, output[0], output_frame ); /*0.5f*/ - v_shr( output[1], 1, output[1], output_frame ); /*0.5f*/ +#endif + IF( !sba_mono_flag ) + { + v_shr( output[0], 1, output[0], output_frame ); /*0.5f*/ + v_shr( output[1], 1, output[1], output_frame ); /*0.5f*/ + } +#ifdef FIX_1518 } +#endif /* delay HB synth */ IF( EQ_16( st_ivas->nchan_transport, 1 ) ) -- GitLab From c2b8217500f33cad5e8dbc8d78515327cf9661fa Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 23 Feb 2026 15:22:37 +0100 Subject: [PATCH 02/12] change an int16_t to Word16 --- lib_dec/ivas_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index b6d3ab212..398f71274 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -495,7 +495,7 @@ ivas_error ivas_dec_fx( Word16 nchan_ism, sba_ch_idx; #ifdef FIX_1518 - int16_t sba_mono_flag = ( st_ivas->hDecoderConfig->nchan_out == 1 ) ? 1 : 0; + Word16 sba_mono_flag = ( st_ivas->hDecoderConfig->nchan_out == 1 ) ? 1 : 0; #endif set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); -- GitLab From 534001f69ad69792cf81afdc1c8e938a570446ae Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 23 Feb 2026 16:31:49 +0100 Subject: [PATCH 03/12] fix formatting --- lib_dec/ivas_dec_fx.c | 4 ++-- lib_dec/ivas_sba_dirac_stereo_dec_fx.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index 398f71274..dff240f49 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -496,7 +496,7 @@ ivas_error ivas_dec_fx( #ifdef FIX_1518 Word16 sba_mono_flag = ( st_ivas->hDecoderConfig->nchan_out == 1 ) ? 1 : 0; -#endif +#endif set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); nchan_ism = st_ivas->nchan_ism; @@ -579,7 +579,7 @@ ivas_error ivas_dec_fx( ivas_sba_dirac_stereo_dec_fx( st_ivas, &p_output_fx[sba_ch_idx], output_frame ); } #ifdef FIX_1518 - ELSE IF ( sba_mono_flag && st_ivas->ism_mode == ISM_MODE_NONE ) + ELSE IF( sba_mono_flag && st_ivas->ism_mode == ISM_MODE_NONE ) { v_shr( p_output_fx[0], -1, p_output_fx[0], output_frame ); } diff --git a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c index 6cd8da032..352bf59f8 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c @@ -1504,7 +1504,7 @@ void ivas_sba_dirac_stereo_dec_fx( /* output scaling */ #ifdef FIX_1518 test(); - if ( !( EQ_16(st_ivas->ivas_format, SBA_ISM_FORMAT) && EQ_16(st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + if ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) { #endif IF( !sba_mono_flag ) -- GitLab From 2b73d750b10a4b7333cd3a63cd1df9ea27a77371 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 23 Feb 2026 16:36:39 +0100 Subject: [PATCH 04/12] insert proper BASOP comparison --- lib_dec/ivas_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index dff240f49..36310d96b 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -579,7 +579,7 @@ ivas_error ivas_dec_fx( ivas_sba_dirac_stereo_dec_fx( st_ivas, &p_output_fx[sba_ch_idx], output_frame ); } #ifdef FIX_1518 - ELSE IF( sba_mono_flag && st_ivas->ism_mode == ISM_MODE_NONE ) + ELSE IF( sba_mono_flag && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) { v_shr( p_output_fx[0], -1, p_output_fx[0], output_frame ); } -- GitLab From a39c5cde7f6fcbd01d26daab0de62ab470949540 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Mon, 23 Feb 2026 17:30:45 +0100 Subject: [PATCH 05/12] compute mono flag with the correct BASOP --- lib_dec/ivas_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index 36310d96b..1a53c48d5 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -495,7 +495,7 @@ ivas_error ivas_dec_fx( Word16 nchan_ism, sba_ch_idx; #ifdef FIX_1518 - Word16 sba_mono_flag = ( st_ivas->hDecoderConfig->nchan_out == 1 ) ? 1 : 0; + Word16 sba_mono_flag = (Word16) EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ); #endif set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); -- GitLab From 645d6b97e5bc7b72e14b54d6f7b114707977fa74 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 25 Feb 2026 13:37:09 +0100 Subject: [PATCH 06/12] port more fixs form the float MR --- lib_dec/ivas_cpe_dec_fx.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c index 450079744..5c2d58ef1 100644 --- a/lib_dec/ivas_cpe_dec_fx.c +++ b/lib_dec/ivas_cpe_dec_fx.c @@ -663,7 +663,15 @@ ivas_error ivas_cpe_dec_fx( test(); IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) && EQ_16( hCPE->nchan_out, 1 ) && ( is_DTXrate( ivas_total_brate ) == 0 || ( EQ_16( is_DTXrate( ivas_total_brate ), 1 ) && is_DTXrate( st_ivas->hDecoderConfig->last_ivas_total_brate ) == 0 ) ) ) { - applyDmxMdctStereo_fx( hCPE, output, output_frame ); +#ifdef FIX_FLOAT_1518 + test(); + IF ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + { +#endif + applyDmxMdctStereo_fx( hCPE, output, output_frame ); +#ifdef FIX_FLOAT_1518 + } +#endif } /*----------------------------------------------------------------* -- GitLab From f4450db43ada5d319032a958a6ca781a28afae3c Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 25 Feb 2026 14:49:07 +0100 Subject: [PATCH 07/12] fix formatting --- lib_dec/ivas_cpe_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_cpe_dec_fx.c b/lib_dec/ivas_cpe_dec_fx.c index 5c2d58ef1..25928f6ff 100644 --- a/lib_dec/ivas_cpe_dec_fx.c +++ b/lib_dec/ivas_cpe_dec_fx.c @@ -665,7 +665,7 @@ ivas_error ivas_cpe_dec_fx( { #ifdef FIX_FLOAT_1518 test(); - IF ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + IF( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) { #endif applyDmxMdctStereo_fx( hCPE, output, output_frame ); -- GitLab From 7c3cee879a7b74060d09afd9471cb8355adf9f93 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 25 Feb 2026 15:02:04 +0100 Subject: [PATCH 08/12] port condition for apply_dmx_weights_fx from the float MR --- lib_dec/ivas_stereo_mdct_core_dec_fx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c index 8df5a33fa..5802c4ebd 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c @@ -466,7 +466,14 @@ void stereo_mdct_core_dec_fx( test(); IF( hCPE->nchan_out == 1 && ( bfi == 0 || ( bfi != 0 && sts[0]->core != ACELP_CORE && sts[1]->core != ACELP_CORE ) ) ) { - apply_dmx_weights_fx( hCPE, x_fx, sts[0]->transform_type, sts[1]->transform_type ); +#ifdef FIX_FLOAT_1518 + IF ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + { +#endif + apply_dmx_weights_fx( hCPE, x_fx, sts[0]->transform_type, sts[1]->transform_type ); +#ifdef FIX_FLOAT_1518 + } +#endif } Word16 s; -- GitLab From 5d862e62852f7985697eecedf962e28c144ecc54 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 25 Feb 2026 15:08:48 +0100 Subject: [PATCH 09/12] rewrite condition in ivas_sba_dirac_stereo_dec_fx --- lib_dec/ivas_sba_dirac_stereo_dec_fx.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c index 1e69091ee..b05534e38 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c @@ -1504,17 +1504,14 @@ void ivas_sba_dirac_stereo_dec_fx( /* output scaling */ #ifdef FIX_FLOAT_1518 test(); - if ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) - { + if ( !sba_mono_flag && !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) +#else + if ( !sba_mono_flag ) #endif - IF( !sba_mono_flag ) - { - v_shr( output[0], 1, output[0], output_frame ); /*0.5f*/ - v_shr( output[1], 1, output[1], output_frame ); /*0.5f*/ - } -#ifdef FIX_FLOAT_1518 + { + v_shr( output[0], 1, output[0], output_frame ); /*0.5f*/ + v_shr( output[1], 1, output[1], output_frame ); /*0.5f*/ } -#endif /* delay HB synth */ IF( EQ_16( st_ivas->nchan_transport, 1 ) ) -- GitLab From 12a42a9e82667ccc4ed73fc3e7b37728bc963a72 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Wed, 25 Feb 2026 15:19:37 +0100 Subject: [PATCH 10/12] rewrite condition for apply_dmx_weights_fx --- lib_dec/ivas_sba_dirac_stereo_dec_fx.c | 4 ++-- lib_dec/ivas_stereo_mdct_core_dec_fx.c | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c index b05534e38..502550d3b 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c @@ -1504,9 +1504,9 @@ void ivas_sba_dirac_stereo_dec_fx( /* output scaling */ #ifdef FIX_FLOAT_1518 test(); - if ( !sba_mono_flag && !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) + IF( !sba_mono_flag && !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) #else - if ( !sba_mono_flag ) + IF( !sba_mono_flag ) #endif { v_shr( output[0], 1, output[0], output_frame ); /*0.5f*/ diff --git a/lib_dec/ivas_stereo_mdct_core_dec_fx.c b/lib_dec/ivas_stereo_mdct_core_dec_fx.c index 5802c4ebd..2b4e57596 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec_fx.c +++ b/lib_dec/ivas_stereo_mdct_core_dec_fx.c @@ -464,16 +464,15 @@ void stereo_mdct_core_dec_fx( test(); test(); test(); - IF( hCPE->nchan_out == 1 && ( bfi == 0 || ( bfi != 0 && sts[0]->core != ACELP_CORE && sts[1]->core != ACELP_CORE ) ) ) - { -#ifdef FIX_FLOAT_1518 - IF ( !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) - { -#endif - apply_dmx_weights_fx( hCPE, x_fx, sts[0]->transform_type, sts[1]->transform_type ); + #ifdef FIX_FLOAT_1518 - } + test(); + IF( hCPE->nchan_out == 1 && ( bfi == 0 || ( bfi != 0 && sts[0]->core != ACELP_CORE && sts[1]->core != ACELP_CORE ) ) && !( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) ) +#else + IF( hCPE->nchan_out == 1 && ( bfi == 0 || ( bfi != 0 && sts[0]->core != ACELP_CORE && sts[1]->core != ACELP_CORE ) ) ) #endif + { + apply_dmx_weights_fx( hCPE, x_fx, sts[0]->transform_type, sts[1]->transform_type ); } Word16 s; -- GitLab From 6ffa79706a1c172939e153d1c4db3a239ad927d0 Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 26 Feb 2026 12:23:00 +0100 Subject: [PATCH 11/12] simpllify logic in ivas_dec_fx --- lib_dec/ivas_dec_fx.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index 7df706211..21efb90b2 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -494,10 +494,6 @@ ivas_error ivas_dec_fx( { Word16 nchan_ism, sba_ch_idx; -#ifdef FIX_FLOAT_1518 - Word16 sba_mono_flag = (Word16) EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ); -#endif - set16_fx( nb_bits_metadata, 0, MAX_SCE + 1 ); nchan_ism = st_ivas->nchan_ism; move16(); @@ -579,7 +575,7 @@ ivas_error ivas_dec_fx( ivas_sba_dirac_stereo_dec_fx( st_ivas, &p_output_fx[sba_ch_idx], output_frame ); } #ifdef FIX_FLOAT_1518 - ELSE IF( sba_mono_flag && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) + ELSE IF( EQ_16( st_ivas->hDecoderConfig->nchan_out, 1) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) { v_shr( p_output_fx[0], -1, p_output_fx[0], output_frame ); } -- GitLab From 463343a28c7301299323b4bbe7a26a11ec3229cc Mon Sep 17 00:00:00 2001 From: Dominik Weckbecker Date: Thu, 26 Feb 2026 12:45:55 +0100 Subject: [PATCH 12/12] fix formatting --- lib_dec/ivas_dec_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_dec_fx.c b/lib_dec/ivas_dec_fx.c index 21efb90b2..d95c010c8 100644 --- a/lib_dec/ivas_dec_fx.c +++ b/lib_dec/ivas_dec_fx.c @@ -575,7 +575,7 @@ ivas_error ivas_dec_fx( ivas_sba_dirac_stereo_dec_fx( st_ivas, &p_output_fx[sba_ch_idx], output_frame ); } #ifdef FIX_FLOAT_1518 - ELSE IF( EQ_16( st_ivas->hDecoderConfig->nchan_out, 1) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) + ELSE IF( EQ_16( st_ivas->hDecoderConfig->nchan_out, 1 ) && EQ_16( st_ivas->ism_mode, ISM_MODE_NONE ) ) { v_shr( p_output_fx[0], -1, p_output_fx[0], output_frame ); } -- GitLab