void vp8_find_best_ref_mvs(MACROBLOCKD *xd,
unsigned char *ref_y_buffer,
int ref_y_stride,
- int_mv *best_mv){
+ int_mv *best_mv,
+ int_mv *nearest,
+ int_mv *near) {
int_mv *ref_mv = xd->ref_mv;
int bestsad = INT_MAX;
int i;
lower_mv_precision(best_mv);
vp8_clamp_mv2(best_mv, xd);
+
+ if (best_mv->as_int != 0 &&
+ (best_mv->as_mv.row >> 3) != (nearest->as_mv.row >>3 ) &&
+ (best_mv->as_mv.col >> 3) != (nearest->as_mv.col >>3 )) {
+ near->as_int = nearest->as_int;
+ nearest->as_int = best_mv->as_int;
+ }
}
#endif
vp8_find_best_ref_mvs(xd,
xd->pre.y_buffer,
recon_y_stride,
- &best_mv);
+ &best_mv, &nearest, &nearby);
}
#endif
vp8_find_best_ref_mvs(xd,
xd->second_pre.y_buffer,
recon_y_stride,
- &best_mv_second);
+ &best_mv_second,
+ &nearest_second,
+ &nearby_second);
}
#else
vp8_find_near_mvs(xd, mi, prev_mi,
v_buffer[frame_type] = yv12->v_buffer + recon_uvoffset;
#if CONFIG_NEWBESTREFMV
vp8_find_best_ref_mvs(&x->e_mbd, y_buffer[frame_type],
- yv12->y_stride, &frame_best_ref_mv[frame_type]);
+ yv12->y_stride,
+ &frame_best_ref_mv[frame_type],
+ &frame_nearest_mv[frame_type],
+ &frame_near_mv[frame_type]);
ref_mv[frame_type].as_int = frame_best_ref_mv[frame_type].as_int;
#endif
}
ENTROPY_CONTEXT *L = (ENTROPY_CONTEXT *)x->left_context;
int plane_type;
int b;
+ TOKENEXTRA *t_backup = *t;
stuff2nd_order_b_8x8(x->block + 24, t, 1, x->frame_type,
A + vp8_block2above_8x8[24],
*(A + vp8_block2above_8x8[b] + 1) = *(A + vp8_block2above_8x8[b]);
*(L + vp8_block2left_8x8[b] + 1) = *(L + vp8_block2left_8x8[b]);
}
+ if (dry_run)
+ *t = t_backup;
}
ENTROPY_CONTEXT * A = (ENTROPY_CONTEXT *)x->above_context;
ENTROPY_CONTEXT * L = (ENTROPY_CONTEXT *)x->left_context;
int b, i;
+ TOKENEXTRA *t_backup = *t;
stuff1st_order_b_16x16(x->block, t, x->frame_type, A, L, cpi, dry_run);
for (i = 1; i < 16; i++) {
}
vpx_memset(&A[8], 0, sizeof(A[8]));
vpx_memset(&L[8], 0, sizeof(L[8]));
+ if (dry_run)
+ *t = t_backup;
}
#endif
*a = *l = pt;
}
-void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t, int dry_run) {
+void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *x,
+ TOKENEXTRA **t, int dry_run) {
ENTROPY_CONTEXT *A = (ENTROPY_CONTEXT *)x->above_context;
ENTROPY_CONTEXT *L = (ENTROPY_CONTEXT *)x->left_context;
int plane_type;