Loading lib_enc/nelp_enc_fx.c +44 −0 Original line number Diff line number Diff line Loading @@ -354,9 +354,11 @@ void nelp_encoder_fx( move32(); Word16 BP1_ORDER; Word16 rf_flag; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif SC_VBR_ENC_HANDLE hSC_VBR = st_fx->hSC_VBR; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; Loading Loading @@ -422,7 +424,11 @@ void nelp_encoder_fx( E1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc E1_fx = L_mac0_sat( E1_fx, in_fx[i], in_fx[i] ); /*Q(qE1+qE1) */ //??sat #else E1_fx = L_mac0_o( E1_fx, in_fx[i], in_fx[i], &Overflow ); /*Q(qE1+qE1) */ #endif } qE1 = shl( qE1, 1 ); Loading @@ -438,7 +444,11 @@ void nelp_encoder_fx( EL1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EL1_fx = L_mac0_sat( EL1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qIn) */ //??sat #else EL1_fx = L_mac0_o( EL1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qIn) */ #endif } qEL1 = shl( qEL1, 1 ); Loading @@ -454,7 +464,11 @@ void nelp_encoder_fx( EH1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EH1_fx = L_mac0_sat( EH1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qEH1) */ //??sat #else EH1_fx = L_mac0_o( EH1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qEH1) */ #endif } qEH1 = 2 * qEH1; move16(); Loading @@ -470,7 +484,11 @@ void nelp_encoder_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < (Word16) ( ( i + 1 ) * lag ); j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/lag); */ Loading @@ -494,7 +512,11 @@ void nelp_encoder_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < L_FRAME; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/(L_FRAME-(lag*i))); */ Loading Loading @@ -1099,9 +1121,11 @@ void nelp_encoder_ivas_fx( move32(); Word16 BP1_ORDER; Word16 rf_flag; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif SC_VBR_ENC_HANDLE hSC_VBR = st_fx->hSC_VBR; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; Loading Loading @@ -1169,7 +1193,11 @@ void nelp_encoder_ivas_fx( E1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc E1_fx = L_mac0_sat( E1_fx, in_fx[i], in_fx[i] ); /*Q(qE1+qE1) */ //??sat #else E1_fx = L_mac0_o( E1_fx, in_fx[i], in_fx[i], &Overflow ); /*Q(qE1+qE1) */ #endif } qE1 = shl( qE1, 1 ); Loading @@ -1184,7 +1212,11 @@ void nelp_encoder_ivas_fx( EL1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EL1_fx = L_mac0_sat( EL1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qIn) */ //??sat #else EL1_fx = L_mac0_o( EL1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qIn) */ #endif } qEL1 = shl( qEL1, 1 ); Loading @@ -1200,7 +1232,11 @@ void nelp_encoder_ivas_fx( EH1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EH1_fx = L_mac0_sat( EH1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qEH1) */ //??sat #else EH1_fx = L_mac0_o( EH1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qEH1) */ #endif } qEH1 = shl( qEH1, 1 ); move16(); Loading @@ -1215,7 +1251,11 @@ void nelp_encoder_ivas_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < (Word16) ( ( i + 1 ) * lag ); j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/lag); */ Loading @@ -1239,7 +1279,11 @@ void nelp_encoder_ivas_fx( Ltemp = L_deposit_l( 0 ); FOR( j = i_mult( i, lag ); j < L_FRAME; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/(L_FRAME-(lag*i))); */ Loading lib_enc/nois_est_fx.c +99 −16 Original line number Diff line number Diff line Loading @@ -102,12 +102,18 @@ static Word16 noise_est_ln_q8_fx( { Word16 e_ener, f_ener; Word32 L_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_add_sat( L_enr, L_shl( (Word32) 1L, q_new_plus_q_scale ) ); /* +1.0f */ //??sat #else L_tmp = L_add_o( L_enr, L_shl( (Word32) 1L, q_new_plus_q_scale ), &Overflow ); /* +1.0f */ #endif if ( flag_add1p0 == 0 ) { L_tmp = L_add( L_enr, 0 ); /* +0 , no offset */ Loading Loading @@ -664,8 +670,10 @@ void noise_est_down_fx( Word16 scale; Word32 totalNoise_temp; Word32 L_Etot, L_Etot_last, L_Etot_v_h2, L_Etot_v; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif #endif L_Etot = L_shl( Etot, 16 ); /*Q24 for later AR1 computations*/ Loading @@ -681,7 +689,11 @@ void noise_est_down_fx( totalNoise_temp = L_deposit_l( 0 ); FOR( i = min_band; i <= max_band; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc totalNoise_temp = L_add_sat( totalNoise_temp, bckr[i] ); /*Q_new+QSCALE*/ //??sat #else totalNoise_temp = L_add_o( totalNoise_temp, bckr[i], &Overflow ); /*Q_new+QSCALE*/ #endif } totalNoise_temp = L_max( totalNoise_temp, L_shl( e_min, 4 ) ); Loading @@ -705,7 +717,11 @@ void noise_est_down_fx( FOR( i = 0; i < NB_BANDS; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_add_sat( L_shr_r( *pt1, 1 ), L_shr_r( *pt2, 1 ) ); //??sat #else Ltmp = L_add_o( L_shr_r( *pt1, 1 ), L_shr_r( *pt2, 1 ), &Overflow ); #endif /*Ltmp = L_shr_r(L_add(*pt1,*pt2),1);*/ enr[i] = Ltmp; move32(); /*Q_new+QSCALE*/ Loading Loading @@ -1003,9 +1019,11 @@ void noise_est_fx( } GSC_ENC_HANDLE hGSCEnc = st_fx->hGSCEnc; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif /*-----------------------------------------------------------------* Loading Loading @@ -1101,8 +1119,13 @@ void noise_est_fx( Ltmp = L_deposit_h( corr_shift ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[0], 10923 ); #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_mac_sat( Ltmp, st_fx->voicing_fx[1], 10923 ); //??sat wtmp = mac_r_sat( Ltmp, st_fx->voicing_fx[2], 10923 ); //??sat #else Ltmp = L_mac_o( Ltmp, st_fx->voicing_fx[1], 10923, &Overflow ); wtmp = mac_ro( Ltmp, st_fx->voicing_fx[2], 10923, &Overflow ); #endif tmp_pc = pc; move16(); Loading Loading @@ -1155,7 +1178,11 @@ void noise_est_fx( FOR( i = 10; i <= st_fx->max_band; i++ ) { Lnum = L_max( *pt1, *pt2 ); /* Don't need if anymore */ #ifdef ISSUE_1867_replace_overflow_libenc Lsum_den = L_add_sat( Lsum_den, Lnum ); //??sat #else Lsum_den = L_add_o( Lsum_den, Lnum, &Overflow ); #endif Ltmpden = L_min( *pt1, *pt2 ); if ( Ltmpden == 0 ) { Loading Loading @@ -1211,8 +1238,8 @@ void noise_est_fx( /* calculation of energy in the rest of bands */ Ltmp2 = sum32_fx( &fr_bands[10], sub( st_fx->max_band, 9 ) ); #ifdef ISSUE_1796_replace_shl_o wtmp = shl_sat( 1, sub( add( Q_new, QSCALE ), 1 ) ); #ifdef ISSUE_1867_replace_overflow_libenc wtmp = shl_sat( 1, sub( add( Q_new, QSCALE ), 1 ) ); //??sat #else wtmp = shl_o( 1, sub( add( Q_new, QSCALE ), 1 ), &Overflow ); #endif Loading @@ -1232,8 +1259,8 @@ void noise_est_fx( ExpDen = norm_l( Ltmp ); den = extract_h( L_shl( Ltmp, ExpDen ) ); num = div_s( num, den ); #ifdef ISSUE_1799_replace_L_shr_o noise_chartmp = extract_h( L_shr_sat( num, add( sub( ExpNum, ExpDen ), 4 - 16 ) ) ); /* Q11 */ #ifdef ISSUE_1867_replace_overflow_libenc noise_chartmp = extract_h( L_shr_sat( num, add( sub( ExpNum, ExpDen ), 4 - 16 ) ) ); /* Q11 */ //??sat #else noise_chartmp = extract_h( L_shr_o( num, add( sub( ExpNum, ExpDen ), 4 - 16 ), &Overflow ) ); /* Q11 */ #endif Loading Loading @@ -1279,7 +1306,11 @@ void noise_est_fx( /* alpha = 0.064f * ftemp + 0.75f; */ Ltmp = Mult_32_16( (Word32) 137438953L, tmp ); /* Q31(.064)+Q8+1-16 --> Q24 */ Ltmp = L_mac( Ltmp, 256, 24576 ); /* Q8+Q15(.75)+1 --> Q24 */ #ifdef ISSUE_1867_replace_overflow_libenc alpha = round_fx_sat( L_shl_sat( Ltmp, 7 ) ); /*Q24 +7 --> Q31 Q15*/ //??sat //??sat #else alpha = round_fx_o( L_shl_o( Ltmp, 7, &Overflow ), &Overflow ); /*Q24 +7 --> Q31 Q15*/ #endif /*if( alpha > 0.999f { alpha = 0.999f;} */ alpha = s_min( alpha, 32735 ); /*.999 in Q15*/ Loading Loading @@ -1315,8 +1346,13 @@ void noise_est_fx( /* tmp_enr = enr[i] + 1.0f; */ tmp_Q = add( Q_new, Q_SCALE ); Ltmp = L_shl( (Word32) 1L, tmp_Q ); /* 1.0 added in the right dynamic domain */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp_enr = L_add_sat( enr[i], Ltmp ); /* enr scale dynamic */ //??sat L_tmp_ave_enr = L_add_sat( hNoiseEst->ave_enr_fx[i], Ltmp ); /* ave__enr scale dynamic */ //??sat #else L_tmp_enr = L_add_o( enr[i], Ltmp, &Overflow ); /* enr scale dynamic */ L_tmp_ave_enr = L_add_o( hNoiseEst->ave_enr_fx[i], Ltmp, &Overflow ); /* ave__enr scale dynamic */ #endif IF( LE_32( non_sta, th_sta ) ) /* Just to limit the saturation */ { Loading @@ -1335,8 +1371,8 @@ void noise_est_fx( den = extract_h( L_shl( Lden, ExpDen ) ); num = div_s( num, den ); Ltmp = Mult_32_16( non_sta, num ); #ifdef ISSUE_1799_replace_L_shr_o non_sta = L_shr_sat( Ltmp, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc non_sta = L_shr_sat( Ltmp, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else non_sta = L_shr_o( Ltmp, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading @@ -1361,7 +1397,11 @@ void noise_est_fx( /* ave_enr2:: calculation of another non-stationarity measure (following attacks) */ Ltmp = L_shl( (Word32) 1L, tmp_Q ); /* 1.0 added in the right dynamic domain */ /*L_tmp_enr = L_add(enr[i] , Ltmp );*/ /* enr scale dynamic , done above */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp_ave_enr2 = L_add_sat( hNoiseEst->ave_enr2_fx[i], Ltmp ); /* ave__enr scale dynamic */ //??sat #else L_tmp_ave_enr2 = L_add_o( hNoiseEst->ave_enr2_fx[i], Ltmp, &Overflow ); /* ave__enr scale dynamic */ #endif IF( LE_32( Lnon_sta2, th_sta ) ) /* Just to limit the saturation */ { Lnum = L_max( L_tmp_enr, L_tmp_ave_enr2 ); Loading @@ -1374,8 +1414,8 @@ void noise_est_fx( den = extract_h( L_shl( Lden, ExpDen ) ); num = div_s( num, den ); Ltmp1 = Mult_32_16( Lnon_sta2, num ); #ifdef ISSUE_1799_replace_L_shr_o Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else Lnon_sta2 = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading @@ -1397,7 +1437,11 @@ void noise_est_fx( /* log_enr = (float)ln_fx(enr[i]); */ log_enr16 = noise_est_ln_q8_fx( enr[i], 0, tmp_Q ); wtmp = abs_s( sub( log_enr16, hSpMusClas->past_log_enr_fx[i - START_BAND_SPMUS] ) ); #ifdef ISSUE_1867_replace_overflow_libenc *non_staX = add_sat( *non_staX, wtmp ); //??sat #else *non_staX = add_o( *non_staX, wtmp, &Overflow ); #endif move16(); /* Q8 */ hSpMusClas->past_log_enr_fx[i - START_BAND_SPMUS] = log_enr16; move16(); Loading @@ -1413,7 +1457,11 @@ void noise_est_fx( tmp_floor = LN_E_MIN_PLUS_ONE_FX; move16(); /* non dynamic init constant in Q8 */ tmp_floor = noise_est_ln_q8_fx( hNoiseEst->bckr_fx[i], 1, tmp_Q ); #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } ELSE /*ini_frame < 100*/ { Loading @@ -1422,7 +1470,11 @@ void noise_est_fx( tmp_floor = LN_E_MIN_PLUS_ONE_FX; move16(); /* non dynamic init constant in Q8 */ tmp_floor = noise_est_ln_q8_fx( E_MIN_FX, 1, tmp_Q ); #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } } Loading Loading @@ -1534,7 +1586,11 @@ void noise_est_fx( Ltmp = eps_quota_fx( epsP_h[0], epsP_l[0], epsP_h[2], epsP_l[2], 12 ); /* Word32 Q12 */ BASOP_SATURATE_WARNING_OFF_EVS /* may saturate*/ #ifdef ISSUE_1867_replace_overflow_libenc epsP_0_2 = round_fx_sat( L_shl_sat( Ltmp, 16 ) ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ //??sat //??sat #else epsP_0_2 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ #endif BASOP_SATURATE_WARNING_ON_EVS epsP_0_2 = s_max( 0, epsP_0_2 ); /* min value is 0 , Q12 */ Loading Loading @@ -1573,8 +1629,12 @@ void noise_est_fx( Ltmp = eps_quota_fx( epsP_h[2], epsP_l[2], epsP_h[16], epsP_l[16], 12 ); /* Word32 Q12 */ BASOP_SATURATE_WARNING_OFF_EVS /* may saturate*/ epsP_2_16 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ #ifdef ISSUE_1867_replace_overflow_libenc epsP_2_16 = round_fx_sat( L_shl_sat( Ltmp, 16 ) ); /* Q12+16 -16 -> Q12 ,*/ #else epsP_2_16 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 ,*/ #endif /* NB saturation in Q12 sets max value to 7, 999 */ BASOP_SATURATE_WARNING_ON_EVS epsP_2_16 = s_max( 0, epsP_2_16 ); /* min value is 0 , Q12 */ Loading Loading @@ -1696,7 +1756,11 @@ void noise_est_fx( *-----------------------------------------------------------------*/ Ltmp = L_mult( st_fx->voicing_fx[0], 16384 ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[1], 16384 ); #ifdef ISSUE_1867_replace_overflow_libenc cor_tmp = mac_r_sat( Ltmp, corr_shift, MAX_16 ); //??sat #else cor_tmp = mac_ro( Ltmp, corr_shift, MAX_16, &Overflow ); #endif LepsP = eps_quota_fx( epsP_h[2], epsP_l[2], epsP_h[16], epsP_l[16], 11 ); /* L_epsP in Q11 */ Loading Loading @@ -2299,9 +2363,11 @@ void noise_est_ivas_fx( Le_min_scaled = L_shl( E_MIN_FXQ31, sub( q_fr_bands, Q31 ) ); // q_fr_bands GSC_ENC_HANDLE hGSCEnc = st_fx->hGSCEnc; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif /* Check if LR-VAD */ Loading Loading @@ -2418,8 +2484,13 @@ void noise_est_ivas_fx( Ltmp = L_deposit_h( corr_shift ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[0], 10923 ); #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_mac_sat( Ltmp, st_fx->voicing_fx[1], 10923 ); //??sat wtmp = mac_r_sat( Ltmp, st_fx->voicing_fx[2], 10923 ); //??sat #else Ltmp = L_mac_o( Ltmp, st_fx->voicing_fx[1], 10923, &Overflow ); wtmp = mac_ro( Ltmp, st_fx->voicing_fx[2], 10923, &Overflow ); #endif tmp_pc = pc; move16(); Loading Loading @@ -2565,8 +2636,8 @@ void noise_est_ivas_fx( { /* ftemp2 /= ftemp */ num = div_s( extract_h( Ltmp2 ), extract_h( Ltmp ) ); // 15+exp2-exp #ifdef ISSUE_1796_replace_shl_o noise_chartmp = shl_sat( num, sub( sub( exp, exp2 ), 4 ) ); // 15+exp2-exp1 -> Q11 #ifdef ISSUE_1867_replace_overflow_libenc noise_chartmp = shl_sat( num, sub( sub( exp, exp2 ), 4 ) ); // 15+exp2-exp1 -> Q11 //??sat #else noise_chartmp = shl_o( num, sub( sub( exp, exp2 ), 4 ), &Overflow ); // 15+exp2-exp1 -> Q11 #endif Loading Loading @@ -2635,7 +2706,11 @@ void noise_est_ivas_fx( /* alpha = 0.064f * ftemp + 0.75f; */ Ltmp = Madd_32_16( 12582912 /* 0.75 in Q24*/, 137438953, tmp ); // Q24 #ifdef ISSUE_1867_replace_overflow_libenc alpha = round_fx_sat( L_shl_sat( Ltmp, 7 ) ); /*Q24 +7 --> Q31 Q15*/ //??sat //??sat #else alpha = round_fx_o( L_shl_o( Ltmp, 7, &Overflow ), &Overflow ); /*Q24 +7 --> Q31 Q15*/ #endif /*if( alpha > 0.999f { alpha = 0.999f;} */ alpha = s_min( alpha, 32735 ); /*.999 in Q15*/ Loading Loading @@ -2699,8 +2774,8 @@ void noise_est_ivas_fx( num = div_s( num, den ); // 15+ExpNum-ExpDen Ltmp1 = Mult_32_16( non_sta, num ); // 15+ExpNum-ExpDen+10-15 #ifdef ISSUE_1799_replace_L_shr_o non_sta = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc non_sta = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else non_sta = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading Loading @@ -2742,8 +2817,8 @@ void noise_est_ivas_fx( num = div_s( num, den ); // 15+ExpNum-ExpDen Ltmp1 = Mult_32_16( Lnon_sta2, num ); // 15+ExpNum-ExpDen+10-15 #ifdef ISSUE_1799_replace_L_shr_o Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else Lnon_sta2 = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading Loading @@ -2796,7 +2871,11 @@ void noise_est_ivas_fx( IF( LT_16( ini_frame, 100 ) ) { #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, LN_E_MIN_PLUS_ONE_FX ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, LN_E_MIN_PLUS_ONE_FX ) ), &Overflow ); /* Q8 */ #endif } ELSE /*ini_frame < 100*/ { Loading @@ -2818,7 +2897,11 @@ void noise_est_ivas_fx( Ltmp1 = Mpy_32_16_1( Ltmp1, 22713 ); // Q15 tmp_floor = round_fx( L_shl( Ltmp1, 9 ) ); /* Q8 */ } #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } } Loading lib_enc/normalizecoefs_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -29,9 +29,11 @@ void normalizecoefs_fx( Word16 *pcoefs16; Word32 *pcoefs; Word16 subvec_start, subvec_end, num_coefs; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); #endif #endif pcoefs = coefs; pcoefs16 = coefs_norm; Loading @@ -55,7 +57,11 @@ void normalizecoefs_fx( *pcoefs = Mpy_32_16_1( *pcoefs, INV2POWHALF ); move32(); } #ifdef ISSUE_1867_replace_overflow_libenc *pcoefs16++ = round_fx_sat( L_shl_sat( *pcoefs++, 16 - k ) ); /* Q12 */ //??sat //??sat #else *pcoefs16++ = round_fx_o( L_shl_o( *pcoefs++, 16 - k, &Overflow ), &Overflow ); /* Q12 */ #endif move16(); } } Loading lib_enc/pit_enc_fx.c +24 −0 Original line number Diff line number Diff line Loading @@ -1518,9 +1518,11 @@ void norm_corr_ivas_fx( Word16 h_e, e_max; Word32 L_tmp; Word64 W_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); #endif #endif k = negate( t_min ); Loading @@ -1542,7 +1544,11 @@ void norm_corr_ivas_fx( L_tmp = L_mac( 0, xn[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], excf[i] ); // (Q_new - 1) + (Q_new - h_e) + 1 //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], excf[i], &Overflow ); // (Q_new - 1) + (Q_new - h_e) + 1 #endif } exp = norm_l( L_tmp ); L_tmp = L_shl( L_tmp, exp ); Loading Loading @@ -1613,9 +1619,11 @@ void norm_corr_fx( Word16 corr, exp_corr, norm, exp_norm, exp, scale; Word16 excf[L_FRAME16k]; Word32 L_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif k = negate( t_min ); Loading @@ -1627,10 +1635,18 @@ void norm_corr_fx( conv_fx( &exc[k], h, excf, L_subfr ); /* Compute rounded down 1/sqrt(energy of xn[]) */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( 1, xn[0], xn[0] ); //??sat #else L_tmp = L_mac_o( 1, xn[0], xn[0], &Overflow ); #endif FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], xn[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], xn[i], &Overflow ); #endif } exp = norm_l( L_tmp ); exp = sub( 30, exp ); Loading @@ -1649,7 +1665,11 @@ void norm_corr_fx( L_tmp = L_mac( 1, xn[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], excf[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], excf[i], &Overflow ); #endif } exp = norm_l( L_tmp ); L_tmp = L_shl( L_tmp, exp ); Loading @@ -1660,7 +1680,11 @@ void norm_corr_fx( L_tmp = L_mac( 1, excf[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, excf[i], excf[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, excf[i], excf[i], &Overflow ); #endif } exp = norm_l( L_tmp ); Loading lib_enc/pitch_ol2_fx.c +55 −12 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
lib_enc/nelp_enc_fx.c +44 −0 Original line number Diff line number Diff line Loading @@ -354,9 +354,11 @@ void nelp_encoder_fx( move32(); Word16 BP1_ORDER; Word16 rf_flag; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif SC_VBR_ENC_HANDLE hSC_VBR = st_fx->hSC_VBR; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; Loading Loading @@ -422,7 +424,11 @@ void nelp_encoder_fx( E1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc E1_fx = L_mac0_sat( E1_fx, in_fx[i], in_fx[i] ); /*Q(qE1+qE1) */ //??sat #else E1_fx = L_mac0_o( E1_fx, in_fx[i], in_fx[i], &Overflow ); /*Q(qE1+qE1) */ #endif } qE1 = shl( qE1, 1 ); Loading @@ -438,7 +444,11 @@ void nelp_encoder_fx( EL1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EL1_fx = L_mac0_sat( EL1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qIn) */ //??sat #else EL1_fx = L_mac0_o( EL1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qIn) */ #endif } qEL1 = shl( qEL1, 1 ); Loading @@ -454,7 +464,11 @@ void nelp_encoder_fx( EH1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EH1_fx = L_mac0_sat( EH1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qEH1) */ //??sat #else EH1_fx = L_mac0_o( EH1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qEH1) */ #endif } qEH1 = 2 * qEH1; move16(); Loading @@ -470,7 +484,11 @@ void nelp_encoder_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < (Word16) ( ( i + 1 ) * lag ); j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/lag); */ Loading @@ -494,7 +512,11 @@ void nelp_encoder_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < L_FRAME; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/(L_FRAME-(lag*i))); */ Loading Loading @@ -1099,9 +1121,11 @@ void nelp_encoder_ivas_fx( move32(); Word16 BP1_ORDER; Word16 rf_flag; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif SC_VBR_ENC_HANDLE hSC_VBR = st_fx->hSC_VBR; BSTR_ENC_HANDLE hBstr = st_fx->hBstr; Loading Loading @@ -1169,7 +1193,11 @@ void nelp_encoder_ivas_fx( E1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc E1_fx = L_mac0_sat( E1_fx, in_fx[i], in_fx[i] ); /*Q(qE1+qE1) */ //??sat #else E1_fx = L_mac0_o( E1_fx, in_fx[i], in_fx[i], &Overflow ); /*Q(qE1+qE1) */ #endif } qE1 = shl( qE1, 1 ); Loading @@ -1184,7 +1212,11 @@ void nelp_encoder_ivas_fx( EL1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EL1_fx = L_mac0_sat( EL1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qIn) */ //??sat #else EL1_fx = L_mac0_o( EL1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qIn) */ #endif } qEL1 = shl( qEL1, 1 ); Loading @@ -1200,7 +1232,11 @@ void nelp_encoder_ivas_fx( EH1_fx = L_deposit_l( 0 ); FOR( i = 0; i < L_FRAME; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc EH1_fx = L_mac0_sat( EH1_fx, filtRes_fx[i], filtRes_fx[i] ); /*Q(2*qEH1) */ //??sat #else EH1_fx = L_mac0_o( EH1_fx, filtRes_fx[i], filtRes_fx[i], &Overflow ); /*Q(2*qEH1) */ #endif } qEH1 = shl( qEH1, 1 ); move16(); Loading @@ -1215,7 +1251,11 @@ void nelp_encoder_ivas_fx( Ltemp = L_deposit_l( 0 ); FOR( j = (Word16) ( i * lag ); j < (Word16) ( ( i + 1 ) * lag ); j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/lag); */ Loading @@ -1239,7 +1279,11 @@ void nelp_encoder_ivas_fx( Ltemp = L_deposit_l( 0 ); FOR( j = i_mult( i, lag ); j < L_FRAME; j++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltemp = L_mac0_sat( Ltemp, in_fx[j], in_fx[j] ); /*Q(2*qGain) */ //??sat #else Ltemp = L_mac0_o( Ltemp, in_fx[j], in_fx[j], &Overflow ); /*Q(2*qGain) */ #endif } /*Gains[i] = (float) sqrt(Gains[i]/(L_FRAME-(lag*i))); */ Loading
lib_enc/nois_est_fx.c +99 −16 Original line number Diff line number Diff line Loading @@ -102,12 +102,18 @@ static Word16 noise_est_ln_q8_fx( { Word16 e_ener, f_ener; Word32 L_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_add_sat( L_enr, L_shl( (Word32) 1L, q_new_plus_q_scale ) ); /* +1.0f */ //??sat #else L_tmp = L_add_o( L_enr, L_shl( (Word32) 1L, q_new_plus_q_scale ), &Overflow ); /* +1.0f */ #endif if ( flag_add1p0 == 0 ) { L_tmp = L_add( L_enr, 0 ); /* +0 , no offset */ Loading Loading @@ -664,8 +670,10 @@ void noise_est_down_fx( Word16 scale; Word32 totalNoise_temp; Word32 L_Etot, L_Etot_last, L_Etot_v_h2, L_Etot_v; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; #endif #endif L_Etot = L_shl( Etot, 16 ); /*Q24 for later AR1 computations*/ Loading @@ -681,7 +689,11 @@ void noise_est_down_fx( totalNoise_temp = L_deposit_l( 0 ); FOR( i = min_band; i <= max_band; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc totalNoise_temp = L_add_sat( totalNoise_temp, bckr[i] ); /*Q_new+QSCALE*/ //??sat #else totalNoise_temp = L_add_o( totalNoise_temp, bckr[i], &Overflow ); /*Q_new+QSCALE*/ #endif } totalNoise_temp = L_max( totalNoise_temp, L_shl( e_min, 4 ) ); Loading @@ -705,7 +717,11 @@ void noise_est_down_fx( FOR( i = 0; i < NB_BANDS; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_add_sat( L_shr_r( *pt1, 1 ), L_shr_r( *pt2, 1 ) ); //??sat #else Ltmp = L_add_o( L_shr_r( *pt1, 1 ), L_shr_r( *pt2, 1 ), &Overflow ); #endif /*Ltmp = L_shr_r(L_add(*pt1,*pt2),1);*/ enr[i] = Ltmp; move32(); /*Q_new+QSCALE*/ Loading Loading @@ -1003,9 +1019,11 @@ void noise_est_fx( } GSC_ENC_HANDLE hGSCEnc = st_fx->hGSCEnc; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif /*-----------------------------------------------------------------* Loading Loading @@ -1101,8 +1119,13 @@ void noise_est_fx( Ltmp = L_deposit_h( corr_shift ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[0], 10923 ); #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_mac_sat( Ltmp, st_fx->voicing_fx[1], 10923 ); //??sat wtmp = mac_r_sat( Ltmp, st_fx->voicing_fx[2], 10923 ); //??sat #else Ltmp = L_mac_o( Ltmp, st_fx->voicing_fx[1], 10923, &Overflow ); wtmp = mac_ro( Ltmp, st_fx->voicing_fx[2], 10923, &Overflow ); #endif tmp_pc = pc; move16(); Loading Loading @@ -1155,7 +1178,11 @@ void noise_est_fx( FOR( i = 10; i <= st_fx->max_band; i++ ) { Lnum = L_max( *pt1, *pt2 ); /* Don't need if anymore */ #ifdef ISSUE_1867_replace_overflow_libenc Lsum_den = L_add_sat( Lsum_den, Lnum ); //??sat #else Lsum_den = L_add_o( Lsum_den, Lnum, &Overflow ); #endif Ltmpden = L_min( *pt1, *pt2 ); if ( Ltmpden == 0 ) { Loading Loading @@ -1211,8 +1238,8 @@ void noise_est_fx( /* calculation of energy in the rest of bands */ Ltmp2 = sum32_fx( &fr_bands[10], sub( st_fx->max_band, 9 ) ); #ifdef ISSUE_1796_replace_shl_o wtmp = shl_sat( 1, sub( add( Q_new, QSCALE ), 1 ) ); #ifdef ISSUE_1867_replace_overflow_libenc wtmp = shl_sat( 1, sub( add( Q_new, QSCALE ), 1 ) ); //??sat #else wtmp = shl_o( 1, sub( add( Q_new, QSCALE ), 1 ), &Overflow ); #endif Loading @@ -1232,8 +1259,8 @@ void noise_est_fx( ExpDen = norm_l( Ltmp ); den = extract_h( L_shl( Ltmp, ExpDen ) ); num = div_s( num, den ); #ifdef ISSUE_1799_replace_L_shr_o noise_chartmp = extract_h( L_shr_sat( num, add( sub( ExpNum, ExpDen ), 4 - 16 ) ) ); /* Q11 */ #ifdef ISSUE_1867_replace_overflow_libenc noise_chartmp = extract_h( L_shr_sat( num, add( sub( ExpNum, ExpDen ), 4 - 16 ) ) ); /* Q11 */ //??sat #else noise_chartmp = extract_h( L_shr_o( num, add( sub( ExpNum, ExpDen ), 4 - 16 ), &Overflow ) ); /* Q11 */ #endif Loading Loading @@ -1279,7 +1306,11 @@ void noise_est_fx( /* alpha = 0.064f * ftemp + 0.75f; */ Ltmp = Mult_32_16( (Word32) 137438953L, tmp ); /* Q31(.064)+Q8+1-16 --> Q24 */ Ltmp = L_mac( Ltmp, 256, 24576 ); /* Q8+Q15(.75)+1 --> Q24 */ #ifdef ISSUE_1867_replace_overflow_libenc alpha = round_fx_sat( L_shl_sat( Ltmp, 7 ) ); /*Q24 +7 --> Q31 Q15*/ //??sat //??sat #else alpha = round_fx_o( L_shl_o( Ltmp, 7, &Overflow ), &Overflow ); /*Q24 +7 --> Q31 Q15*/ #endif /*if( alpha > 0.999f { alpha = 0.999f;} */ alpha = s_min( alpha, 32735 ); /*.999 in Q15*/ Loading Loading @@ -1315,8 +1346,13 @@ void noise_est_fx( /* tmp_enr = enr[i] + 1.0f; */ tmp_Q = add( Q_new, Q_SCALE ); Ltmp = L_shl( (Word32) 1L, tmp_Q ); /* 1.0 added in the right dynamic domain */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp_enr = L_add_sat( enr[i], Ltmp ); /* enr scale dynamic */ //??sat L_tmp_ave_enr = L_add_sat( hNoiseEst->ave_enr_fx[i], Ltmp ); /* ave__enr scale dynamic */ //??sat #else L_tmp_enr = L_add_o( enr[i], Ltmp, &Overflow ); /* enr scale dynamic */ L_tmp_ave_enr = L_add_o( hNoiseEst->ave_enr_fx[i], Ltmp, &Overflow ); /* ave__enr scale dynamic */ #endif IF( LE_32( non_sta, th_sta ) ) /* Just to limit the saturation */ { Loading @@ -1335,8 +1371,8 @@ void noise_est_fx( den = extract_h( L_shl( Lden, ExpDen ) ); num = div_s( num, den ); Ltmp = Mult_32_16( non_sta, num ); #ifdef ISSUE_1799_replace_L_shr_o non_sta = L_shr_sat( Ltmp, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc non_sta = L_shr_sat( Ltmp, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else non_sta = L_shr_o( Ltmp, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading @@ -1361,7 +1397,11 @@ void noise_est_fx( /* ave_enr2:: calculation of another non-stationarity measure (following attacks) */ Ltmp = L_shl( (Word32) 1L, tmp_Q ); /* 1.0 added in the right dynamic domain */ /*L_tmp_enr = L_add(enr[i] , Ltmp );*/ /* enr scale dynamic , done above */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp_ave_enr2 = L_add_sat( hNoiseEst->ave_enr2_fx[i], Ltmp ); /* ave__enr scale dynamic */ //??sat #else L_tmp_ave_enr2 = L_add_o( hNoiseEst->ave_enr2_fx[i], Ltmp, &Overflow ); /* ave__enr scale dynamic */ #endif IF( LE_32( Lnon_sta2, th_sta ) ) /* Just to limit the saturation */ { Lnum = L_max( L_tmp_enr, L_tmp_ave_enr2 ); Loading @@ -1374,8 +1414,8 @@ void noise_est_fx( den = extract_h( L_shl( Lden, ExpDen ) ); num = div_s( num, den ); Ltmp1 = Mult_32_16( Lnon_sta2, num ); #ifdef ISSUE_1799_replace_L_shr_o Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else Lnon_sta2 = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading @@ -1397,7 +1437,11 @@ void noise_est_fx( /* log_enr = (float)ln_fx(enr[i]); */ log_enr16 = noise_est_ln_q8_fx( enr[i], 0, tmp_Q ); wtmp = abs_s( sub( log_enr16, hSpMusClas->past_log_enr_fx[i - START_BAND_SPMUS] ) ); #ifdef ISSUE_1867_replace_overflow_libenc *non_staX = add_sat( *non_staX, wtmp ); //??sat #else *non_staX = add_o( *non_staX, wtmp, &Overflow ); #endif move16(); /* Q8 */ hSpMusClas->past_log_enr_fx[i - START_BAND_SPMUS] = log_enr16; move16(); Loading @@ -1413,7 +1457,11 @@ void noise_est_fx( tmp_floor = LN_E_MIN_PLUS_ONE_FX; move16(); /* non dynamic init constant in Q8 */ tmp_floor = noise_est_ln_q8_fx( hNoiseEst->bckr_fx[i], 1, tmp_Q ); #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } ELSE /*ini_frame < 100*/ { Loading @@ -1422,7 +1470,11 @@ void noise_est_fx( tmp_floor = LN_E_MIN_PLUS_ONE_FX; move16(); /* non dynamic init constant in Q8 */ tmp_floor = noise_est_ln_q8_fx( E_MIN_FX, 1, tmp_Q ); #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } } Loading Loading @@ -1534,7 +1586,11 @@ void noise_est_fx( Ltmp = eps_quota_fx( epsP_h[0], epsP_l[0], epsP_h[2], epsP_l[2], 12 ); /* Word32 Q12 */ BASOP_SATURATE_WARNING_OFF_EVS /* may saturate*/ #ifdef ISSUE_1867_replace_overflow_libenc epsP_0_2 = round_fx_sat( L_shl_sat( Ltmp, 16 ) ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ //??sat //??sat #else epsP_0_2 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ #endif BASOP_SATURATE_WARNING_ON_EVS epsP_0_2 = s_max( 0, epsP_0_2 ); /* min value is 0 , Q12 */ Loading Loading @@ -1573,8 +1629,12 @@ void noise_est_fx( Ltmp = eps_quota_fx( epsP_h[2], epsP_l[2], epsP_h[16], epsP_l[16], 12 ); /* Word32 Q12 */ BASOP_SATURATE_WARNING_OFF_EVS /* may saturate*/ epsP_2_16 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 , NB saturation in Q12 sets max value to 7,999 */ #ifdef ISSUE_1867_replace_overflow_libenc epsP_2_16 = round_fx_sat( L_shl_sat( Ltmp, 16 ) ); /* Q12+16 -16 -> Q12 ,*/ #else epsP_2_16 = round_fx_o( L_shl_o( Ltmp, 16, &Overflow ), &Overflow ); /* Q12+16 -16 -> Q12 ,*/ #endif /* NB saturation in Q12 sets max value to 7, 999 */ BASOP_SATURATE_WARNING_ON_EVS epsP_2_16 = s_max( 0, epsP_2_16 ); /* min value is 0 , Q12 */ Loading Loading @@ -1696,7 +1756,11 @@ void noise_est_fx( *-----------------------------------------------------------------*/ Ltmp = L_mult( st_fx->voicing_fx[0], 16384 ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[1], 16384 ); #ifdef ISSUE_1867_replace_overflow_libenc cor_tmp = mac_r_sat( Ltmp, corr_shift, MAX_16 ); //??sat #else cor_tmp = mac_ro( Ltmp, corr_shift, MAX_16, &Overflow ); #endif LepsP = eps_quota_fx( epsP_h[2], epsP_l[2], epsP_h[16], epsP_l[16], 11 ); /* L_epsP in Q11 */ Loading Loading @@ -2299,9 +2363,11 @@ void noise_est_ivas_fx( Le_min_scaled = L_shl( E_MIN_FXQ31, sub( q_fr_bands, Q31 ) ); // q_fr_bands GSC_ENC_HANDLE hGSCEnc = st_fx->hGSCEnc; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif /* Check if LR-VAD */ Loading Loading @@ -2418,8 +2484,13 @@ void noise_est_ivas_fx( Ltmp = L_deposit_h( corr_shift ); Ltmp = L_mac( Ltmp, st_fx->voicing_fx[0], 10923 ); #ifdef ISSUE_1867_replace_overflow_libenc Ltmp = L_mac_sat( Ltmp, st_fx->voicing_fx[1], 10923 ); //??sat wtmp = mac_r_sat( Ltmp, st_fx->voicing_fx[2], 10923 ); //??sat #else Ltmp = L_mac_o( Ltmp, st_fx->voicing_fx[1], 10923, &Overflow ); wtmp = mac_ro( Ltmp, st_fx->voicing_fx[2], 10923, &Overflow ); #endif tmp_pc = pc; move16(); Loading Loading @@ -2565,8 +2636,8 @@ void noise_est_ivas_fx( { /* ftemp2 /= ftemp */ num = div_s( extract_h( Ltmp2 ), extract_h( Ltmp ) ); // 15+exp2-exp #ifdef ISSUE_1796_replace_shl_o noise_chartmp = shl_sat( num, sub( sub( exp, exp2 ), 4 ) ); // 15+exp2-exp1 -> Q11 #ifdef ISSUE_1867_replace_overflow_libenc noise_chartmp = shl_sat( num, sub( sub( exp, exp2 ), 4 ) ); // 15+exp2-exp1 -> Q11 //??sat #else noise_chartmp = shl_o( num, sub( sub( exp, exp2 ), 4 ), &Overflow ); // 15+exp2-exp1 -> Q11 #endif Loading Loading @@ -2635,7 +2706,11 @@ void noise_est_ivas_fx( /* alpha = 0.064f * ftemp + 0.75f; */ Ltmp = Madd_32_16( 12582912 /* 0.75 in Q24*/, 137438953, tmp ); // Q24 #ifdef ISSUE_1867_replace_overflow_libenc alpha = round_fx_sat( L_shl_sat( Ltmp, 7 ) ); /*Q24 +7 --> Q31 Q15*/ //??sat //??sat #else alpha = round_fx_o( L_shl_o( Ltmp, 7, &Overflow ), &Overflow ); /*Q24 +7 --> Q31 Q15*/ #endif /*if( alpha > 0.999f { alpha = 0.999f;} */ alpha = s_min( alpha, 32735 ); /*.999 in Q15*/ Loading Loading @@ -2699,8 +2774,8 @@ void noise_est_ivas_fx( num = div_s( num, den ); // 15+ExpNum-ExpDen Ltmp1 = Mult_32_16( non_sta, num ); // 15+ExpNum-ExpDen+10-15 #ifdef ISSUE_1799_replace_L_shr_o non_sta = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc non_sta = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else non_sta = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading Loading @@ -2742,8 +2817,8 @@ void noise_est_ivas_fx( num = div_s( num, den ); // 15+ExpNum-ExpDen Ltmp1 = Mult_32_16( Lnon_sta2, num ); // 15+ExpNum-ExpDen+10-15 #ifdef ISSUE_1799_replace_L_shr_o Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ #ifdef ISSUE_1867_replace_overflow_libenc Lnon_sta2 = L_shr_sat( Ltmp1, sub( ExpNum, ExpDen ) ); /* Q10 */ //??sat #else Lnon_sta2 = L_shr_o( Ltmp1, sub( ExpNum, ExpDen ), &Overflow ); /* Q10 */ #endif Loading Loading @@ -2796,7 +2871,11 @@ void noise_est_ivas_fx( IF( LT_16( ini_frame, 100 ) ) { #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, LN_E_MIN_PLUS_ONE_FX ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, LN_E_MIN_PLUS_ONE_FX ) ), &Overflow ); /* Q8 */ #endif } ELSE /*ini_frame < 100*/ { Loading @@ -2818,7 +2897,11 @@ void noise_est_ivas_fx( Ltmp1 = Mpy_32_16_1( Ltmp1, 22713 ); // Q15 tmp_floor = round_fx( L_shl( Ltmp1, 9 ) ); /* Q8 */ } #ifdef ISSUE_1867_replace_overflow_libenc non_staB = add_sat( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ) ); /* Q8 */ //??sat #else non_staB = add_o( non_staB, abs_s( sub( tmp_enr, tmp_floor ) ), &Overflow ); /* Q8 */ #endif } } Loading
lib_enc/normalizecoefs_fx.c +6 −0 Original line number Diff line number Diff line Loading @@ -29,9 +29,11 @@ void normalizecoefs_fx( Word16 *pcoefs16; Word32 *pcoefs; Word16 subvec_start, subvec_end, num_coefs; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); #endif #endif pcoefs = coefs; pcoefs16 = coefs_norm; Loading @@ -55,7 +57,11 @@ void normalizecoefs_fx( *pcoefs = Mpy_32_16_1( *pcoefs, INV2POWHALF ); move32(); } #ifdef ISSUE_1867_replace_overflow_libenc *pcoefs16++ = round_fx_sat( L_shl_sat( *pcoefs++, 16 - k ) ); /* Q12 */ //??sat //??sat #else *pcoefs16++ = round_fx_o( L_shl_o( *pcoefs++, 16 - k, &Overflow ), &Overflow ); /* Q12 */ #endif move16(); } } Loading
lib_enc/pit_enc_fx.c +24 −0 Original line number Diff line number Diff line Loading @@ -1518,9 +1518,11 @@ void norm_corr_ivas_fx( Word16 h_e, e_max; Word32 L_tmp; Word64 W_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move16(); #endif #endif k = negate( t_min ); Loading @@ -1542,7 +1544,11 @@ void norm_corr_ivas_fx( L_tmp = L_mac( 0, xn[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], excf[i] ); // (Q_new - 1) + (Q_new - h_e) + 1 //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], excf[i], &Overflow ); // (Q_new - 1) + (Q_new - h_e) + 1 #endif } exp = norm_l( L_tmp ); L_tmp = L_shl( L_tmp, exp ); Loading Loading @@ -1613,9 +1619,11 @@ void norm_corr_fx( Word16 corr, exp_corr, norm, exp_norm, exp, scale; Word16 excf[L_FRAME16k]; Word32 L_tmp; #ifndef ISSUE_1867_replace_overflow_libenc #ifdef BASOP_NOGLOB_DECLARE_LOCAL Flag Overflow = 0; move32(); #endif #endif k = negate( t_min ); Loading @@ -1627,10 +1635,18 @@ void norm_corr_fx( conv_fx( &exc[k], h, excf, L_subfr ); /* Compute rounded down 1/sqrt(energy of xn[]) */ #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( 1, xn[0], xn[0] ); //??sat #else L_tmp = L_mac_o( 1, xn[0], xn[0], &Overflow ); #endif FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], xn[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], xn[i], &Overflow ); #endif } exp = norm_l( L_tmp ); exp = sub( 30, exp ); Loading @@ -1649,7 +1665,11 @@ void norm_corr_fx( L_tmp = L_mac( 1, xn[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, xn[i], excf[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, xn[i], excf[i], &Overflow ); #endif } exp = norm_l( L_tmp ); L_tmp = L_shl( L_tmp, exp ); Loading @@ -1660,7 +1680,11 @@ void norm_corr_fx( L_tmp = L_mac( 1, excf[0], excf[0] ); FOR( i = 1; i < L_subfr; i++ ) { #ifdef ISSUE_1867_replace_overflow_libenc L_tmp = L_mac_sat( L_tmp, excf[i], excf[i] ); //??sat #else L_tmp = L_mac_o( L_tmp, excf[i], excf[i], &Overflow ); #endif } exp = norm_l( L_tmp ); Loading
lib_enc/pitch_ol2_fx.c +55 −12 File changed.Preview size limit exceeded, changes collapsed. Show changes