Browse Source

Simplify xan_huffman_decode by using get_bits

Originally committed as revision 18595 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Reimar Döffinger 17 years ago
parent
commit
be50938073
1 changed files with 5 additions and 11 deletions
  1. +5
    -11
      libavcodec/xan.c

+ 5
- 11
libavcodec/xan.c View File

@@ -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…
Cancel
Save