diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2013-11-30 13:38:51 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2013-11-30 13:38:51 -0500 |
commit | 9cf2f72ea8f3e738334373a37eef88e1e76f9091 (patch) | |
tree | 027449b2c810435273713dc002a4bae3ae78ad69 | |
parent | 2564febe09d5a8da0faf02c120a2b2620ec67825 (diff) | |
download | opus-exp_mips_alt.tar.gz |
mips C equivalent: Using simple rounding rather than the original biasexp_mips_alt
The bias was only needed because the original code rounds towards -inf
on every multiplication.
-rw-r--r-- | silk/NSQ_del_dec.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/silk/NSQ_del_dec.c b/silk/NSQ_del_dec.c index 0e3c6aa2..0d67c4c8 100644 --- a/silk/NSQ_del_dec.c +++ b/silk/NSQ_del_dec.c @@ -394,9 +394,9 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec( temp64 += ( ((long long)pred_lag_ptr[ -2 ]) * ((long long)b_Q14_2) ); temp64 += ( ((long long)pred_lag_ptr[ -3 ]) * ((long long)b_Q14_3) ); temp64 += ( ((long long)pred_lag_ptr[ -4 ]) * ((long long)b_Q14_4) ); + temp64 += 32768; temp64 = temp64 >> 16; LTP_pred_Q14 = temp64; - LTP_pred_Q14 += 2; LTP_pred_Q14 = silk_LSHIFT( LTP_pred_Q14, 1 ); /* Q13 -> Q14 */ pred_lag_ptr++; } else { @@ -446,10 +446,10 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec( temp64 += ( ((long long)psLPC_Q14[ -14 ]) * ((long long)a_Q12_14) ); temp64 += ( ((long long)psLPC_Q14[ -15 ]) * ((long long)a_Q12_15) ); } + temp64 += 32768; temp64 = temp64 >> 16; LPC_pred_Q14 = temp64; - LPC_pred_Q14 = LPC_pred_Q14 + silk_RSHIFT( predictLPCOrder, 1 ); LPC_pred_Q14 = silk_LSHIFT( LPC_pred_Q14, 4 ); /* Q10 -> Q14 */ /* Noise shape feedback */ @@ -480,10 +480,10 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec( } psDD->sAR2_Q14[ shapingLPCOrder - 1 ] = tmp1; temp64 += ( ((long long)tmp1) * ((long long)AR_shp_Q13[ shapingLPCOrder - 1 ]) ); + temp64 += 32768; temp64 = temp64 >> 16; n_AR_Q14 = temp64; - n_AR_Q14 += silk_RSHIFT( shapingLPCOrder, 1 ); n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 1 ); /* Q11 -> Q12 */ n_AR_Q14 = silk_SMLAWB( n_AR_Q14, psDD->LF_AR_Q14, Tilt_Q14 ); /* Q12 */ n_AR_Q14 = silk_LSHIFT( n_AR_Q14, 2 ); /* Q12 -> Q14 */ |