Commit b2e30cb3 authored by Michael Niedermayer's avatar Michael Niedermayer

simplify compute_autocorr

Originally committed as revision 5575 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 41275956
...@@ -583,34 +583,22 @@ static void apply_welch_window(const int32_t *data, int len, double *w_data) ...@@ -583,34 +583,22 @@ static void apply_welch_window(const int32_t *data, int len, double *w_data)
static void compute_autocorr(const int32_t *data, int len, int lag, static void compute_autocorr(const int32_t *data, int len, int lag,
double *autoc) double *autoc)
{ {
int i; int i, lag_ptr;
double *data1; double tmp[len + lag];
int lag_ptr, ptr; double *data1= tmp + lag;
data1 = av_malloc(len * sizeof(double));
apply_welch_window(data, len, data1); apply_welch_window(data, len, data1);
for(i=0; i<lag; i++) autoc[i] = 1.0; for(i=0; i<lag; i++){
autoc[i] = 1.0;
ptr = 0; data1[i-lag]= 0.0;
while(ptr <= lag) {
lag_ptr = 0;
while(lag_ptr <= ptr) {
autoc[ptr-lag_ptr] += data1[ptr] * data1[lag_ptr];
lag_ptr++;
}
ptr++;
} }
while(ptr < len) {
lag_ptr = ptr - lag; for(i=0; i<len; i++){
while(lag_ptr <= ptr) { for(lag_ptr= i-lag; lag_ptr<=i; lag_ptr++){
autoc[ptr-lag_ptr] += data1[ptr] * data1[lag_ptr]; autoc[i-lag_ptr] += data1[i] * data1[lag_ptr];
lag_ptr++;
} }
ptr++;
} }
av_freep(&data1);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment