Index: webrtc/common_audio/signal_processing/cross_correlation.c |
diff --git a/webrtc/common_audio/signal_processing/cross_correlation.c b/webrtc/common_audio/signal_processing/cross_correlation.c |
index d7c9f2b9afede2a0a86d20bf33c082626de2eade..82a42c71b76225ae041c12aa4947190c1a7bdc58 100644 |
--- a/webrtc/common_audio/signal_processing/cross_correlation.c |
+++ b/webrtc/common_audio/signal_processing/cross_correlation.c |
@@ -10,6 +10,8 @@ |
#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" |
+#include <assert.h> |
+ |
/* C version of WebRtcSpl_CrossCorrelation() for generic platforms. */ |
void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation, |
const int16_t* seq1, |
@@ -22,8 +24,12 @@ void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation, |
for (i = 0; i < dim_cross_correlation; i++) { |
int32_t corr = 0; |
- for (j = 0; j < dim_seq; j++) |
- corr += (seq1[j] * seq2[j]) >> right_shifts; |
+ for (j = 0; j < dim_seq; j++) { |
+ int32_t old = corr; |
+ int32_t add = seq1[j] * seq2[j]; |
+ corr += add >> right_shifts; |
+ assert((add >= 0 && corr >= old) || (add < 0 && corr < old)); |
+ } |
seq2 += step_seq2; |
*cross_correlation++ = corr; |
} |