# HG changeset patch # User vitor # Date 1211620809 0 # Node ID c225307f241d6f49719be868285ed4fe9a081eab # Parent 521e1b55fc126145795d22b1d2b1dede3aaed94f Simplify final() diff -r 521e1b55fc12 -r c225307f241d ra144.c --- a/ra144.c Sat May 24 09:19:21 2008 +0000 +++ b/ra144.c Sat May 24 09:20:09 2008 +0000 @@ -145,38 +145,33 @@ 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> 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)