| @@ -24,9 +24,9 @@ | |||||
| #include "libavutil/common.h" | #include "libavutil/common.h" | ||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "golomb_legacy.h" | |||||
| #include "bitstream.h" | |||||
| #include "golomb.h" | |||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "get_bits.h" | |||||
| typedef struct FICThreadContext { | typedef struct FICThreadContext { | ||||
| DECLARE_ALIGNED(16, int16_t, block)[64]; | DECLARE_ALIGNED(16, int16_t, block)[64]; | ||||
| @@ -129,13 +129,13 @@ static void fic_idct_put(uint8_t *dst, int stride, int16_t *block) | |||||
| ptr += 8; | ptr += 8; | ||||
| } | } | ||||
| } | } | ||||
| static int fic_decode_block(FICContext *ctx, GetBitContext *gb, | |||||
| static int fic_decode_block(FICContext *ctx, BitstreamContext *bc, | |||||
| uint8_t *dst, int stride, int16_t *block) | uint8_t *dst, int stride, int16_t *block) | ||||
| { | { | ||||
| int i, num_coeff; | int i, num_coeff; | ||||
| /* Is it a skip block? */ | /* Is it a skip block? */ | ||||
| if (get_bits1(gb)) { | |||||
| if (bitstream_read_bit(bc)) { | |||||
| /* This is a P-frame. */ | /* This is a P-frame. */ | ||||
| ctx->frame->key_frame = 0; | ctx->frame->key_frame = 0; | ||||
| ctx->frame->pict_type = AV_PICTURE_TYPE_P; | ctx->frame->pict_type = AV_PICTURE_TYPE_P; | ||||
| @@ -145,12 +145,12 @@ static int fic_decode_block(FICContext *ctx, GetBitContext *gb, | |||||
| memset(block, 0, sizeof(*block) * 64); | memset(block, 0, sizeof(*block) * 64); | ||||
| num_coeff = get_bits(gb, 7); | |||||
| num_coeff = bitstream_read(bc, 7); | |||||
| if (num_coeff > 64) | if (num_coeff > 64) | ||||
| return AVERROR_INVALIDDATA; | return AVERROR_INVALIDDATA; | ||||
| for (i = 0; i < num_coeff; i++) | for (i = 0; i < num_coeff; i++) | ||||
| block[ff_zigzag_direct[i]] = get_se_golomb(gb) * | |||||
| block[ff_zigzag_direct[i]] = get_se_golomb(bc) * | |||||
| ctx->qmat[ff_zigzag_direct[i]]; | ctx->qmat[ff_zigzag_direct[i]]; | ||||
| fic_idct_put(dst, stride, block); | fic_idct_put(dst, stride, block); | ||||
| @@ -162,14 +162,14 @@ static int fic_decode_slice(AVCodecContext *avctx, void *tdata) | |||||
| { | { | ||||
| FICContext *ctx = avctx->priv_data; | FICContext *ctx = avctx->priv_data; | ||||
| FICThreadContext *tctx = tdata; | FICThreadContext *tctx = tdata; | ||||
| GetBitContext gb; | |||||
| BitstreamContext bc; | |||||
| uint8_t *src = tctx->src; | uint8_t *src = tctx->src; | ||||
| int slice_h = tctx->slice_h; | int slice_h = tctx->slice_h; | ||||
| int src_size = tctx->src_size; | int src_size = tctx->src_size; | ||||
| int y_off = tctx->y_off; | int y_off = tctx->y_off; | ||||
| int x, y, p; | int x, y, p; | ||||
| init_get_bits(&gb, src, src_size * 8); | |||||
| bitstream_init8(&bc, src, src_size); | |||||
| for (p = 0; p < 3; p++) { | for (p = 0; p < 3; p++) { | ||||
| int stride = ctx->frame->linesize[p]; | int stride = ctx->frame->linesize[p]; | ||||
| @@ -179,7 +179,7 @@ static int fic_decode_slice(AVCodecContext *avctx, void *tdata) | |||||
| for (x = 0; x < (ctx->aligned_width >> !!p); x += 8) { | for (x = 0; x < (ctx->aligned_width >> !!p); x += 8) { | ||||
| int ret; | int ret; | ||||
| if ((ret = fic_decode_block(ctx, &gb, dst + x, stride, tctx->block)) != 0) | |||||
| if ((ret = fic_decode_block(ctx, &bc, dst + x, stride, tctx->block)) != 0) | |||||
| return ret; | return ret; | ||||
| } | } | ||||