Loading lib_com/ivas_spar_com_fx.c +32 −0 Original line number Diff line number Diff line Loading @@ -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 ); Loading Loading @@ -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 ) ) { Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 ############################ */ Loading Loading
lib_com/ivas_spar_com_fx.c +32 −0 Original line number Diff line number Diff line Loading @@ -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 ); Loading Loading @@ -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 ) ) { Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 ############################ */ Loading