Loading lib_com/basop32.c +1 −7 Original line number Diff line number Diff line Loading @@ -1575,7 +1575,7 @@ Word32 L_msuNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *O { Word32 L_var_out; L_var_out = L_mult_o( var1, var2, Overflow ); L_var_out = L_mult( var1, var2 ); L_var_out = L_sub_co( L_var3, L_var_out, Carry, Overflow ); return ( L_var_out ); Loading Loading @@ -2038,7 +2038,6 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) return ( L_var_out ); } Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) { Word32 L_var_out; Loading @@ -2057,7 +2056,6 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) L_var_out = L_var1 - L_var2; if ( L_var1 > 0L ) { set_overflow( Overflow ); unset_carry( Carry ); } } Loading @@ -2069,22 +2067,18 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) ) { set_overflow( Overflow ); carry_int = 0; } else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) ) { set_overflow( Overflow ); carry_int = 1; } else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) ) { unset_overflow( Overflow ); carry_int = 1; } if ( L_test == MIN_32 ) { set_overflow( Overflow ); carry_int ? set_carry( Carry ) : unset_carry( Carry ); } else Loading lib_com/cldfb.c +414 −36 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_com/ivas_dirac_com_fx.c +25 −0 Original line number Diff line number Diff line Loading @@ -1026,6 +1026,7 @@ void computeDiffuseness_fixed( q_intensity_slow = sub( add( q_intensity, q_intensity ), 31 ); /* Compute Diffuseness */ #ifndef OPT_SBA_DEC_PATH p_tmp = intensity_slow_abs; exp2 = 0; move16(); Loading Loading @@ -1064,6 +1065,30 @@ void computeDiffuseness_fixed( move32(); } } #else /* OPT_SBA_DEC_PATH */ Word16 diff = sub( 62, q_ene ); p_tmp = intensity_slow_abs; FOR( i = 0; i < num_freq_bands; ++i ) { exp1 = sub( 31, q_intensity_slow ); tmp = Sqrt32( p_tmp[i], &exp1 ); tmp = BASOP_Util_Divide3232_Scale_newton( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 ); q_tmp = sub( diff, add( exp1, exp2 ) ); // bring to Q30 tmp = L_shl_sat( tmp, sub( Q30, q_tmp ) ); diffuseness[i] = L_sub( ONE_IN_Q30, tmp ); move32(); if ( LT_32( diffuseness[i], 0 ) ) { diffuseness[i] = 0; move32(); } } #endif /* OPT_SBA_DEC_PATH */ *q_diffuseness = Q30; move16(); Loading lib_com/ivas_prot_fx.h +14 −6 Original line number Diff line number Diff line Loading @@ -1094,8 +1094,12 @@ void ivas_mct_dec_mct_fx( void apply_MCT_dec_fx( MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ Decoder_State **sts, /* i/o: decoder state structure */ Word32 *x[MCT_MAX_CHANNELS][NB_DIV], /* i/o: decoded and dequan. spect. input to MCT */ Word16 q_x[MCT_MAX_CHANNELS] ); Word32 *x[MCT_MAX_CHANNELS][NB_DIV] /* i/o: decoded and dequan. spect. input to MCT */ #ifndef OPT_SBA_DEC_PATH , Word16 q_x[MCT_MAX_CHANNELS] #endif /* OPT_SBA_DEC_PATH */ ); void mctStereoIGF_dec_fx( MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ Loading Loading @@ -1129,9 +1133,13 @@ void stereo_decoder_tcx_fx( const Word16 mct_on, /* i : flag mct block (1) or stereo (0) */ const Word16 last_core_l, /* i : last core for left channel */ const Word16 last_core_r, /* i : last core for right channel */ const Word16 tmp_plc_upmix, /* i : indicates temp upmix for PLC decision */ const Word16 tmp_plc_upmix /* i : indicates temp upmix for PLC decision */ #ifndef OPT_SBA_DEC_PATH , Word16 *q_x_ch2, Word16 *q_x_ch1 ); Word16 *q_x_ch1 #endif /* OPT_SBA_DEC_PATH */ ); void v_multc_acc_32_16( const Word32 x[], /* i : Input vector */ Loading lib_com/ivas_transient_det_fx.c +17 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,11 @@ *------------------------------------------------------------------------------------------*/ #define IVAS_TDET_PARM_ENV_EPS ( 1e-5f ) #ifndef OPT_SBA_DEC_PATH #define IVAS_TDET_PARM_ENV_EPS_fx 21474 // Q31 #else /* OPT_SBA_DEC_PATH */ #define IVAS_TDET_PARM_ENV_EPS_fx ( 1407374884 ) // Q47 #endif /* OPT_SBA_DEC_PATH */ #define IVAS_TDET_DUCK_MULT_FAC ( 590558003 ) // Q29 #define IVAS_TDET_PARM_TRANS_THR ( 107374182 ) // Q30 Loading Loading @@ -403,8 +407,19 @@ void ivas_td_decorr_get_ducking_gains_fx( FOR( i = 0; i < frame_len; i++ ) { // e_fast_fx[i] = L_add( L_abs( e_fast_fx[i] ), L_shr( IVAS_TDET_PARM_ENV_EPS_fx, q_factor_diff ) ); /*Q14*/ #ifndef OPT_SBA_DEC_PATH e_fast_fx[i] = BASOP_Util_Add_Mant32Exp( L_abs( e_fast_fx[i] ), e_fast_e[i], IVAS_TDET_PARM_ENV_EPS_fx, 0, &e_fast_e[i] ); move32(); #else /* OPT_SBA_DEC_PATH */ Word32 tmp = L_abs( e_fast_fx[i] ); Word16 nrm = norm_l( tmp ); Word16 max_e = s_max( sub( e_fast_e[i], nrm ), 31 - 47 ); max_e = add( max_e, 1 ); // 1 for headroom e_fast_fx[i] = L_add( L_shr( tmp, sub( max_e, e_fast_e[i] ) ), L_shr( IVAS_TDET_PARM_ENV_EPS_fx, sub( max_e, 31 - 47 ) ) ); move32(); e_fast_e[i] = max_e; move16(); #endif /* OPT_SBA_DEC_PATH */ e_slow_fx[i] = e_fast_fx[i]; move32(); e_slow_e[i] = e_fast_e[i]; Loading Loading
lib_com/basop32.c +1 −7 Original line number Diff line number Diff line Loading @@ -1575,7 +1575,7 @@ Word32 L_msuNs_co( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry, Flag *O { Word32 L_var_out; L_var_out = L_mult_o( var1, var2, Overflow ); L_var_out = L_mult( var1, var2 ); L_var_out = L_sub_co( L_var3, L_var_out, Carry, Overflow ); return ( L_var_out ); Loading Loading @@ -2038,7 +2038,6 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry ) return ( L_var_out ); } Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) { Word32 L_var_out; Loading @@ -2057,7 +2056,6 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) L_var_out = L_var1 - L_var2; if ( L_var1 > 0L ) { set_overflow( Overflow ); unset_carry( Carry ); } } Loading @@ -2069,22 +2067,18 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) ) { set_overflow( Overflow ); carry_int = 0; } else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) ) { set_overflow( Overflow ); carry_int = 1; } else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) ) { unset_overflow( Overflow ); carry_int = 1; } if ( L_test == MIN_32 ) { set_overflow( Overflow ); carry_int ? set_carry( Carry ) : unset_carry( Carry ); } else Loading
lib_com/ivas_dirac_com_fx.c +25 −0 Original line number Diff line number Diff line Loading @@ -1026,6 +1026,7 @@ void computeDiffuseness_fixed( q_intensity_slow = sub( add( q_intensity, q_intensity ), 31 ); /* Compute Diffuseness */ #ifndef OPT_SBA_DEC_PATH p_tmp = intensity_slow_abs; exp2 = 0; move16(); Loading Loading @@ -1064,6 +1065,30 @@ void computeDiffuseness_fixed( move32(); } } #else /* OPT_SBA_DEC_PATH */ Word16 diff = sub( 62, q_ene ); p_tmp = intensity_slow_abs; FOR( i = 0; i < num_freq_bands; ++i ) { exp1 = sub( 31, q_intensity_slow ); tmp = Sqrt32( p_tmp[i], &exp1 ); tmp = BASOP_Util_Divide3232_Scale_newton( tmp, L_add( energy_slow[i], EPSILLON_FX ), &exp2 ); q_tmp = sub( diff, add( exp1, exp2 ) ); // bring to Q30 tmp = L_shl_sat( tmp, sub( Q30, q_tmp ) ); diffuseness[i] = L_sub( ONE_IN_Q30, tmp ); move32(); if ( LT_32( diffuseness[i], 0 ) ) { diffuseness[i] = 0; move32(); } } #endif /* OPT_SBA_DEC_PATH */ *q_diffuseness = Q30; move16(); Loading
lib_com/ivas_prot_fx.h +14 −6 Original line number Diff line number Diff line Loading @@ -1094,8 +1094,12 @@ void ivas_mct_dec_mct_fx( void apply_MCT_dec_fx( MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ Decoder_State **sts, /* i/o: decoder state structure */ Word32 *x[MCT_MAX_CHANNELS][NB_DIV], /* i/o: decoded and dequan. spect. input to MCT */ Word16 q_x[MCT_MAX_CHANNELS] ); Word32 *x[MCT_MAX_CHANNELS][NB_DIV] /* i/o: decoded and dequan. spect. input to MCT */ #ifndef OPT_SBA_DEC_PATH , Word16 q_x[MCT_MAX_CHANNELS] #endif /* OPT_SBA_DEC_PATH */ ); void mctStereoIGF_dec_fx( MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ Loading Loading @@ -1129,9 +1133,13 @@ void stereo_decoder_tcx_fx( const Word16 mct_on, /* i : flag mct block (1) or stereo (0) */ const Word16 last_core_l, /* i : last core for left channel */ const Word16 last_core_r, /* i : last core for right channel */ const Word16 tmp_plc_upmix, /* i : indicates temp upmix for PLC decision */ const Word16 tmp_plc_upmix /* i : indicates temp upmix for PLC decision */ #ifndef OPT_SBA_DEC_PATH , Word16 *q_x_ch2, Word16 *q_x_ch1 ); Word16 *q_x_ch1 #endif /* OPT_SBA_DEC_PATH */ ); void v_multc_acc_32_16( const Word32 x[], /* i : Input vector */ Loading
lib_com/ivas_transient_det_fx.c +17 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,11 @@ *------------------------------------------------------------------------------------------*/ #define IVAS_TDET_PARM_ENV_EPS ( 1e-5f ) #ifndef OPT_SBA_DEC_PATH #define IVAS_TDET_PARM_ENV_EPS_fx 21474 // Q31 #else /* OPT_SBA_DEC_PATH */ #define IVAS_TDET_PARM_ENV_EPS_fx ( 1407374884 ) // Q47 #endif /* OPT_SBA_DEC_PATH */ #define IVAS_TDET_DUCK_MULT_FAC ( 590558003 ) // Q29 #define IVAS_TDET_PARM_TRANS_THR ( 107374182 ) // Q30 Loading Loading @@ -403,8 +407,19 @@ void ivas_td_decorr_get_ducking_gains_fx( FOR( i = 0; i < frame_len; i++ ) { // e_fast_fx[i] = L_add( L_abs( e_fast_fx[i] ), L_shr( IVAS_TDET_PARM_ENV_EPS_fx, q_factor_diff ) ); /*Q14*/ #ifndef OPT_SBA_DEC_PATH e_fast_fx[i] = BASOP_Util_Add_Mant32Exp( L_abs( e_fast_fx[i] ), e_fast_e[i], IVAS_TDET_PARM_ENV_EPS_fx, 0, &e_fast_e[i] ); move32(); #else /* OPT_SBA_DEC_PATH */ Word32 tmp = L_abs( e_fast_fx[i] ); Word16 nrm = norm_l( tmp ); Word16 max_e = s_max( sub( e_fast_e[i], nrm ), 31 - 47 ); max_e = add( max_e, 1 ); // 1 for headroom e_fast_fx[i] = L_add( L_shr( tmp, sub( max_e, e_fast_e[i] ) ), L_shr( IVAS_TDET_PARM_ENV_EPS_fx, sub( max_e, 31 - 47 ) ) ); move32(); e_fast_e[i] = max_e; move16(); #endif /* OPT_SBA_DEC_PATH */ e_slow_fx[i] = e_fast_fx[i]; move32(); e_slow_e[i] = e_fast_e[i]; Loading