diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 30e9e5ded52797d44d2f89cab986ee2f2568a285..38e9011cee80f99bfb7cd9f0408485fe3765b0f3 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -169,7 +169,7 @@ static int decode_tokens(VP9D_COMP *pbi, BLOCK_SIZE bsize, vp9_reader *r) { cm->base_qindex)); // TODO(dkovalev) if (!vp9_reader_has_error(r)) - return vp9_decode_tokens(pbi, r, bsize); + return vp9_decode_tokens(cm, xd, &cm->seg, r, bsize); } } diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c index 63e5252cf160fbe0e90fac66e141e707566cc781..2f5b1369c1a530b14f12ab3fc689f38ad6610346 100644 --- a/vp9/decoder/vp9_detokenize.c +++ b/vp9/decoder/vp9_detokenize.c @@ -208,7 +208,9 @@ static int decode_coefs(VP9_COMMON *cm, const MACROBLOCKD *xd, } struct decode_block_args { - VP9D_COMP *pbi; + VP9_COMMON *cm; + MACROBLOCKD *xd; + struct segmentation *seg; vp9_reader *r; int *eobtotal; }; @@ -218,8 +220,8 @@ static void decode_block(int plane, int block, BLOCK_SIZE plane_bsize, const struct decode_block_args* const arg = argv; // find the maximum eob for this transform size, adjusted by segment - MACROBLOCKD *xd = &arg->pbi->mb; - struct segmentation *seg = &arg->pbi->common.seg; + MACROBLOCKD *xd = arg->xd; + const struct segmentation *seg = arg->seg; struct macroblockd_plane* pd = &xd->plane[plane]; const int segment_id = xd->mi_8x8[0]->mbmi.segment_id; const int seg_eob = get_tx_eob(seg, segment_id, tx_size); @@ -229,7 +231,7 @@ static void decode_block(int plane, int block, BLOCK_SIZE plane_bsize, pt = get_entropy_context(tx_size, pd->above_context + aoff, pd->left_context + loff); - eob = decode_coefs(&arg->pbi->common, xd, arg->r, block, + eob = decode_coefs(arg->cm, xd, arg->r, block, pd->plane_type, seg_eob, BLOCK_OFFSET(pd->qcoeff, block), tx_size, pd->dequant, pt); @@ -239,9 +241,11 @@ static void decode_block(int plane, int block, BLOCK_SIZE plane_bsize, *arg->eobtotal += eob; } -int vp9_decode_tokens(VP9D_COMP *pbi, vp9_reader *r, BLOCK_SIZE bsize) { +int vp9_decode_tokens(VP9_COMMON *cm, MACROBLOCKD *xd, + struct segmentation *seg, + vp9_reader *r, BLOCK_SIZE bsize) { int eobtotal = 0; - struct decode_block_args args = {pbi, r, &eobtotal}; - foreach_transformed_block(&pbi->mb, bsize, decode_block, &args); + struct decode_block_args args = {cm, xd, seg, r, &eobtotal}; + foreach_transformed_block(xd, bsize, decode_block, &args); return eobtotal; } diff --git a/vp9/decoder/vp9_detokenize.h b/vp9/decoder/vp9_detokenize.h index cf07c56295f8824034ce3aa25292a5fa752daa40..0fb4c3cc9d0ca3f16becb1c90eb4e79fa9bb5f51 100644 --- a/vp9/decoder/vp9_detokenize.h +++ b/vp9/decoder/vp9_detokenize.h @@ -15,6 +15,8 @@ #include "vp9/decoder/vp9_onyxd_int.h" #include "vp9/decoder/vp9_dboolhuff.h" -int vp9_decode_tokens(VP9D_COMP* pbi, vp9_reader *r, BLOCK_SIZE bsize); +int vp9_decode_tokens(VP9_COMMON *cm, MACROBLOCKD *xd, + struct segmentation *seg, + vp9_reader *r, BLOCK_SIZE bsize); #endif // VP9_DECODER_VP9_DETOKENIZE_H_