Mercurial > libavcodec.hg
changeset 3388:22c7b4c96c2d libavcodec
simplify compute_autocorr
author | michael |
---|---|
date | Sun, 02 Jul 2006 13:01:01 +0000 |
parents | 92fabe8c1422 |
children | de8cdb05117f |
files | flacenc.c |
diffstat | 1 files changed, 11 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/flacenc.c Sun Jul 02 12:40:39 2006 +0000 +++ b/flacenc.c Sun Jul 02 13:01:01 2006 +0000 @@ -583,34 +583,22 @@ static void compute_autocorr(const int32_t *data, int len, int lag, double *autoc) { - int i; - double *data1; - int lag_ptr, ptr; + int i, lag_ptr; + double tmp[len + lag]; + double *data1= tmp + lag; - data1 = av_malloc(len * sizeof(double)); apply_welch_window(data, len, data1); - for(i=0; i<lag; i++) autoc[i] = 1.0; - - ptr = 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++; + for(i=0; i<lag; i++){ + autoc[i] = 1.0; + data1[i-lag]= 0.0; } - 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]; + } + } } /**