Loading lib_dec/er_dec_tcx_fx.c +41 −1 Original line number Diff line number Diff line Loading @@ -15,23 +15,36 @@ ******************************************************/ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, Word16 L_subfr /*Q0*/, Word32 lp_gainp /*Q16*/, Word32 *lp_gainc /*Q16*/ ) { Word32 L_c; Word16 tmp16, tmp16_2, tmp16_3, tmp_e, tmp2_e, tmp_loop, i; #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Word32 L_c; Word32 L_acc, L_tmp; #else Word64 W_acc; Word32 L_tmp; #endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Flag Overflow = 0; Flag Carry = 0; #endif move32(); move32(); #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_deposit_l( 0 ); L_c = L_deposit_l( 0 ); #else W_acc = 0; #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Overflow = 0; move16(); Carry = 0; move16(); #endif tmp16 = round_fx( old_fpitch ); /*Q0*/ tmp_loop = shl( L_subfr, 1 ); Loading @@ -52,14 +65,22 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, #else tmp16_3 = sub_o( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/, &Overflow ); #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_macNs_co( L_acc, tmp16_3, tmp16_3, &Carry, &Overflow ); /*Q3*/ Overflow = 0; move16(); L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Accumulate Carrys Q-1*/ Carry = 0; move16(); #else W_acc = W_mac_16_16( W_acc, tmp16_3, tmp16_3 ); /*Q3*/ #endif } #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #else L_tmp = w_norm_llQ31( W_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #endif tmp_e = add( tmp_e, 31 - ( add( shl( Q_exc, 1 ), 1 ) ) ); /*L_tmp is Q31, now*/ tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/; tmp_e = sub( add( tmp2_e, tmp_e ), 15 ); Loading @@ -75,15 +96,23 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, static void calcGainc2_fx( Word16 *exc, Word16 Q_exc, Word16 L_subfr /*Q0*/, Word32 *lp_gainc /*Q16*/ ) { Word16 i, cnt, tmp16, tmp_e, tmp2_e; #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Word32 L_c, L_acc, L_tmp; #else Word64 W_acc; Word32 L_tmp; #endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Flag Overflow = 0; Flag Carry = 0; #endif #endif move16(); move16(); #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Carry = 0; move16(); Overflow = 0; Loading @@ -91,21 +120,32 @@ static void calcGainc2_fx( Word16 *exc, Word16 Q_exc, Word16 L_subfr /*Q0*/, Wor L_c = L_deposit_l( 0 ); L_acc = L_deposit_l( 0 ); #else W_acc = 0; #endif cnt = shl( L_subfr, 1 ); FOR( i = 0; i < cnt; i++ ) { /* *gainc += ( exc[i-2*L_subfr] ) * ( exc[i-2*L_subfr]); */ #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_macNs_co( L_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, &Carry, &Overflow ); /*Q3*/ Overflow = 0; move16(); L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /* Accumulate Carrys Q-1*/ Carry = 0; move16(); #else W_acc = W_mac_16_16( W_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/); /*Q3*/ #endif } #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #else L_tmp = w_norm_llQ31( W_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #endif tmp_e = add( tmp_e, sub( 31, ( add( shl( Q_exc, 1 ), 1 ) ) ) ); /*L_tmp is Q31, now*/ tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/; tmp_e = sub( add( tmp2_e, tmp_e ), 15 ); Loading Loading
lib_dec/er_dec_tcx_fx.c +41 −1 Original line number Diff line number Diff line Loading @@ -15,23 +15,36 @@ ******************************************************/ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, Word16 L_subfr /*Q0*/, Word32 lp_gainp /*Q16*/, Word32 *lp_gainc /*Q16*/ ) { Word32 L_c; Word16 tmp16, tmp16_2, tmp16_3, tmp_e, tmp2_e, tmp_loop, i; #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Word32 L_c; Word32 L_acc, L_tmp; #else Word64 W_acc; Word32 L_tmp; #endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Flag Overflow = 0; Flag Carry = 0; #endif move32(); move32(); #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_deposit_l( 0 ); L_c = L_deposit_l( 0 ); #else W_acc = 0; #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Overflow = 0; move16(); Carry = 0; move16(); #endif tmp16 = round_fx( old_fpitch ); /*Q0*/ tmp_loop = shl( L_subfr, 1 ); Loading @@ -52,14 +65,22 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, #else tmp16_3 = sub_o( exc[( i - ( L_subfr * 2 ) )] /*Q1*/, mult_r( tmp16_2 /*Q15*/, exc[( ( i - ( L_subfr * 2 ) ) - tmp16 )] /*Q1*/ ) /*Q1*/, &Overflow ); #endif #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_macNs_co( L_acc, tmp16_3, tmp16_3, &Carry, &Overflow ); /*Q3*/ Overflow = 0; move16(); L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /*Accumulate Carrys Q-1*/ Carry = 0; move16(); #else W_acc = W_mac_16_16( W_acc, tmp16_3, tmp16_3 ); /*Q3*/ #endif } #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #else L_tmp = w_norm_llQ31( W_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #endif tmp_e = add( tmp_e, 31 - ( add( shl( Q_exc, 1 ), 1 ) ) ); /*L_tmp is Q31, now*/ tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/; tmp_e = sub( add( tmp2_e, tmp_e ), 15 ); Loading @@ -75,15 +96,23 @@ static void calcGainc_fx( Word16 *exc, Word16 Q_exc, Word32 old_fpitch /*Q16*/, static void calcGainc2_fx( Word16 *exc, Word16 Q_exc, Word16 L_subfr /*Q0*/, Word32 *lp_gainc /*Q16*/ ) { Word16 i, cnt, tmp16, tmp_e, tmp2_e; #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Word32 L_c, L_acc, L_tmp; #else Word64 W_acc; Word32 L_tmp; #endif #ifdef BASOP_NOGLOB_DECLARE_LOCAL #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Flag Overflow = 0; Flag Carry = 0; #endif #endif move16(); move16(); #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW Carry = 0; move16(); Overflow = 0; Loading @@ -91,21 +120,32 @@ static void calcGainc2_fx( Word16 *exc, Word16 Q_exc, Word16 L_subfr /*Q0*/, Wor L_c = L_deposit_l( 0 ); L_acc = L_deposit_l( 0 ); #else W_acc = 0; #endif cnt = shl( L_subfr, 1 ); FOR( i = 0; i < cnt; i++ ) { /* *gainc += ( exc[i-2*L_subfr] ) * ( exc[i-2*L_subfr]); */ #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_acc = L_macNs_co( L_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, &Carry, &Overflow ); /*Q3*/ Overflow = 0; move16(); L_c = L_macNs_co( L_c, 0, 0, &Carry, &Overflow ); /* Accumulate Carrys Q-1*/ Carry = 0; move16(); #else W_acc = W_mac_16_16( W_acc, exc[( i - ( L_subfr * 2 ) )] /*Q1*/, exc[( i - ( L_subfr * 2 ) )] /*Q1*/); /*Q3*/ #endif } #ifndef FIX_ISSUE_1965_REPLACE_CARRY_OVERFLOW L_tmp = norm_llQ31( L_c, L_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #else L_tmp = w_norm_llQ31( W_acc, &tmp_e ); /*Q3,norm,tmp_e*/ #endif tmp_e = add( tmp_e, sub( 31, ( add( shl( Q_exc, 1 ), 1 ) ) ) ); /*L_tmp is Q31, now*/ tmp16 = BASOP_Util_Divide3216_Scale( L_tmp /*Q31,norm,tmp_e*/, shl( L_subfr, 1 ) /*Q15,15*/, &tmp2_e ) /*Q15,tmp2_e+tmp_e-15*/; tmp_e = sub( add( tmp2_e, tmp_e ), 15 ); Loading