From ba1f888d152e11da9c4c85bfd564eebc3cbc4f6a Mon Sep 17 00:00:00 2001 From: rtyag Date: Tue, 26 Aug 2025 15:33:43 +1000 Subject: [PATCH] fix for issue 1970 --- lib_com/ivas_spar_com_fx.c | 32 ++++++++++++++++++++++++++++++++ lib_com/options.h | 1 + 2 files changed, 33 insertions(+) diff --git a/lib_com/ivas_spar_com_fx.c b/lib_com/ivas_spar_com_fx.c index 9b2e68307..b0a78848c 100644 --- a/lib_com/ivas_spar_com_fx.c +++ b/lib_com/ivas_spar_com_fx.c @@ -2374,6 +2374,37 @@ static void ivas_calc_p_coeffs_per_band_enc_fx( } ELSE IF( EQ_16( num_dmx, 3 ) ) { +#ifdef FIX_1970_SBA_CRASH + Word64 re64[2]; + Word32 re32[2], re32_2; + Word16 qtmp2; + set64_fx( re64, 0, 2 ); + q_tmp = 63; + FOR( j = 0; j < 2; j++ ) + { + FOR( k = 0; k < 2; k++ ) + { + W_tmp = W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][k], cov_dd_re[k][j] ); // q_C_re+q_cov_dd_re + re64[j] = W_add( re64[j], W_tmp ); + move64(); + } + q_tmp = s_min( q_tmp, sub( W_norm( re64[j] ), 33 ) ); + } + FOR( j = 0; j < 2; j++ ) + { + re32[j] = W_shl_sat_l( re64[j], q_tmp ); // q_C_re+q_cov_dd_re+q_tmp + move32(); + } + qtmp2 = add( add( q_C_re, q_tmp ), q_cov_dd_re ); + W_tmp = W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][0], re32[0] ); // q_C_re+qtmp2 + W_tmp = W_add( W_tmp, W_mult0_32_32( pSparMd->band_coeffs[b_ts_idx].C_re_fx[0][1], re32[1] ) ); // q_C_re+qtmp2 + q_tmp = sub( W_norm( W_tmp ), 33 ); + re32_2 = W_shl_sat_l( W_tmp, q_tmp ); // q_C_re+qtmp2+q_tmp + qtmp2 = add( add( q_C_re, q_tmp ), qtmp2 ); + q_tmp = s_min( 63, qtmp2 ); + recon_uu_re[0][0] = L_max( 0, re32_2 ); + move32(); +#else Word32 re1[2], re2; Word16 q_re1[2]; set32_fx( re1, 0, 2 ); @@ -2446,6 +2477,7 @@ static void ivas_calc_p_coeffs_per_band_enc_fx( recon_uu_re[0][0] = L_add( recon_uu_re[0][0], re2 ); // q_tmp move32(); +#endif IF( LT_16( q_cov_uu_re, q_tmp ) ) { diff --git a/lib_com/options.h b/lib_com/options.h index c98dce78e..540a225d3 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -107,6 +107,7 @@ #endif #define FIX_ISSUE_1817_REPLACE_CARRY_OVERFLOW /* FhG: bit-exact, replace carry and overflow operations by 64-bit operations, MR 1931 */ #define FIX_1844_MISSING_FREE /* FhG: add missing free in ivas_binRenderer_convModuleClose_fx() */ +#define FIX_1970_SBA_CRASH /* Dlb: Fix for issue 1970, SBA crash */ /* #################### Start BASOP porting switches ############################ */ -- GitLab