unsigned int gbuf1[4];
unsigned short gbuf2[120];
unsigned int *decptr; /* decoder ptr */
- signed short *decsp;
/* the swapped buffers */
unsigned int swapbuffers[4][10];
unsigned int buffer[5];
unsigned short int buffer_2[148];
-
- unsigned short *sptr;
} Real144_internal;
static int ra144_decode_init(AVCodecContext * avctx)
}
static void dec1(Real144_internal *glob, const int *data, const int *inp,
- int n, int f)
+ int n, int f, int block_idx)
{
short *ptr,*end;
+ signed short *decsp = glob->gbuf2 + 30*block_idx;
- *(glob->decptr++) = rms(data, f);
- end = (ptr = glob->decsp) + (n * 10);
+ *(glob->decptr++) = rms(data, f);
+ end = (ptr = decsp) + (n * 10);
while (ptr < end)
*(ptr++) = *(inp++);
int a,b;
int x;
int result;
+ signed short *decsp = glob->gbuf2 + 30*l;
+ unsigned short *sptr = decsp;
if(l + 1 < NBLOCKS / 2)
a = NBLOCKS - (l + 1);
b = NBLOCKS - a;
if (l == 0) {
- glob->decsp = glob->sptr = glob->gbuf2;
glob->decptr = glob->gbuf1;
}
ptr1 = inp;
ptr2 = inp2;
for (x=0; x<10*n; x++)
- *(glob->sptr++) = (a * (*ptr1++) + b * (*ptr2++)) >> 2;
+ *(sptr++) = (a * (*ptr1++) + b * (*ptr2++)) >> 2;
- result = eq(glob->decsp, work);
+ result = eq(decsp, work);
if (result == 1) {
- dec1(glob, data, inp, n, f);
+ dec1(glob, data, inp, n, f, l);
} else {
*(glob->decptr++) = rms(work, f);
}
- glob->decsp += n * 10;
}
/* Uncompress one block (20 bytes -> 160*2 bytes) */
dec2(glob, glob->swapbuf1alt, glob->swapbuf2alt, 3, a, glob->swapbuf2, 1);
}
dec2(glob, glob->swapbuf1, glob->swapbuf2, 3, val, glob->swapbuf2alt, 2);
- dec1(glob, glob->swapbuf1, glob->swapbuf2, 3, val);
+ dec1(glob, glob->swapbuf1, glob->swapbuf2, 3, val, 3);
/* do output */
for (b=0, c=0; c<4; c++) {