void vp8_stuff_inter16x16(MACROBLOCK *x) { vp8_build_inter_predictors_mb_s(&x->e_mbd); /* // recon = copy from predictors to destination { BLOCKD *b = &x->e_mbd.block[0]; unsigned char *pred_ptr = b->predictor; unsigned char *dst_ptr = *(b->base_dst) + b->dst; int stride = b->dst_stride; int i; for(i=0;i<16;i++) vpx_memcpy(dst_ptr+i*stride,pred_ptr+16*i,16); b = &x->e_mbd.block[16]; pred_ptr = b->predictor; dst_ptr = *(b->base_dst) + b->dst; stride = b->dst_stride; for(i=0;i<8;i++) vpx_memcpy(dst_ptr+i*stride,pred_ptr+8*i,8); b = &x->e_mbd.block[20]; pred_ptr = b->predictor; dst_ptr = *(b->base_dst) + b->dst; stride = b->dst_stride; for(i=0;i<8;i++) vpx_memcpy(dst_ptr+i*stride,pred_ptr+8*i,8); } */ }
/* skip_recon_mb() is Modified: Instead of writing the result to predictor buffer and then copying it * to dst buffer, we can write the result directly to dst buffer. This eliminates unnecessary copy. */ static void skip_recon_mb(VP8D_COMP *pbi, MACROBLOCKD *xd) { if (xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) { vp8_build_intra_predictors_mbuv_s(xd); vp8_build_intra_predictors_mby_s_ptr(xd); } else { vp8_build_inter_predictors_mb_s(xd); } }