diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 09:20:09 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 09:20:09 +0000 |
commit | 2279dd9e41ea31ee80545c8eed10d79452628b39 (patch) | |
tree | 55e6cbb29b79856173925f81d1c0e43d91d011bf /libavcodec | |
parent | 08533939791a2442fa1c82622fc910e9427ff65e (diff) | |
download | ffmpeg-2279dd9e41ea31ee80545c8eed10d79452628b39.tar.gz |
Simplify final()
Originally committed as revision 13277 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/ra144.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c index e0b43c1870..18f304d1e0 100644 --- a/libavcodec/ra144.c +++ b/libavcodec/ra144.c @@ -145,38 +145,33 @@ static void add_wav(int n, int f, int m1, int m2, int m3, const short *s1, static void final(const short *i1, const short *i2, void *out, int *statbuf, int len) { - int x, sum, i; - int buffer[10]; - short *ptr; - short *ptr2; + int x, i; unsigned short int work[50]; + short *ptr = work; memcpy(work, statbuf,20); memcpy(work + 10, i2, len * 2); - for(i=0; i<10; i++) - buffer[9-i] = i1[i]; - - ptr2 = (ptr = work) + len; + for (i=0; i<len; i++) { + int sum = 0; - while (ptr < ptr2) { - for(sum=0, x=0; x<=9; x++) - sum += buffer[x] * (ptr[x]); + for(x=0; x<10; x++) + sum += i1[9-x] * ptr[x]; - sum = sum >> 12; - x = ptr[10] - sum; + sum >>= 12; - if (x<-32768 || x>32767) { + if (ptr[10] - sum < -32768 || ptr[10] - sum > 32767) { memset(out, 0, len * 2); memset(statbuf, 0, 20); return; } - ptr[10] = x; + ptr[10] -= sum; ptr++; } - memcpy(out, ptr+10 - len, len * 2); - memcpy(statbuf, ptr, 20); + + memcpy(out, work+10, len * 2); + memcpy(statbuf, work + 40, 20); } static unsigned int rms(const int *data, int f) |