diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index b2d4db26b0..ee9d0205d5 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -29,11 +29,12 @@ #include "libavutil/frame.h" #include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" + #include "avcodec.h" +#include "bitstream.h" #include "blockdsp.h" #include "bswapdsp.h" #include "bytestream.h" -#include "get_bits.h" #include "internal.h" #define BLOCK_TYPE_VLC_BITS 5 @@ -136,8 +137,8 @@ typedef struct FourXContext { BswapDSPContext bbdsp; uint16_t *frame_buffer; uint16_t *last_frame_buffer; - GetBitContext pre_gb; ///< ac/dc prefix - GetBitContext gb; + BitstreamContext pre_bc; // ac/dc prefix + BitstreamContext bc; GetByteContext g; GetByteContext g2; int mv[256]; @@ -352,8 +353,8 @@ static int decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, return AVERROR_INVALIDDATA; h = 1 << log2h; - code = get_vlc2(&f->gb, block_type_vlc[1 - (f->version > 1)][index].table, - BLOCK_TYPE_VLC_BITS, 1); + code = bitstream_read_vlc(&f->bc, block_type_vlc[1 - (f->version > 1)][index].table, + BLOCK_TYPE_VLC_BITS, 1); if (code < 0 || code > 6) return AVERROR_INVALIDDATA; @@ -453,7 +454,7 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length) bitstream_size / 4); memset((uint8_t*)f->bitstream_buffer + bitstream_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); - init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size); + bitstream_init(&f->bc, f->bitstream_buffer, 8 * bitstream_size); wordstream_offset = extra + bitstream_size; bytestream_offset = extra + bitstream_size + wordstream_size; @@ -484,19 +485,19 @@ static int decode_i_block(FourXContext *f, int16_t *block) int code, i, j, level, val; /* DC coef */ - val = get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3); + val = bitstream_read_vlc(&f->pre_bc, f->pre_vlc.table, ACDC_VLC_BITS, 3); if (val >> 4) av_log(f->avctx, AV_LOG_ERROR, "error dc run != 0\n"); if (val) - val = get_xbits(&f->gb, val); + val = bitstream_read_xbits(&f->bc, val); val = val * dequant_table[0] + f->last_dc; f->last_dc = block[0] = val; /* AC coefs */ i = 1; for (;;) { - code = get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3); + code = bitstream_read_vlc(&f->pre_bc, f->pre_vlc.table, ACDC_VLC_BITS, 3); /* EOB */ if (code == 0) @@ -504,7 +505,7 @@ static int decode_i_block(FourXContext *f, int16_t *block) if (code == 0xf0) { i += 16; } else { - level = get_xbits(&f->gb, code & 0xf); + level = bitstream_read_xbits(&f->bc, code & 0xf); i += code >> 4; if (i >= 64) { av_log(f->avctx, AV_LOG_ERROR, "run %d oveflow\n", i); @@ -764,7 +765,7 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length) return AVERROR_INVALIDDATA; } - init_get_bits(&f->gb, buf + 4, 8 * bitstream_size); + bitstream_init(&f->bc, buf + 4, 8 * bitstream_size); prestream_size = length + buf - prestream; @@ -776,7 +777,7 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length) prestream_size / 4); memset((uint8_t*)f->bitstream_buffer + prestream_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); - init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size); + bitstream_init(&f->pre_bc, f->bitstream_buffer, 8 * prestream_size); f->last_dc = 0 * 128 * 8 * 8; @@ -789,7 +790,7 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length) } } - if (get_vlc2(&f->pre_gb, f->pre_vlc.table, ACDC_VLC_BITS, 3) != 256) + if (bitstream_read_vlc(&f->pre_bc, f->pre_vlc.table, ACDC_VLC_BITS, 3) != 256) av_log(f->avctx, AV_LOG_ERROR, "end mismatch\n"); return 0;