mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-14 22:22:59 +02:00
Simplify xan_huffman_decode by using get_bits
Originally committed as revision 18595 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
a4873f7d9d
commit
be50938073
@ -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 @@ static int xan_huffman_decode(unsigned char *dest, const unsigned char *src,
|
||||
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 @@ static int xan_huffman_decode(unsigned char *dest, const unsigned char *src,
|
||||
*dest++ = val;
|
||||
val = ival;
|
||||
}
|
||||
|
||||
if (counter++ == 7) {
|
||||
counter = 0;
|
||||
bits = *ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user