dsputil: Split clear_block*/fill_block* off into a separate context

This commit is contained in:
Diego Biurrun
2014-01-14 10:33:47 +01:00
parent 869fc416f7
commit e74433a8e6
53 changed files with 677 additions and 361 deletions

View File

@@ -44,6 +44,7 @@
typedef struct MadContext {
AVCodecContext *avctx;
BlockDSPContext bdsp;
DSPContext dsp;
AVFrame *last_frame;
GetBitContext gb;
@@ -61,6 +62,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
MadContext *s = avctx->priv_data;
s->avctx = avctx;
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
ff_blockdsp_init(&s->bdsp, avctx);
ff_dsputil_init(&s->dsp, avctx);
ff_init_scantable_permutation(s->dsp.idct_permutation, FF_NO_IDCT_PERM);
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct);
@@ -207,7 +209,7 @@ static void decode_mb(MadContext *s, AVFrame *frame, int inter)
int add = 2*decode_motion(&s->gb);
comp_block(s, frame, s->mb_x, s->mb_y, j, mv_x, mv_y, add);
} else {
s->dsp.clear_block(s->block);
s->bdsp.clear_block(s->block);
decode_block_intra(s, s->block);
idct_put(s, frame, s->block, s->mb_x, s->mb_y, j);
}