diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c index 7f28ed0f7a..27b77beb3c 100644 --- a/libavcodec/vp56.c +++ b/libavcodec/vp56.c @@ -400,7 +400,7 @@ static void vp56_decode_mb(vp56_context_t *s, int row, int col, int is_alpha) AVFrame *frame_current, *frame_ref; vp56_mb_t mb_type; vp56_frame_t ref_frame; - int b, ab, b_max, plan, off; + int b, ab, b_max, plane, off; if (s->framep[VP56_FRAME_CURRENT]->key_frame) mb_type = VP56_MB_INTRA; @@ -423,22 +423,22 @@ static void vp56_decode_mb(vp56_context_t *s, int row, int col, int is_alpha) switch (mb_type) { case VP56_MB_INTRA: for (b=0; bdsp.idct_put(frame_current->data[plan] + s->block_offset[b], - s->stride[plan], s->block_coeff[b]); + plane = vp56_b2p[b+ab]; + s->dsp.idct_put(frame_current->data[plane] + s->block_offset[b], + s->stride[plane], s->block_coeff[b]); } break; case VP56_MB_INTER_NOVEC_PF: case VP56_MB_INTER_NOVEC_GF: for (b=0; bblock_offset[b]; - s->dsp.put_pixels_tab[1][0](frame_current->data[plan] + off, - frame_ref->data[plan] + off, - s->stride[plan], 8); - s->dsp.idct_add(frame_current->data[plan] + off, - s->stride[plan], s->block_coeff[b]); + s->dsp.put_pixels_tab[1][0](frame_current->data[plane] + off, + frame_ref->data[plane] + off, + s->stride[plane], 8); + s->dsp.idct_add(frame_current->data[plane] + off, + s->stride[plane], s->block_coeff[b]); } break; @@ -452,11 +452,11 @@ static void vp56_decode_mb(vp56_context_t *s, int row, int col, int is_alpha) for (b=0; bdata[plan], s->stride[plan], + plane = vp56_b2p[b+ab]; + vp56_mc(s, b, plane, frame_ref->data[plane], s->stride[plane], 16*col+x_off, 16*row+y_off); - s->dsp.idct_add(frame_current->data[plan] + s->block_offset[b], - s->stride[plan], s->block_coeff[b]); + s->dsp.idct_add(frame_current->data[plane] + s->block_offset[b], + s->stride[plane], s->block_coeff[b]); } break; }