Loading lib_com/basop32.c +7 −7 Original line number Diff line number Diff line Loading @@ -1571,7 +1571,7 @@ Word32 DEPR_L_macNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ) Word32 L_var_out; L_var_out = L_mult( var1, var2 ); L_var_out = DEPR_L_add_c( L_var3, L_var_out, Carry ); L_var_out = L_add_c( L_var3, L_var_out, Carry ); #ifdef WMOPS multiCounter[currCounter].L_mult--; Loading Loading @@ -1938,7 +1938,7 @@ Word32 L_sub_sat( Word32 L_var1, Word32 L_var2 ) #ifndef BASOP_NOGLOB Word32 L_add_c( Word32 L_var1, Word32 L_var2 ) #else /* BASOP_NOGLOB */ Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) #endif /* BASOP_NOGLOB */ { Word32 L_var_out; Loading Loading @@ -2121,13 +2121,13 @@ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) carry_int ? set_carry( Carry ) : unset_carry( Carry ); } #ifdef WMOPS multiCounter[currCounter].L_add_c++; #endif return ( L_var_out ); } Word32 L_add_c( Word32 L_var1, Word32 L_var2 ) { return L_add_co( L_var1, L_var2, NULL, NULL ); } #endif /*___________________________________________________________________________ | | | Function Name : L_sub_c | Loading Loading @@ -2199,7 +2199,7 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) #ifndef BASOP_NOGLOB L_var_out = L_add_c( L_var1, -L_var2 ); #else /* BASOP_NOGLOB */ L_var_out = DEPR_L_add_c( L_var1, -L_var2, Carry ); L_var_out = L_add_c( L_var1, -L_var2, Carry ); #endif /* BASOP_NOGLOB */ #ifdef WMOPS multiCounter[currCounter].L_add_c--; Loading lib_com/basop32.h +1 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,6 @@ Word32 L_macNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Word32 L_msuNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu without sat, 1 */ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ); Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ); Word32 L_add_c( Word32 L_var1, Word32 L_var2 ); /* Long add with c, 2 */ Word32 L_sub_c( Word32 L_var1, Word32 L_var2 ); /* Long sub with c, 2 */ #endif /* BASOP_NOGLOB */ Loading @@ -189,7 +188,7 @@ Word16 shr_r( Word16 var1, Word16 var2 ); /* Shift right with #else /* BASOP_NOGLOB */ Word32 L_add( Word32 L_var1, Word32 L_var2 ); /* Long add, 1 */ Word32 L_sub( Word32 L_var1, Word32 L_var2 ); /* Long sub, 1 */ Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long add with c, 2 */ Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long add with c, 2 */ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long sub with c, 2 */ Word32 L_negate( Word32 L_var1 ); /* Long negate, 1 */ Word16 mult_r( Word16 var1, Word16 var2 ); /* Mult with round, 1 */ Loading lib_com/options.h +7 −4 Original line number Diff line number Diff line Loading @@ -140,4 +140,7 @@ #define FIX_ISSUE_1152 /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/ #define FIX_ISSUE_1156 /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */ #define FIX_DISCLAIMER /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */ #define FIX_ISSUE_1167 /* Ittiam: Fix for Issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps in gauss_L2_ivas_fx() */ #define FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC /* FhG: Reduce workload of binaural rendering: replace 1./tmp & sqrt by Isqrt32 */ #define FIX_1113_OPT_DIRAC_BIN_REND /* FhG: Various optimizations to ivas_dirac_dec_binaual_functions.c */ #endif lib_enc/cod_uv_fx.c +19 −1 Original line number Diff line number Diff line Loading @@ -143,14 +143,24 @@ void gauss_L2_ivas_fx( *gain = L_deposit_l( 0 ); move32(); /*Update correlations for gains coding */ #ifdef FIX_ISSUE_1167 tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */ tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */ FOR( i = 0; i < L_SUBFR; i++ ) { tmp16 = shr( y11[i], 1 ); tmp32 = L_mac0( tmp32, tmp16, tmp16 ); /* Q16 */ tmp32_2 = L_mac0( tmp32_2, tmp16, shr( y2[i], 1 ) ); /* Q16 */ } #else tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */ tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */ FOR( i = 0; i < L_SUBFR; i++ ) { tmp32 = L_mac0( tmp32, y11[i], y11[i] ); /* Q18 */ tmp32_2 = L_mac0( tmp32_2, y11[i], y2[i] ); /* Q18 */ } #endif tmp16 = norm_l( tmp32 ); // To be checked Loading @@ -159,13 +169,21 @@ void gauss_L2_ivas_fx( #else g_corr->y1y1 = round_fx( L_shl( tmp32, tmp16 ) ); #endif #ifdef FIX_ISSUE_1167 g_corr->y1y1_e = sub( 31 - 16, tmp16 ); #else g_corr->y1y1_e = sub( 31 - 18, tmp16 ); #endif move16(); move16(); tmp16 = norm_l( tmp32_2 ); g_corr->y1y2 = round_fx_sat( L_shl( tmp32_2, tmp16 ) ); #ifdef FIX_ISSUE_1167 g_corr->y1y2_e = sub( 31 - 16, tmp16 ); #else g_corr->y1y2_e = sub( 31 - 18, tmp16 ); #endif move16(); move16(); } lib_enc/ivas_stat_enc.h +1 −0 Original line number Diff line number Diff line Loading @@ -576,6 +576,7 @@ typedef struct ivas_stereo_classifier_data_structure Word32 non_sta_ch1_fx; Word16 non_sta_ch1_e; Word16 sp_div_ch1_fx; Word16 sp_div_ch1_e; Word32 ps_sta_ch1_fx, ps_sta_ch2_fx; Word16 ps_sta_ch1_e, ps_sta_ch2_e; Word32 prev_g_IPD_fx; // Q29 Loading Loading
lib_com/basop32.c +7 −7 Original line number Diff line number Diff line Loading @@ -1571,7 +1571,7 @@ Word32 DEPR_L_macNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry ) Word32 L_var_out; L_var_out = L_mult( var1, var2 ); L_var_out = DEPR_L_add_c( L_var3, L_var_out, Carry ); L_var_out = L_add_c( L_var3, L_var_out, Carry ); #ifdef WMOPS multiCounter[currCounter].L_mult--; Loading Loading @@ -1938,7 +1938,7 @@ Word32 L_sub_sat( Word32 L_var1, Word32 L_var2 ) #ifndef BASOP_NOGLOB Word32 L_add_c( Word32 L_var1, Word32 L_var2 ) #else /* BASOP_NOGLOB */ Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) #endif /* BASOP_NOGLOB */ { Word32 L_var_out; Loading Loading @@ -2121,13 +2121,13 @@ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) carry_int ? set_carry( Carry ) : unset_carry( Carry ); } #ifdef WMOPS multiCounter[currCounter].L_add_c++; #endif return ( L_var_out ); } Word32 L_add_c( Word32 L_var1, Word32 L_var2 ) { return L_add_co( L_var1, L_var2, NULL, NULL ); } #endif /*___________________________________________________________________________ | | | Function Name : L_sub_c | Loading Loading @@ -2199,7 +2199,7 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) #ifndef BASOP_NOGLOB L_var_out = L_add_c( L_var1, -L_var2 ); #else /* BASOP_NOGLOB */ L_var_out = DEPR_L_add_c( L_var1, -L_var2, Carry ); L_var_out = L_add_c( L_var1, -L_var2, Carry ); #endif /* BASOP_NOGLOB */ #ifdef WMOPS multiCounter[currCounter].L_add_c--; Loading
lib_com/basop32.h +1 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,6 @@ Word32 L_macNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Word32 L_msuNs( Word32 L_var3, Word16 var1, Word16 var2 ); /* Msu without sat, 1 */ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ); Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ); Word32 L_add_c( Word32 L_var1, Word32 L_var2 ); /* Long add with c, 2 */ Word32 L_sub_c( Word32 L_var1, Word32 L_var2 ); /* Long sub with c, 2 */ #endif /* BASOP_NOGLOB */ Loading @@ -189,7 +188,7 @@ Word16 shr_r( Word16 var1, Word16 var2 ); /* Shift right with #else /* BASOP_NOGLOB */ Word32 L_add( Word32 L_var1, Word32 L_var2 ); /* Long add, 1 */ Word32 L_sub( Word32 L_var1, Word32 L_var2 ); /* Long sub, 1 */ Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long add with c, 2 */ Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long add with c, 2 */ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ); /* Long sub with c, 2 */ Word32 L_negate( Word32 L_var1 ); /* Long negate, 1 */ Word16 mult_r( Word16 var1, Word16 var2 ); /* Mult with round, 1 */ Loading
lib_com/options.h +7 −4 Original line number Diff line number Diff line Loading @@ -140,4 +140,7 @@ #define FIX_ISSUE_1152 /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/ #define FIX_ISSUE_1156 /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */ #define FIX_DISCLAIMER /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */ #define FIX_ISSUE_1167 /* Ittiam: Fix for Issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps in gauss_L2_ivas_fx() */ #define FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC /* FhG: Reduce workload of binaural rendering: replace 1./tmp & sqrt by Isqrt32 */ #define FIX_1113_OPT_DIRAC_BIN_REND /* FhG: Various optimizations to ivas_dirac_dec_binaual_functions.c */ #endif
lib_enc/cod_uv_fx.c +19 −1 Original line number Diff line number Diff line Loading @@ -143,14 +143,24 @@ void gauss_L2_ivas_fx( *gain = L_deposit_l( 0 ); move32(); /*Update correlations for gains coding */ #ifdef FIX_ISSUE_1167 tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */ tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */ FOR( i = 0; i < L_SUBFR; i++ ) { tmp16 = shr( y11[i], 1 ); tmp32 = L_mac0( tmp32, tmp16, tmp16 ); /* Q16 */ tmp32_2 = L_mac0( tmp32_2, tmp16, shr( y2[i], 1 ) ); /* Q16 */ } #else tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */ tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */ FOR( i = 0; i < L_SUBFR; i++ ) { tmp32 = L_mac0( tmp32, y11[i], y11[i] ); /* Q18 */ tmp32_2 = L_mac0( tmp32_2, y11[i], y2[i] ); /* Q18 */ } #endif tmp16 = norm_l( tmp32 ); // To be checked Loading @@ -159,13 +169,21 @@ void gauss_L2_ivas_fx( #else g_corr->y1y1 = round_fx( L_shl( tmp32, tmp16 ) ); #endif #ifdef FIX_ISSUE_1167 g_corr->y1y1_e = sub( 31 - 16, tmp16 ); #else g_corr->y1y1_e = sub( 31 - 18, tmp16 ); #endif move16(); move16(); tmp16 = norm_l( tmp32_2 ); g_corr->y1y2 = round_fx_sat( L_shl( tmp32_2, tmp16 ) ); #ifdef FIX_ISSUE_1167 g_corr->y1y2_e = sub( 31 - 16, tmp16 ); #else g_corr->y1y2_e = sub( 31 - 18, tmp16 ); #endif move16(); move16(); }
lib_enc/ivas_stat_enc.h +1 −0 Original line number Diff line number Diff line Loading @@ -576,6 +576,7 @@ typedef struct ivas_stereo_classifier_data_structure Word32 non_sta_ch1_fx; Word16 non_sta_ch1_e; Word16 sp_div_ch1_fx; Word16 sp_div_ch1_e; Word32 ps_sta_ch1_fx, ps_sta_ch2_fx; Word16 ps_sta_ch1_e, ps_sta_ch2_e; Word32 prev_g_IPD_fx; // Q29 Loading