From 0d92e4ff01548c56e8f3638544878cc00c661a74 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Tue, 25 Mar 2025 12:42:25 +0530 Subject: [PATCH] Fix for 3GPP issue 1434: [regression] Encoder crash for MDCT Stereo at 80 kbps and above in stereo_mdct_core_enc_fx() Link #1434 --- lib_enc/ivas_stereo_mdct_core_enc_fx.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lib_enc/ivas_stereo_mdct_core_enc_fx.c b/lib_enc/ivas_stereo_mdct_core_enc_fx.c index 804bcff5c..3becb30d9 100644 --- a/lib_enc/ivas_stereo_mdct_core_enc_fx.c +++ b/lib_enc/ivas_stereo_mdct_core_enc_fx.c @@ -363,26 +363,24 @@ void stereo_mdct_core_enc_fx( move16(); FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { - IF( EQ_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) - { - length = sts[ch]->hTcxEnc->L_frameTCX; - move16(); - } - ELSE + length = sts[ch]->hTcxEnc->L_frameTCX; + move16(); + if ( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { length = shr( sts[ch]->hTcxEnc->L_frameTCX, 1 ); } - FOR( k = 0; k <= ( ( sts[ch]->core == TCX_20_CORE ) ? 1 : NB_DIV ) - 1; k++ ) + + hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[0], length ) ); + hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][0], length ) ); + + IF( NE_16( sts[ch]->hTcxEnc->tcxMode, TCX_20 ) ) { - hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[k], length ) ); - hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][k], length ) ); + hdrm_min = s_min( hdrm_min, L_norm_arr( sts[ch]->hTcxEnc->spectrum_fx[1], length ) ); + hdrm_min = s_min( hdrm_min, L_norm_arr( mdst_spectrum_fx[ch][1], length ) ); } } - IF( hdrm_min != 0 ) - { - q_spec = sub( add( hdrm_min, q_spec ), 1 ); /*1 guard bit to avoid over-flows*/ - } + q_spec = sub( add( hdrm_min, q_spec ), 2 ); /* 2 guard bits to avoid over-flows (1 for stereo_coder_tcx_fx and other for power spectrum calculation )*/ FOR( ch = 0; ch < CPE_CHANNELS; ch++ ) { -- GitLab