Mercurial > libavcodec.hg
changeset 9496:2c6a58787aeb libavcodec
Simplify xan_huffman_decode by using get_bits
author | reimar |
---|---|
date | Fri, 17 Apr 2009 19:48:54 +0000 |
parents | fc15a3b977bf |
children | cb387dff812d |
files | xan.c |
diffstat | 1 files changed, 5 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/xan.c Fri Apr 17 19:29:54 2009 +0000 +++ b/xan.c Fri Apr 17 19:48:54 2009 +0000 @@ -36,6 +36,8 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "bytestream.h" +#define ALT_BITSTREAM_READER_LE +#include "get_bits.h" // for av_memcpy_backptr #include "libavutil/lzo.h" @@ -93,16 +95,13 @@ unsigned char ival = byte + 0x16; const unsigned char * ptr = src + byte*2; unsigned char val = ival; - int counter = 0; unsigned char *dest_end = dest + dest_len; + GetBitContext gb; - unsigned char bits = *ptr++; + init_get_bits(&gb, ptr, 0); // FIXME: no src size available while ( val != 0x16 ) { - if ( (1 << counter) & bits ) - val = src[byte + val - 0x17]; - else - val = src[val - 0x17]; + val = src[val - 0x17 + get_bits1(&gb) * byte]; if ( val < 0x16 ) { if (dest + 1 > dest_end) @@ -110,11 +109,6 @@ *dest++ = val; val = ival; } - - if (counter++ == 7) { - counter = 0; - bits = *ptr++; - } } return 0;