From da31b1f6c62d443a5aaa96f11645c95ea5701783 Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Tue, 14 Apr 2026 18:34:18 +0200 Subject: [PATCH 1/2] Fix crash for ltv48_OMASA_2ISM_2TC_OMASA_ISM2_2TC_b32_swb_cbr --- lib_com/options.h | 1 + lib_enc/swb_tbe_enc_fx.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index 7f31403c9..41aec5450 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -90,6 +90,7 @@ #define NONBE_FIX_ISSUE_2206_TD_CHANNEL_EXTRAPOLATION /* FhG: Use different scale to avoid saturation of LPC coefficient in TD Stereo signal extrapolation. */ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_SWB_fenv_fx2 /* FhG: Avoid overflow of SWB_fenv_fx in SWB_BWE_encoding_fx because of very small energies. */ #define NONBE_FIX_ISSUE_2206_AVOID_OVERFLOW_MSVQ_Interpol_Tran_fx /* FhG: Fix saturation crash in MSVQ_Interpol_Tran_fx() */ +#define NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 /* Fix crash from issue #2527 */ #define FIX_2452_HQ_CORE_PEAQ_AVR_RATIO_HARM /* Eri: Basop issue 2453: Fix alignment of peak_avrg_ratio_fx */ #define FIX_FLOAT_1539_G192_FORMAT_SWITCH /* VA/Nokia: reintroduce format switching for g192 bitstreams */ #define FIX_1527_CMR_BITRATE_IDX /* Fix for incorrect bitrate idx packed in rtp CMR E-byte */ diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index ce71a4a54..c70101c92 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -4895,9 +4895,21 @@ static void gainFrSmooth_En_fx( IF( NE_32( st_fx->total_brate, ACELP_24k40 ) ) { #ifdef NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT +#ifdef NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 + Word16 shb_frame_q2; + + shb_frame_q2 = s_min( shb_frame_q, hBWE_TD->shb_inv_filt_mem_q ); + scale_sig( hBWE_TD->shb_inv_filt_mem_fx, LPC_SHB_ORDER, sub( shb_frame_q2, hBWE_TD->shb_inv_filt_mem_q ) ); + scale_sig( shb_frame_fx, L_FRAME16k + L_SHB_LAHEAD, sub( shb_frame_q2, shb_frame_q ) ); + shb_frame_q = shb_frame_q2; + move16(); + hBWE_TD->shb_inv_filt_mem_q = shb_frame_q; + move16(); +#else scale_sig( hBWE_TD->shb_inv_filt_mem_fx, LPC_SHB_ORDER, sub( shb_frame_q, hBWE_TD->shb_inv_filt_mem_q ) ); hBWE_TD->shb_inv_filt_mem_q = shb_frame_q; move16(); +#endif #endif Copy( shb_frame_fx, temp_shb_frame, L_FRAME16k + L_SHB_LAHEAD ); fir_fx( temp_shb_frame, lpc_shb_fx, shb_frame_fx, hBWE_TD->shb_inv_filt_mem_fx, L_FRAME16k + L_SHB_LAHEAD, LPC_SHB_ORDER, 1, 3 ); -- GitLab From 7ed7ef8f9cb1feebdf683283e3b551dc2ba97782 Mon Sep 17 00:00:00 2001 From: Manuel Jander Date: Wed, 15 Apr 2026 11:31:03 +0200 Subject: [PATCH 2/2] Simplify NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 by saturating, and avoid changing shb_frame_q, because its not allowable without further changes. --- lib_enc/swb_tbe_enc_fx.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib_enc/swb_tbe_enc_fx.c b/lib_enc/swb_tbe_enc_fx.c index c70101c92..5128ca77f 100644 --- a/lib_enc/swb_tbe_enc_fx.c +++ b/lib_enc/swb_tbe_enc_fx.c @@ -4896,20 +4896,12 @@ static void gainFrSmooth_En_fx( { #ifdef NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT #ifdef NONBE_FIX_ISSUE_2206_SWB_EXPERIMENT_FIX_2527 - Word16 shb_frame_q2; - - shb_frame_q2 = s_min( shb_frame_q, hBWE_TD->shb_inv_filt_mem_q ); - scale_sig( hBWE_TD->shb_inv_filt_mem_fx, LPC_SHB_ORDER, sub( shb_frame_q2, hBWE_TD->shb_inv_filt_mem_q ) ); - scale_sig( shb_frame_fx, L_FRAME16k + L_SHB_LAHEAD, sub( shb_frame_q2, shb_frame_q ) ); - shb_frame_q = shb_frame_q2; - move16(); - hBWE_TD->shb_inv_filt_mem_q = shb_frame_q; - move16(); + Scale_sig( hBWE_TD->shb_inv_filt_mem_fx, LPC_SHB_ORDER, sub( shb_frame_q, hBWE_TD->shb_inv_filt_mem_q ) ); #else scale_sig( hBWE_TD->shb_inv_filt_mem_fx, LPC_SHB_ORDER, sub( shb_frame_q, hBWE_TD->shb_inv_filt_mem_q ) ); +#endif hBWE_TD->shb_inv_filt_mem_q = shb_frame_q; move16(); -#endif #endif Copy( shb_frame_fx, temp_shb_frame, L_FRAME16k + L_SHB_LAHEAD ); fir_fx( temp_shb_frame, lpc_shb_fx, shb_frame_fx, hBWE_TD->shb_inv_filt_mem_fx, L_FRAME16k + L_SHB_LAHEAD, LPC_SHB_ORDER, 1, 3 ); -- GitLab