Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -121,7 +121,6 @@ #define NONBE_FIX_2493_EXTRACT_L_ivas_core_dec_fx /* FhG: Fix extract_l overflow inside ivas_core_dec_fx(). Saturation, not a optimal fix. */ #define NONBE_FIX_2493_EXTRACT_L_d_syn_filt_fx /* FhG: Fix extract_l overflow inside d_syn_filt_fx(). W_shr( x, s ) with s out of range problem. */ #define NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx /* FhG: Fix extract_l overflow inside acelp_core_dec_fx() */ // #define NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx_SAT /* FhG: Fix extract_l overflow inside acelp_core_dec_fx(). Do saturation. */ #define NONBE_FIX_2493_EXTRACT_L_acelp_fast_fx /* FhG: Fix extract_l overflow inside acelp_fast_fx(). Saturation, not a optimal fix. */ #define NONBE_FIX_2493_EXTRACT_L_swb_tbe_enc_fx /* FhG: Fix extract_l overflow inside swb_tbe_enc_fx() */ #define NONBE_FIX_2493_EXTRACT_L_bw_detect_fx /* FhG: Fix extract_l overflow inside bw_detect_fx(). Saturation, not a optimal fix. */ Loading lib_dec/acelp_core_dec_fx.c +1 −13 Original line number Diff line number Diff line Loading @@ -2259,26 +2259,14 @@ ivas_error acelp_core_dec_fx( Word16 exc_q; Word16 old_bwe_exc_fx2[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )]; assert( ( st->hBWE_TD->q_old_bwe_exc_extended_fx & 1 ) == 0 || st->hBWE_TD->q_old_bwe_exc_extended_fx == Q15 ); exc_q = s_min( st->Q_exc, add( norm_arr( st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET ), shr( st->hBWE_TD->q_old_bwe_exc_extended_fx, 1 ) ) ); exc_q = s_min( st->Q_exc, shr( add( norm_arr( st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET ), st->hBWE_TD->q_old_bwe_exc_extended_fx ), 1 ) ); Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, sub( shl( exc_q, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * exc_q) */ Copy_Scale_sig_nosat( old_bwe_exc_fx, old_bwe_exc_fx2, ( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 ), sub( exc_q, st->Q_exc ) ); non_linearity_fx( st->element_mode, old_bwe_exc_fx2 + PIT16k_MAX * 2, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, exc_q, st->coder_type, voice_factors_fx, st->L_frame ); exp = sub( L_norm_arr( bwe_exc_extended_fx + L_FRAME32k, NL_BUFF_OFFSET ), 16 ); if ( s_and( exp, 1 ) != 0 ) { exp = sub( exp, 1 ); } Copy_Scale_sig_32_16_nosat( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, exp ); /* Q(2 * Q_exc) -> Q(q_old_bwe_exc_extended_fx) */ st->hBWE_TD->q_old_bwe_exc_extended_fx = add( shl( exc_q, 1 ), exp ); move16(); #elif defined( NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx_SAT ) Copy_Scale_sig_16_32_DEPREC( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, s_min( 15, sub( shl( st->Q_exc, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * Q_exc) */ non_linearity_fx( st->element_mode, bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); exp = sub( L_norm_arr( bwe_exc_extended_fx + L_FRAME32k, NL_BUFF_OFFSET ), 16 ); Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, exp ); /* Q(2 * Q_exc) -> Q(q_old_bwe_exc_extended_fx) */ st->hBWE_TD->q_old_bwe_exc_extended_fx = add( shl( st->Q_exc, 1 ), exp ); move16(); #else Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * Q_exc) */ non_linearity_fx( st->element_mode, bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -121,7 +121,6 @@ #define NONBE_FIX_2493_EXTRACT_L_ivas_core_dec_fx /* FhG: Fix extract_l overflow inside ivas_core_dec_fx(). Saturation, not a optimal fix. */ #define NONBE_FIX_2493_EXTRACT_L_d_syn_filt_fx /* FhG: Fix extract_l overflow inside d_syn_filt_fx(). W_shr( x, s ) with s out of range problem. */ #define NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx /* FhG: Fix extract_l overflow inside acelp_core_dec_fx() */ // #define NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx_SAT /* FhG: Fix extract_l overflow inside acelp_core_dec_fx(). Do saturation. */ #define NONBE_FIX_2493_EXTRACT_L_acelp_fast_fx /* FhG: Fix extract_l overflow inside acelp_fast_fx(). Saturation, not a optimal fix. */ #define NONBE_FIX_2493_EXTRACT_L_swb_tbe_enc_fx /* FhG: Fix extract_l overflow inside swb_tbe_enc_fx() */ #define NONBE_FIX_2493_EXTRACT_L_bw_detect_fx /* FhG: Fix extract_l overflow inside bw_detect_fx(). Saturation, not a optimal fix. */ Loading
lib_dec/acelp_core_dec_fx.c +1 −13 Original line number Diff line number Diff line Loading @@ -2259,26 +2259,14 @@ ivas_error acelp_core_dec_fx( Word16 exc_q; Word16 old_bwe_exc_fx2[( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 )]; assert( ( st->hBWE_TD->q_old_bwe_exc_extended_fx & 1 ) == 0 || st->hBWE_TD->q_old_bwe_exc_extended_fx == Q15 ); exc_q = s_min( st->Q_exc, add( norm_arr( st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET ), shr( st->hBWE_TD->q_old_bwe_exc_extended_fx, 1 ) ) ); exc_q = s_min( st->Q_exc, shr( add( norm_arr( st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET ), st->hBWE_TD->q_old_bwe_exc_extended_fx ), 1 ) ); Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, sub( shl( exc_q, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * exc_q) */ Copy_Scale_sig_nosat( old_bwe_exc_fx, old_bwe_exc_fx2, ( ( PIT16k_MAX + ( L_FRAME16k + 1 ) + L_SUBFR16k ) * 2 ), sub( exc_q, st->Q_exc ) ); non_linearity_fx( st->element_mode, old_bwe_exc_fx2 + PIT16k_MAX * 2, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, exc_q, st->coder_type, voice_factors_fx, st->L_frame ); exp = sub( L_norm_arr( bwe_exc_extended_fx + L_FRAME32k, NL_BUFF_OFFSET ), 16 ); if ( s_and( exp, 1 ) != 0 ) { exp = sub( exp, 1 ); } Copy_Scale_sig_32_16_nosat( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, exp ); /* Q(2 * Q_exc) -> Q(q_old_bwe_exc_extended_fx) */ st->hBWE_TD->q_old_bwe_exc_extended_fx = add( shl( exc_q, 1 ), exp ); move16(); #elif defined( NONBE_FIX_2493_EXTRACT_L_acelp_core_dec_fx_SAT ) Copy_Scale_sig_16_32_DEPREC( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, s_min( 15, sub( shl( st->Q_exc, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * Q_exc) */ non_linearity_fx( st->element_mode, bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); exp = sub( L_norm_arr( bwe_exc_extended_fx + L_FRAME32k, NL_BUFF_OFFSET ), 16 ); Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, exp ); /* Q(2 * Q_exc) -> Q(q_old_bwe_exc_extended_fx) */ st->hBWE_TD->q_old_bwe_exc_extended_fx = add( shl( st->Q_exc, 1 ), exp ); move16(); #else Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * Q_exc) */ non_linearity_fx( st->element_mode, bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame ); Loading