Loading lib_com/fft_fx.c +28 −6 Original line number Diff line number Diff line Loading @@ -1044,6 +1044,10 @@ static void fft5_shift4_16fx( Word16 T1, To, T8, Tt, T9, Ts, Te, Tp, Th, Tn,T2, T3, T4, T5, T6, T7; Word16 i0,i1,i2,i3,i4; Word32 L_tmp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif i0 = Idx[0]; move16(); Loading Loading @@ -1095,7 +1099,11 @@ static void fft5_shift4_16fx( L_tmp = Mult_32_16(KP559016994_16FX,sub(T4,T7)); Tn = round_fx(L_tmp); #ifdef BASOP_NOGLOB zRe[i0] = add_o(T1, T8, &Overflow); #else zRe[i0] = add(T1,T8); #endif move16(); zIm[i0] = add(To,Tp); move16(); Loading @@ -1110,6 +1118,19 @@ static void fft5_shift4_16fx( L_tmp = Msub_32_16(L_tmp,KP587785252_16FX,Te); T3 = round_fx(L_tmp); #ifdef BASOP_NOGLOB T6 = sub_o(T1, shr_o(T8, 2, &Overflow), &Overflow); T4 = add_o(T9, T6, &Overflow); T5 = sub_o(T6, T9, &Overflow); zRe[i1] = sub_o(T4, T2, &Overflow); move16(); zRe[i2] = add_o(T5, T3, &Overflow); move16(); zRe[i4] = add_o(T4, T2, &Overflow); move16(); zRe[i3] = sub_o(T5, T3, &Overflow); move16(); #else T6 = sub(T1, shr(T8, 2)); T4 = add(T9, T6); T5 = sub(T6, T9); Loading @@ -1121,6 +1142,7 @@ static void fft5_shift4_16fx( move16(); zRe[i3] = sub(T5, T3); move16(); #endif /* T2 = KP951056516 * Ts + KP587785252 * Tt; */ L_tmp = Mult_32_16(KP951056516_16FX,Ts); Loading lib_dec/FEC_clas_estim_fx.c +12 −0 Original line number Diff line number Diff line Loading @@ -323,7 +323,11 @@ void FEC_clas_estim_fx( { pt1++; pt2++; #ifdef BASOP_NOGLOB Ltmp = L_mac0_o(Ltmp, *pt1, *pt1, &Overflow); #else Ltmp = L_mac0(Ltmp, *pt1, *pt1); #endif Ltmp1 = L_mac0(Ltmp1, *pt1, *pt2); } tilt = 0; Loading Loading @@ -891,10 +895,18 @@ static void Corre( Word16 den2, den2_exp; Word32 tmp; Word16 tmp_exp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif /* keep Q15 normalized result */ cor = extract_h(Dot_product12(x, y, l, &cor_exp)); #ifdef BASOP_NOGLOB den = add_o(extract_h(Dot_product12(y, y, l, &den_exp)), 1, &Overflow); #else den = add(extract_h(Dot_product12(y, y, l, &den_exp)), 1); #endif den2 = extract_h(Dot_product12(x, x, l, &den2_exp)); /* keep Q31 normalized result */ Loading lib_dec/FEC_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -126,7 +126,11 @@ void FEC_exc_estim_fx( gainCNG = round_fx(L_shl(L_tmp, sub(exp, 12))); /* In Q3 */ } #ifdef BASOP_NOGLOB tmp1 = shl_o(st_fx->lp_gainc_fx, 1, &Overflow); #else tmp1 = shl(st_fx->lp_gainc_fx,1); #endif gainCNG = s_min(gainCNG , tmp1); set16_fx( exc_dct_in, 0, L_FRAME16k ); Loading lib_dec/LD_music_post_filter_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,10 @@ void LD_music_post_filter_fx Word16 mant, exp1, s_ave, tmp16, old_tmp16; Word16 diff_sc; Word16 old_tmp16_1; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif local_min_gain = hMusicPF->LDm_enh_min_ns_gain_fx; Loading Loading @@ -176,7 +180,11 @@ void LD_music_post_filter_fx FOR( k=j; k < mfreq_bindiv_LD[i]+j; k++ ) { /*m_ave += lf_E[k];*/ #ifdef BASOP_NOGLOB Ltmp = L_add_o(lf_E[k], Ltmp, &Overflow); #else Ltmp = L_add(lf_E[k], Ltmp); #endif max_val = L_max(max_val, lf_E[k]); } Ltmp_max = L_max(Ltmp_max, max_val); Loading Loading @@ -469,7 +477,11 @@ static void spectrum_mod_dct_fx( IF ( music_flag != 0 ) /* prevent subtraction on clean speech */ { #ifdef BASOP_NOGLOB IF(LE_32(maxNoise, L_shl_o(10, scaling, &Overflow))) #else IF( LE_32(maxNoise, L_shl(10, scaling))) #endif { minE = 18432/2; /*Q14*/ move16(); } Loading Loading @@ -671,6 +683,10 @@ static void find_enr_dct_fx( Word16 freq; const Word16 *ptR; Word32 LE_min, Ltmp, Ltmp1; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif LE_min = L_max(L_shl(E_MIN_Q15, sub(shl(Q_dct,1)+10,22)),1); Loading @@ -696,7 +712,11 @@ static void find_enr_dct_fx( move32(); /*band[i] += *ptE++;*/ #ifdef BASOP_NOGLOB Ltmp1 = L_add_o(Ltmp, Ltmp1, &Overflow); #else Ltmp1 = L_add(Ltmp, Ltmp1); #endif ptE++; ptR++; Loading lib_dec/bass_psfilter_fx.c +27 −1 Original line number Diff line number Diff line Loading @@ -489,7 +489,11 @@ void bass_psfilter_fx( FOR (i=0; i< subfr_len /2; i++) { Lener0 = L_mult0(sigPtr[i], sigPtr[i]); #ifdef BASOP_NOGLOB Lener = L_add(Lener, L_shr(L_mac0_o(Lener0, err[i], err[i], &Overflow), 5)); #else Lener = L_add(Lener, L_shr(L_mac0(Lener0, err[i], err[i]), 5)); #endif } exp2 = sub(exp2, 5); } Loading Loading @@ -598,9 +602,17 @@ void bass_psfilter_fx( tmp2 = sub(tmp2, 1+4); /* substract 1 because 'Lener' is divided by two */ tmp2 = add(tmp2, Q_syn2x); tmp2 = s_max(0, s_min(30, tmp2)); #ifdef BASOP_NOGLOB Lener = L_add_o(Lener, Pow2(tmp2, exp2), &Overflow); #else Lener = L_add(Lener, Pow2(tmp2, exp2)); #endif exp2 = norm_l(Lener); #ifdef BASOP_NOGLOB tmp2 = round_fx_o(L_shl(Lener, exp2), &Overflow); #else tmp2 = round_fx(L_shl(Lener, exp2)); #endif if (GT_16(tmp, tmp2)) { exp = sub(exp, 1); Loading Loading @@ -724,6 +736,10 @@ static Word16 Pit_track_fx( /* o : Pitch */ Word32 Ltmp0, Lcorr0, Lener0; Word16 *v1, *v2; Word16 exp1, exp2; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif /*----------------------------------------------------------------* * Test pitch/2 to avoid continuous pitch doubling Loading Loading @@ -751,9 +767,15 @@ static Word16 Pit_track_fx( /* o : Pitch */ Lcorr0 = L_mult0(*v1++, *v2++); FOR (i = 1; i < (L_HALFR16k+NBPSF_L_EXTRA)/14; i++) { #ifdef BASOP_NOGLOB Lener0 = L_mac0_o(Lener0, *v1, *v1, &Overflow); Ltmp0 = L_mac0_o(Ltmp0, *v2, *v2, &Overflow); Lcorr0 = L_mac0_o(Lcorr0, *v1++, *v2++, &Overflow); #else Lener0 = L_mac0(Lener0, *v1, *v1); Ltmp0 = L_mac0(Ltmp0, *v2, *v2); Lcorr0 = L_mac0(Lcorr0, *v1++, *v2++); #endif } BASOP_SATURATE_WARNING_ON test(); Loading Loading @@ -793,7 +815,11 @@ static Word16 Pit_track_fx( /* o : Pitch */ exp1 = norm_l(Lener); exp2 = norm_l(Ltmp); /* Multiply the Most Significant 16 bits */ #ifdef BASOP_NOGLOB Ltmp = L_mult0(round_fx_o(L_shl_o(Lener, exp1, &Overflow), &Overflow), round_fx_o(L_shl_o(Ltmp, exp2, &Overflow), &Overflow)); #else Ltmp = L_mult0(round_fx(L_shl(Lener, exp1)), round_fx(L_shl(Ltmp, exp2))); #endif exp1 = add(exp1, exp2); /* Correct if Odd # of Shifts */ exp2 = s_and(exp1, 1); Loading Loading
lib_com/fft_fx.c +28 −6 Original line number Diff line number Diff line Loading @@ -1044,6 +1044,10 @@ static void fft5_shift4_16fx( Word16 T1, To, T8, Tt, T9, Ts, Te, Tp, Th, Tn,T2, T3, T4, T5, T6, T7; Word16 i0,i1,i2,i3,i4; Word32 L_tmp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif i0 = Idx[0]; move16(); Loading Loading @@ -1095,7 +1099,11 @@ static void fft5_shift4_16fx( L_tmp = Mult_32_16(KP559016994_16FX,sub(T4,T7)); Tn = round_fx(L_tmp); #ifdef BASOP_NOGLOB zRe[i0] = add_o(T1, T8, &Overflow); #else zRe[i0] = add(T1,T8); #endif move16(); zIm[i0] = add(To,Tp); move16(); Loading @@ -1110,6 +1118,19 @@ static void fft5_shift4_16fx( L_tmp = Msub_32_16(L_tmp,KP587785252_16FX,Te); T3 = round_fx(L_tmp); #ifdef BASOP_NOGLOB T6 = sub_o(T1, shr_o(T8, 2, &Overflow), &Overflow); T4 = add_o(T9, T6, &Overflow); T5 = sub_o(T6, T9, &Overflow); zRe[i1] = sub_o(T4, T2, &Overflow); move16(); zRe[i2] = add_o(T5, T3, &Overflow); move16(); zRe[i4] = add_o(T4, T2, &Overflow); move16(); zRe[i3] = sub_o(T5, T3, &Overflow); move16(); #else T6 = sub(T1, shr(T8, 2)); T4 = add(T9, T6); T5 = sub(T6, T9); Loading @@ -1121,6 +1142,7 @@ static void fft5_shift4_16fx( move16(); zRe[i3] = sub(T5, T3); move16(); #endif /* T2 = KP951056516 * Ts + KP587785252 * Tt; */ L_tmp = Mult_32_16(KP951056516_16FX,Ts); Loading
lib_dec/FEC_clas_estim_fx.c +12 −0 Original line number Diff line number Diff line Loading @@ -323,7 +323,11 @@ void FEC_clas_estim_fx( { pt1++; pt2++; #ifdef BASOP_NOGLOB Ltmp = L_mac0_o(Ltmp, *pt1, *pt1, &Overflow); #else Ltmp = L_mac0(Ltmp, *pt1, *pt1); #endif Ltmp1 = L_mac0(Ltmp1, *pt1, *pt2); } tilt = 0; Loading Loading @@ -891,10 +895,18 @@ static void Corre( Word16 den2, den2_exp; Word32 tmp; Word16 tmp_exp; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif /* keep Q15 normalized result */ cor = extract_h(Dot_product12(x, y, l, &cor_exp)); #ifdef BASOP_NOGLOB den = add_o(extract_h(Dot_product12(y, y, l, &den_exp)), 1, &Overflow); #else den = add(extract_h(Dot_product12(y, y, l, &den_exp)), 1); #endif den2 = extract_h(Dot_product12(x, x, l, &den2_exp)); /* keep Q31 normalized result */ Loading
lib_dec/FEC_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -126,7 +126,11 @@ void FEC_exc_estim_fx( gainCNG = round_fx(L_shl(L_tmp, sub(exp, 12))); /* In Q3 */ } #ifdef BASOP_NOGLOB tmp1 = shl_o(st_fx->lp_gainc_fx, 1, &Overflow); #else tmp1 = shl(st_fx->lp_gainc_fx,1); #endif gainCNG = s_min(gainCNG , tmp1); set16_fx( exc_dct_in, 0, L_FRAME16k ); Loading
lib_dec/LD_music_post_filter_fx.c +20 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,10 @@ void LD_music_post_filter_fx Word16 mant, exp1, s_ave, tmp16, old_tmp16; Word16 diff_sc; Word16 old_tmp16_1; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif local_min_gain = hMusicPF->LDm_enh_min_ns_gain_fx; Loading Loading @@ -176,7 +180,11 @@ void LD_music_post_filter_fx FOR( k=j; k < mfreq_bindiv_LD[i]+j; k++ ) { /*m_ave += lf_E[k];*/ #ifdef BASOP_NOGLOB Ltmp = L_add_o(lf_E[k], Ltmp, &Overflow); #else Ltmp = L_add(lf_E[k], Ltmp); #endif max_val = L_max(max_val, lf_E[k]); } Ltmp_max = L_max(Ltmp_max, max_val); Loading Loading @@ -469,7 +477,11 @@ static void spectrum_mod_dct_fx( IF ( music_flag != 0 ) /* prevent subtraction on clean speech */ { #ifdef BASOP_NOGLOB IF(LE_32(maxNoise, L_shl_o(10, scaling, &Overflow))) #else IF( LE_32(maxNoise, L_shl(10, scaling))) #endif { minE = 18432/2; /*Q14*/ move16(); } Loading Loading @@ -671,6 +683,10 @@ static void find_enr_dct_fx( Word16 freq; const Word16 *ptR; Word32 LE_min, Ltmp, Ltmp1; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif LE_min = L_max(L_shl(E_MIN_Q15, sub(shl(Q_dct,1)+10,22)),1); Loading @@ -696,7 +712,11 @@ static void find_enr_dct_fx( move32(); /*band[i] += *ptE++;*/ #ifdef BASOP_NOGLOB Ltmp1 = L_add_o(Ltmp, Ltmp1, &Overflow); #else Ltmp1 = L_add(Ltmp, Ltmp1); #endif ptE++; ptR++; Loading
lib_dec/bass_psfilter_fx.c +27 −1 Original line number Diff line number Diff line Loading @@ -489,7 +489,11 @@ void bass_psfilter_fx( FOR (i=0; i< subfr_len /2; i++) { Lener0 = L_mult0(sigPtr[i], sigPtr[i]); #ifdef BASOP_NOGLOB Lener = L_add(Lener, L_shr(L_mac0_o(Lener0, err[i], err[i], &Overflow), 5)); #else Lener = L_add(Lener, L_shr(L_mac0(Lener0, err[i], err[i]), 5)); #endif } exp2 = sub(exp2, 5); } Loading Loading @@ -598,9 +602,17 @@ void bass_psfilter_fx( tmp2 = sub(tmp2, 1+4); /* substract 1 because 'Lener' is divided by two */ tmp2 = add(tmp2, Q_syn2x); tmp2 = s_max(0, s_min(30, tmp2)); #ifdef BASOP_NOGLOB Lener = L_add_o(Lener, Pow2(tmp2, exp2), &Overflow); #else Lener = L_add(Lener, Pow2(tmp2, exp2)); #endif exp2 = norm_l(Lener); #ifdef BASOP_NOGLOB tmp2 = round_fx_o(L_shl(Lener, exp2), &Overflow); #else tmp2 = round_fx(L_shl(Lener, exp2)); #endif if (GT_16(tmp, tmp2)) { exp = sub(exp, 1); Loading Loading @@ -724,6 +736,10 @@ static Word16 Pit_track_fx( /* o : Pitch */ Word32 Ltmp0, Lcorr0, Lener0; Word16 *v1, *v2; Word16 exp1, exp2; #ifdef BASOP_NOGLOB Flag Overflow = 0; #endif /*----------------------------------------------------------------* * Test pitch/2 to avoid continuous pitch doubling Loading Loading @@ -751,9 +767,15 @@ static Word16 Pit_track_fx( /* o : Pitch */ Lcorr0 = L_mult0(*v1++, *v2++); FOR (i = 1; i < (L_HALFR16k+NBPSF_L_EXTRA)/14; i++) { #ifdef BASOP_NOGLOB Lener0 = L_mac0_o(Lener0, *v1, *v1, &Overflow); Ltmp0 = L_mac0_o(Ltmp0, *v2, *v2, &Overflow); Lcorr0 = L_mac0_o(Lcorr0, *v1++, *v2++, &Overflow); #else Lener0 = L_mac0(Lener0, *v1, *v1); Ltmp0 = L_mac0(Ltmp0, *v2, *v2); Lcorr0 = L_mac0(Lcorr0, *v1++, *v2++); #endif } BASOP_SATURATE_WARNING_ON test(); Loading Loading @@ -793,7 +815,11 @@ static Word16 Pit_track_fx( /* o : Pitch */ exp1 = norm_l(Lener); exp2 = norm_l(Ltmp); /* Multiply the Most Significant 16 bits */ #ifdef BASOP_NOGLOB Ltmp = L_mult0(round_fx_o(L_shl_o(Lener, exp1, &Overflow), &Overflow), round_fx_o(L_shl_o(Ltmp, exp2, &Overflow), &Overflow)); #else Ltmp = L_mult0(round_fx(L_shl(Lener, exp1)), round_fx(L_shl(Ltmp, exp2))); #endif exp1 = add(exp1, exp2); /* Correct if Odd # of Shifts */ exp2 = s_and(exp1, 1); Loading