Loading lib_com/ivas_cnst.h +2 −2 Original line number Diff line number Diff line Loading @@ -1306,7 +1306,7 @@ enum #define MASA_COHERENCE_TOLERANCE 0.1f #define MASA_COHERENCE_THRESHOLD 0.1f #ifdef IVAS_FLOAT_FIXED #define MASA_COHERENCE_TOLERANCE_FX 419430 // 0.1 in Q22 #define MASA_COHERENCE_TOLERANCE_FX 3277/*0.1 Q15*/ #define MASA_COHERENCE_THRESHOLD_FX 214748365 // 0.1 in Q31 #endif #define MASA_RATIO_TOLERANCE 0.1f Loading @@ -1314,7 +1314,7 @@ enum #define MASA_ANGLE_TOLERANCE 0.5f #ifdef IVAS_FLOAT_FIXED #define MASA_RATIO_THRESHOLD_FX 214748365 // 0.1 in Q31 #define MASA_RATIO_TOLERANCE_FX 419430 // 0.1 in Q22 #define MASA_RATIO_TOLERANCE_FX 214748364/*0.1 Q30*/ #define MASA_ANGLE_TOLERANCE_FX ONE_IN_Q21 // 0.5 in Q22 #endif #define MASA_LIMIT_NO_BANDS_SUR_COH 8 Loading lib_com/ivas_fb_mixer.c +4 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,10 @@ ivas_error ivas_FB_mixer_open_fx( move16(); } #ifdef MSAN_FIX set16_fx( hFbMixer->q_ppFilterbank_prior_input_fx, 0, IVAS_MAX_FB_MIXER_IN_CH ); #endif test(); IF( ( NE_16( fb_cfg->active_w_mixing, -1 ) ) && ( fb_cfg->num_out_chans > 0 ) ) { Loading lib_com/ivas_spar_com.c +33 −13 Original line number Diff line number Diff line Loading @@ -1201,18 +1201,24 @@ static void ivas_get_pred_coeffs_enc_fx( move32(); dm_v_re_q[i][b] = sub( add( add( dm_v_re_q[i][b], DM_F_q[b] ), tmp_shift ), 32 ); move16(); if ( ppDM_Fv_re[i][b] == 0 ) { dm_v_re_q[i][b] = Q31; move16(); } // if ( ppDM_Fv_re[i][b] == 0 ) //{ // dm_v_re_q[i][b] = Q31; // move16(); // } IF( ppPred_coeffs_re[i][b] ) { *q_pred_coeffs = s_min( *q_pred_coeffs, q_ppPred_coeffs_re[i][b] ); move16(); } IF( ppDM_Fv_re[i][b] ) { *q_dm_fv_re = s_min( *q_dm_fv_re, dm_v_re_q[i][b] ); move16(); } } } FOR( i = 0; i < pred_dim; i++ ) { FOR( b = start_band; b < end_band; b++ ) Loading Loading @@ -1772,7 +1778,7 @@ static void ivas_get_Wscaling_factor_enc_fx( test(); IF( EQ_16( active_w, 1 ) && ( dyn_active_w_flag == 0 ) ) { Word16 guard_bits, q_Gw_sq, q_g_sq, q_min, tmp_exp; Word16 shift, guard_bits, q_Gw_sq, q_g_sq, q_min, tmp_exp; Word32 Gw_sq, g_sq, tmp; g_sq = 0; Loading @@ -1786,14 +1792,28 @@ static void ivas_get_Wscaling_factor_enc_fx( Gw_sq = BASOP_Util_Divide3232_Scale( cov_real[0][0][b], L_max( postpred_cov_re[0][0], IVAS_FIX_EPS ), &tmp_exp ); // 15-(tmp_exp-(q_cov_real[0][0][b]- q_postpred_cov_re)) q_Gw_sq = add( sub( 15, tmp_exp ), sub( q_cov_real[0][0][b], q_postpred_cov_re ) ); guard_bits = find_guarded_bits_fx( num_ch ); shift = MAX16B; move16(); FOR( ch = 0; ch < sub( num_ch, 1 ); ch++ ) FOR( ch = 0; ch < ( num_ch - 1 ); ch++ ) { IF( pred_coeffs_re[ch][b] != 0 ) { shift = s_min( shift, norm_l( pred_coeffs_re[ch][b] ) ); } } guard_bits = find_guarded_bits_fx( num_ch ); if ( EQ_16( shift, MAX16B ) ) { abs_val = L_shr( Mpy_32_32( pred_coeffs_re[ch][b], pred_coeffs_re[ch][b] ), guard_bits ); // q=2*q_pred_coeffs_re-guard_bits-31 shift = 0; move16(); } FOR( ch = 0; ch < ( num_ch - 1 ); ch++ ) { abs_val = L_shr( Mpy_32_32( L_shl( pred_coeffs_re[ch][b], shift ), L_shl( pred_coeffs_re[ch][b], shift ) ), guard_bits ); // q=2*q_pred_coeffs_re-guard_bits-31 g_sq = L_add( g_sq, abs_val ); // q=2*q_pred_coeffs_re-guard_bits-31 } q_g_sq = sub( add( q_pred_coeffs_re, q_pred_coeffs_re ), add( 31, guard_bits ) ); q_g_sq = sub( shl( add( q_pred_coeffs_re, shift ), 1 ), add( 31, guard_bits ) ); tmp = Mpy_32_32( ONE_IN_Q30 /*4 in Q28*/, Mpy_32_32( dm_f_local, g_sq ) ); // q_g_sq+28-31 q_tmp = sub( q_g_sq, 3 ); Loading lib_enc/acelp_core_enc.c +4 −0 Original line number Diff line number Diff line Loading @@ -515,6 +515,10 @@ ivas_error acelp_core_enc( * Configure ACELP bit allocation *-----------------------------------------------------------------*/ Word16 temp = getScaleFactor16( st->hGSCEnc->last_exc_dct_in_fx, L_FRAME16k ); Scale_sig( st->hGSCEnc->last_exc_dct_in_fx, L_FRAME16k, temp ); st->hGSCEnc->Q_last_exc_dct_in = add( st->hGSCEnc->Q_last_exc_dct_in, temp ); move16(); nb_bits = 0; move16(); st->acelp_cfg.FEC_mode = 0; Loading lib_enc/analy_sp_fx.c +1 −1 Original line number Diff line number Diff line Loading @@ -692,7 +692,7 @@ void ivas_analy_sp_fx_front( move32(); /* tmp = (input[i] + input[i+Len]+0.001f)/2.0f */ // Ltmp = L_max( L_shr( 21474, sub( Q31, add( Q_new, QSCALE ) ) ), L_add( L_shr( Bin_E[i], 1 ), L_shr( Bin_E[i + L_FFT / 2], 1 ) ) ); Ltmp = L_shr( L_add( Bin_E[i], Bin_E[i + L_FFT / 2] ), 1 ); // average Ltmp = L_add( L_shr( Bin_E[i], 1 ), L_shr( Bin_E[i + L_FFT / 2], 1 ) ); // average if ( Ltmp == 0 ) { // Ltmp = L_min( L_shr( 21474, sub( Q31, add( Q_new, QSCALE - 2 ) ) ), 1 ); Loading Loading
lib_com/ivas_cnst.h +2 −2 Original line number Diff line number Diff line Loading @@ -1306,7 +1306,7 @@ enum #define MASA_COHERENCE_TOLERANCE 0.1f #define MASA_COHERENCE_THRESHOLD 0.1f #ifdef IVAS_FLOAT_FIXED #define MASA_COHERENCE_TOLERANCE_FX 419430 // 0.1 in Q22 #define MASA_COHERENCE_TOLERANCE_FX 3277/*0.1 Q15*/ #define MASA_COHERENCE_THRESHOLD_FX 214748365 // 0.1 in Q31 #endif #define MASA_RATIO_TOLERANCE 0.1f Loading @@ -1314,7 +1314,7 @@ enum #define MASA_ANGLE_TOLERANCE 0.5f #ifdef IVAS_FLOAT_FIXED #define MASA_RATIO_THRESHOLD_FX 214748365 // 0.1 in Q31 #define MASA_RATIO_TOLERANCE_FX 419430 // 0.1 in Q22 #define MASA_RATIO_TOLERANCE_FX 214748364/*0.1 Q30*/ #define MASA_ANGLE_TOLERANCE_FX ONE_IN_Q21 // 0.5 in Q22 #endif #define MASA_LIMIT_NO_BANDS_SUR_COH 8 Loading
lib_com/ivas_fb_mixer.c +4 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,10 @@ ivas_error ivas_FB_mixer_open_fx( move16(); } #ifdef MSAN_FIX set16_fx( hFbMixer->q_ppFilterbank_prior_input_fx, 0, IVAS_MAX_FB_MIXER_IN_CH ); #endif test(); IF( ( NE_16( fb_cfg->active_w_mixing, -1 ) ) && ( fb_cfg->num_out_chans > 0 ) ) { Loading
lib_com/ivas_spar_com.c +33 −13 Original line number Diff line number Diff line Loading @@ -1201,18 +1201,24 @@ static void ivas_get_pred_coeffs_enc_fx( move32(); dm_v_re_q[i][b] = sub( add( add( dm_v_re_q[i][b], DM_F_q[b] ), tmp_shift ), 32 ); move16(); if ( ppDM_Fv_re[i][b] == 0 ) { dm_v_re_q[i][b] = Q31; move16(); } // if ( ppDM_Fv_re[i][b] == 0 ) //{ // dm_v_re_q[i][b] = Q31; // move16(); // } IF( ppPred_coeffs_re[i][b] ) { *q_pred_coeffs = s_min( *q_pred_coeffs, q_ppPred_coeffs_re[i][b] ); move16(); } IF( ppDM_Fv_re[i][b] ) { *q_dm_fv_re = s_min( *q_dm_fv_re, dm_v_re_q[i][b] ); move16(); } } } FOR( i = 0; i < pred_dim; i++ ) { FOR( b = start_band; b < end_band; b++ ) Loading Loading @@ -1772,7 +1778,7 @@ static void ivas_get_Wscaling_factor_enc_fx( test(); IF( EQ_16( active_w, 1 ) && ( dyn_active_w_flag == 0 ) ) { Word16 guard_bits, q_Gw_sq, q_g_sq, q_min, tmp_exp; Word16 shift, guard_bits, q_Gw_sq, q_g_sq, q_min, tmp_exp; Word32 Gw_sq, g_sq, tmp; g_sq = 0; Loading @@ -1786,14 +1792,28 @@ static void ivas_get_Wscaling_factor_enc_fx( Gw_sq = BASOP_Util_Divide3232_Scale( cov_real[0][0][b], L_max( postpred_cov_re[0][0], IVAS_FIX_EPS ), &tmp_exp ); // 15-(tmp_exp-(q_cov_real[0][0][b]- q_postpred_cov_re)) q_Gw_sq = add( sub( 15, tmp_exp ), sub( q_cov_real[0][0][b], q_postpred_cov_re ) ); guard_bits = find_guarded_bits_fx( num_ch ); shift = MAX16B; move16(); FOR( ch = 0; ch < sub( num_ch, 1 ); ch++ ) FOR( ch = 0; ch < ( num_ch - 1 ); ch++ ) { IF( pred_coeffs_re[ch][b] != 0 ) { shift = s_min( shift, norm_l( pred_coeffs_re[ch][b] ) ); } } guard_bits = find_guarded_bits_fx( num_ch ); if ( EQ_16( shift, MAX16B ) ) { abs_val = L_shr( Mpy_32_32( pred_coeffs_re[ch][b], pred_coeffs_re[ch][b] ), guard_bits ); // q=2*q_pred_coeffs_re-guard_bits-31 shift = 0; move16(); } FOR( ch = 0; ch < ( num_ch - 1 ); ch++ ) { abs_val = L_shr( Mpy_32_32( L_shl( pred_coeffs_re[ch][b], shift ), L_shl( pred_coeffs_re[ch][b], shift ) ), guard_bits ); // q=2*q_pred_coeffs_re-guard_bits-31 g_sq = L_add( g_sq, abs_val ); // q=2*q_pred_coeffs_re-guard_bits-31 } q_g_sq = sub( add( q_pred_coeffs_re, q_pred_coeffs_re ), add( 31, guard_bits ) ); q_g_sq = sub( shl( add( q_pred_coeffs_re, shift ), 1 ), add( 31, guard_bits ) ); tmp = Mpy_32_32( ONE_IN_Q30 /*4 in Q28*/, Mpy_32_32( dm_f_local, g_sq ) ); // q_g_sq+28-31 q_tmp = sub( q_g_sq, 3 ); Loading
lib_enc/acelp_core_enc.c +4 −0 Original line number Diff line number Diff line Loading @@ -515,6 +515,10 @@ ivas_error acelp_core_enc( * Configure ACELP bit allocation *-----------------------------------------------------------------*/ Word16 temp = getScaleFactor16( st->hGSCEnc->last_exc_dct_in_fx, L_FRAME16k ); Scale_sig( st->hGSCEnc->last_exc_dct_in_fx, L_FRAME16k, temp ); st->hGSCEnc->Q_last_exc_dct_in = add( st->hGSCEnc->Q_last_exc_dct_in, temp ); move16(); nb_bits = 0; move16(); st->acelp_cfg.FEC_mode = 0; Loading
lib_enc/analy_sp_fx.c +1 −1 Original line number Diff line number Diff line Loading @@ -692,7 +692,7 @@ void ivas_analy_sp_fx_front( move32(); /* tmp = (input[i] + input[i+Len]+0.001f)/2.0f */ // Ltmp = L_max( L_shr( 21474, sub( Q31, add( Q_new, QSCALE ) ) ), L_add( L_shr( Bin_E[i], 1 ), L_shr( Bin_E[i + L_FFT / 2], 1 ) ) ); Ltmp = L_shr( L_add( Bin_E[i], Bin_E[i + L_FFT / 2] ), 1 ); // average Ltmp = L_add( L_shr( Bin_E[i], 1 ), L_shr( Bin_E[i + L_FFT / 2], 1 ) ); // average if ( Ltmp == 0 ) { // Ltmp = L_min( L_shr( 21474, sub( Q31, add( Q_new, QSCALE - 2 ) ) ), 1 ); Loading