Index: third_party/opus/src/silk/mips/NSQ_del_dec_mipsr1.h |
diff --git a/third_party/opus/src/silk/mips/NSQ_del_dec_mipsr1.h b/third_party/opus/src/silk/mips/NSQ_del_dec_mipsr1.h |
index ad1cfe2a9b0841012701b1fe77d7da2f044d0b26..cd70713a8f5d9453ec62d7786bc30a90abddc409 100644 |
--- a/third_party/opus/src/silk/mips/NSQ_del_dec_mipsr1.h |
+++ b/third_party/opus/src/silk/mips/NSQ_del_dec_mipsr1.h |
@@ -61,7 +61,7 @@ static inline void silk_noise_shape_quantizer_del_dec( |
opus_int predictLPCOrder, /* I Prediction filter order */ |
opus_int warping_Q16, /* I */ |
opus_int nStatesDelayedDecision, /* I Number of states in decision tree */ |
- opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */ |
+ opus_int *smpl_buf_idx, /* I/O Index to newest samples in buffers */ |
opus_int decisionDelay, /* I */ |
int arch /* I */ |
) |
@@ -323,8 +323,9 @@ static inline void silk_noise_shape_quantizer_del_dec( |
psSS[ 1 ].xq_Q14 = xq_Q14; |
} |
- *smpl_buf_idx = ( *smpl_buf_idx - 1 ) & DECISION_DELAY_MASK; /* Index to newest samples */ |
- last_smple_idx = ( *smpl_buf_idx + decisionDelay ) & DECISION_DELAY_MASK; /* Index to decisionDelay old samples */ |
+ *smpl_buf_idx = ( *smpl_buf_idx - 1 ) % DECISION_DELAY; |
+ if( *smpl_buf_idx < 0 ) *smpl_buf_idx += DECISION_DELAY; |
+ last_smple_idx = ( *smpl_buf_idx + decisionDelay ) % DECISION_DELAY; |
/* Find winner */ |
RDmin_Q10 = psSampleState[ 0 ][ 0 ].RD_Q10; |