diff options
author | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 12:33:00 +0000 |
---|---|---|
committer | Vitor Sessak <vitor1001@gmail.com> | 2008-05-24 12:33:00 +0000 |
commit | be2c232f43ba9bad5e989f6c84dc4e081bb79a6d (patch) | |
tree | 84d7fff573c7cc646a6fbde0deb8b2a749a6d4bd /libavcodec | |
parent | 2279dd9e41ea31ee80545c8eed10d79452628b39 (diff) | |
download | ffmpeg-be2c232f43ba9bad5e989f6c84dc4e081bb79a6d.tar.gz |
Simplify eq()
Originally committed as revision 13278 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/ra144.c | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/libavcodec/ra144.c b/libavcodec/ra144.c index 18f304d1e0..5fd2a245dc 100644 --- a/libavcodec/ra144.c +++ b/libavcodec/ra144.c @@ -252,37 +252,23 @@ static void dec1(Real144_internal *glob, const int *data, const int *inp, static int eq(const short *in, int *target) { - int retval; - int a; - int b; - int c; + int retval = 0; + int b, c, i; unsigned int u; - const short *sptr; - int *ptr1, *ptr2, *ptr3; - int *bp1, *bp2; int buffer1[10]; int buffer2[10]; + int *bp1 = buffer1; + int *bp2 = buffer2; - retval = 0; - bp1 = buffer1; - bp2 = buffer2; - ptr2 = (ptr3 = buffer2) + 9; - sptr = in; - - while (ptr2 >= ptr3) - *(ptr3++) = *(sptr++); + for (i=0; i < 10; i++) + buffer2[i] = in[i]; - target += 9; - a = bp2[9]; - *target = a; + u = target[9] = bp2[9]; - if (a + 0x1000 > 0x1fff) + if (u + 0x1000 > 0x1fff) return 0; /* We're screwed, might as well go out with a bang. :P */ - c = 8; - u = a; - - while (c >= 0) { + for (c=8; c >= 0; c--) { if (u == 0x1000) u++; @@ -294,13 +280,10 @@ static int eq(const short *in, int *target) if (b == 0) b++; - ptr2 = bp1; - ptr1 = (ptr3 = bp2) + c; - for (u=0; u<=c; u++) - *(ptr2++) = ((*(ptr3++) - (((*target) * (*(ptr1--))) >> 12)) * (0x1000000 / b)) >> 12; + bp1[u] = ((bp2[u] - ((target[c+1] * bp2[c-u]) >> 12)) * (0x1000000 / b)) >> 12; - *(--target) = u = bp1[(c--)]; + target[c] = u = bp1[c]; if ((u + 0x1000) > 0x1fff) retval = 1; |