X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2F4xm.c;h=4a9a14a79b954a9c1a9446169932c41ccb44b92c;hb=c194b9ad6dbe65f5abd68158c4811ed84e2a2b95;hp=ab74225380946b54948f1cf76a818b443d429202;hpb=7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615;p=ffmpeg diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index ab742253809..4a9a14a79b9 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -29,12 +29,14 @@ #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" +#include "vlc.h" #define BLOCK_TYPE_VLC_BITS 5 #define ACDC_VLC_BITS 9 @@ -136,8 +138,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 +354,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; @@ -446,14 +448,14 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length) } av_fast_malloc(&f->bitstream_buffer, &f->bitstream_buffer_size, - bitstream_size + FF_INPUT_BUFFER_PADDING_SIZE); + bitstream_size + AV_INPUT_BUFFER_PADDING_SIZE); if (!f->bitstream_buffer) return AVERROR(ENOMEM); f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) (buf + extra), bitstream_size / 4); memset((uint8_t*)f->bitstream_buffer + bitstream_size, - 0, FF_INPUT_BUFFER_PADDING_SIZE); - init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size); + 0, AV_INPUT_BUFFER_PADDING_SIZE); + bitstream_init8(&f->bc, f->bitstream_buffer, bitstream_size); wordstream_offset = extra + bitstream_size; bytestream_offset = extra + bitstream_size + wordstream_size; @@ -484,19 +486,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 +506,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,19 +766,19 @@ 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_init8(&f->bc, buf + 4, bitstream_size); prestream_size = length + buf - prestream; av_fast_malloc(&f->bitstream_buffer, &f->bitstream_buffer_size, - prestream_size + FF_INPUT_BUFFER_PADDING_SIZE); + prestream_size + AV_INPUT_BUFFER_PADDING_SIZE); if (!f->bitstream_buffer) return AVERROR(ENOMEM); f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) prestream, prestream_size / 4); memset((uint8_t*)f->bitstream_buffer + prestream_size, - 0, FF_INPUT_BUFFER_PADDING_SIZE); - init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size); + 0, AV_INPUT_BUFFER_PADDING_SIZE); + bitstream_init8(&f->pre_bc, f->bitstream_buffer, prestream_size); f->last_dc = 0 * 128 * 8 * 8; @@ -789,7 +791,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; @@ -849,7 +851,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, cfrm = &f->cfrm[i]; cfrm->data = av_fast_realloc(cfrm->data, &cfrm->allocated_size, - cfrm->size + data_size + FF_INPUT_BUFFER_PADDING_SIZE); + cfrm->size + data_size + AV_INPUT_BUFFER_PADDING_SIZE); // explicit check needed as memcpy below might not catch a NULL if (!cfrm->data) { av_log(f->avctx, AV_LOG_ERROR, "realloc failure"); @@ -959,7 +961,7 @@ static av_cold int decode_init(AVCodecContext *avctx) } f->version = AV_RL32(avctx->extradata) >> 16; - ff_blockdsp_init(&f->bdsp, avctx); + ff_blockdsp_init(&f->bdsp); ff_bswapdsp_init(&f->bbdsp); f->avctx = avctx; init_vlcs(f); @@ -981,5 +983,5 @@ AVCodec ff_fourxm_decoder = { .init = decode_init, .close = decode_end, .decode = decode_frame, - .capabilities = CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DR1, };