forked from FFmpeg/FFmpeg
simpify state and make code 2% faster
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
This commit is contained in:
parent
5fe9c42ceb
commit
bf47272f3c
1 changed files with 4 additions and 8 deletions
|
@ -168,7 +168,7 @@ static inline void copy_backptr(LZOContext *c, int back, int cnt) {
|
|||
* 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;
|
||||
|
@ -205,9 +205,7 @@ int lzo1x_decode(void *out, int *outlen, void *in, int *inlen) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
switch (state) {
|
||||
case COPY:
|
||||
} else if(!state){
|
||||
cnt = get_len(&c, x, 15);
|
||||
copy(&c, cnt + 3);
|
||||
x = GETB(c);
|
||||
|
@ -219,15 +217,13 @@ int lzo1x_decode(void *out, int *outlen, void *in, int *inlen) {
|
|||
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);
|
||||
|
|
Loading…
Add table
Reference in a new issue