simplify compute_autocorr

Originally committed as revision 5575 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2006-07-02 13:01:01 +00:00
parent 412759560c
commit b2e30cb324
1 changed files with 11 additions and 23 deletions

View File

@ -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;
while(lag_ptr <= ptr) {
autoc[ptr-lag_ptr] += data1[ptr] * data1[lag_ptr];
lag_ptr++;
}
ptr++;
} }
av_freep(&data1); for(i=0; i<len; i++){
for(lag_ptr= i-lag; lag_ptr<=i; lag_ptr++){
autoc[i-lag_ptr] += data1[i] * data1[lag_ptr];
}
}
} }
/** /**