#if CONFIG_REF_MV
if (this_mode == NEARESTMV && is_comp_pred) {
uint8_t ref_frame_type = vp10_ref_frame_type(mbmi->ref_frame);
- if (mbmi_ext->ref_mv_count[ref_frame_type] > 1) {
+ if (mbmi_ext->ref_mv_count[ref_frame_type] > 0) {
cur_mv[0] = mbmi_ext->ref_mv_stack[ref_frame_type][0].this_mv;
cur_mv[1] = mbmi_ext->ref_mv_stack[ref_frame_type][0].comp_mv;
best_mbmode.mode = ZEROMV;
} else {
uint8_t rf_type = vp10_ref_frame_type(best_mbmode.ref_frame);
- if (mbmi_ext->ref_mv_count[rf_type] > 1) {
- int i;
- int_mv nearestmv[2], nearmv[2];
- const int allow_hp = cm->allow_high_precision_mv;
+ int i;
+ const int allow_hp = cm->allow_high_precision_mv;
+ int_mv nearestmv[2] = { frame_mv[NEARESTMV][refs[0]],
+ frame_mv[NEARESTMV][refs[1]] };
+
+ int_mv nearmv[2] = { frame_mv[NEARMV][refs[0]],
+ frame_mv[NEARMV][refs[1]] };
+ if (mbmi_ext->ref_mv_count[rf_type] >= 1) {
nearestmv[0] = mbmi_ext->ref_mv_stack[rf_type][0].this_mv;
nearestmv[1] = mbmi_ext->ref_mv_stack[rf_type][0].comp_mv;
+ }
+
+ if (mbmi_ext->ref_mv_count[rf_type] > 1) {
nearmv[0] = mbmi_ext->ref_mv_stack[rf_type][1].this_mv;
nearmv[1] = mbmi_ext->ref_mv_stack[rf_type][1].comp_mv;
+ }
- for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) {
- lower_mv_precision(&nearestmv[i].as_mv, allow_hp);
- lower_mv_precision(&nearmv[i].as_mv, allow_hp);
- }
-
- if (nearestmv[0].as_int == best_mbmode.mv[0].as_int &&
- nearestmv[1].as_int == best_mbmode.mv[1].as_int)
- best_mbmode.mode = NEARESTMV;
- else if (nearmv[0].as_int == best_mbmode.mv[0].as_int &&
- nearmv[1].as_int == best_mbmode.mv[1].as_int)
- best_mbmode.mode = NEARMV;
- else if (best_mbmode.mv[0].as_int == 0 && best_mbmode.mv[1].as_int == 0)
- best_mbmode.mode = ZEROMV;
- } else {
- if (frame_mv[NEARESTMV][refs[0]].as_int == best_mbmode.mv[0].as_int &&
- (frame_mv[NEARESTMV][refs[1]].as_int == best_mbmode.mv[1].as_int))
- best_mbmode.mode = NEARESTMV;
- else if (frame_mv[NEARMV][refs[0]].as_int == best_mbmode.mv[0].as_int &&
- (frame_mv[NEARMV][refs[1]].as_int == best_mbmode.mv[1].as_int))
- best_mbmode.mode = NEARMV;
- else if (best_mbmode.mv[0].as_int == 0 && best_mbmode.mv[1].as_int == 0)
- best_mbmode.mode = ZEROMV;
+ for (i = 0; i < MAX_MV_REF_CANDIDATES; ++i) {
+ lower_mv_precision(&nearestmv[i].as_mv, allow_hp);
+ lower_mv_precision(&nearmv[i].as_mv, allow_hp);
}
+
+ if (nearestmv[0].as_int == best_mbmode.mv[0].as_int &&
+ nearestmv[1].as_int == best_mbmode.mv[1].as_int)
+ best_mbmode.mode = NEARESTMV;
+ else if (nearmv[0].as_int == best_mbmode.mv[0].as_int &&
+ nearmv[1].as_int == best_mbmode.mv[1].as_int)
+ best_mbmode.mode = NEARMV;
+ else if (best_mbmode.mv[0].as_int == 0 && best_mbmode.mv[1].as_int == 0)
+ best_mbmode.mode = ZEROMV;
}
#else
if (frame_mv[NEARESTMV][refs[0]].as_int == best_mbmode.mv[0].as_int &&