reimar, dont hesitate to flame me for not sending patches and feel free to revert any or all of my changes to lzo.c if you dont like them
Originally committed as revision 7778 to svn://svn.ffmpeg.org/ffmpeg/trunk
* LZO_INPUT_PADDING, out must provide LZO_OUTPUT_PADDING additional bytes
*/
int lzo1x_decode(void *out, int *outlen, void *in, int *inlen) {
- enum {COPY, BACKPTR} state = COPY;
+ int state= 0;
int x;
LZOContext c;
c.in = in;
break;
}
}
- } else
- switch (state) {
- case COPY:
+ } else if(!state){
cnt = get_len(&c, x, 15);
copy(&c, cnt + 3);
x = GETB(c);
continue;
cnt = 1;
back = (1 << 11) + (GETB(c) << 2) + (x >> 2) + 1;
- break;
- case BACKPTR:
+ } else {
cnt = 0;
back = (GETB(c) << 2) + (x >> 2) + 1;
- break;
}
copy_backptr(&c, back, cnt + 2);
+ state=
cnt = x & 3;
- state = cnt ? BACKPTR : COPY;
if (cnt)
copy(&c, cnt);
x = GETB(c);