diff options
Diffstat (limited to 'vp8/encoder/encodeframe.c')
-rw-r--r-- | vp8/encoder/encodeframe.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index 3cb9de8db..c725cd023 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -477,8 +477,24 @@ void encode_mb_row(VP8_COMP *cpi, x->mb_activity_ptr++; x->mb_norm_activity_ptr++; - for (i = 0; i < 16; i++) - vpx_memcpy(&xd->mode_info_context->bmi[i], &xd->block[i].bmi, sizeof(xd->block[i].bmi)); + if(cm->frame_type != INTRA_FRAME) + { + if (xd->mode_info_context->mbmi.mode != B_PRED) + { + for (i = 0; i < 16; i++) + xd->mode_info_context->bmi[i].mv.as_int = xd->block[i].bmi.mv.as_int; + }else + { + for (i = 0; i < 16; i++) + xd->mode_info_context->bmi[i].as_mode = xd->block[i].bmi.mode; + } + } + else + { + if(xd->mode_info_context->mbmi.mode != B_PRED) + for (i = 0; i < 16; i++) + xd->mode_info_context->bmi[i].as_mode = xd->block[i].bmi.mode; + } // adjust to the next column of macroblocks x->src.y_buffer += 16; |