Browse Source

fic: Convert to the new bitstream reader

tags/n3.4
Alexandra Hájková Diego Biurrun 10 years ago
parent
commit
0f94de8a09
1 changed files with 9 additions and 9 deletions
  1. +9
    -9
      libavcodec/fic.c

+ 9
- 9
libavcodec/fic.c View File

@@ -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;
} }




Loading…
Cancel
Save