diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c index df2b85349..8934b62a8 100644 --- a/vp8/decoder/decodemv.c +++ b/vp8/decoder/decodemv.c @@ -692,8 +692,13 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi, } if (mbmi->second_ref_frame) { - vp8_find_near_mvs(xd, mi, &nearest, &nearby, &best_mv, rct, - mbmi->second_ref_frame, pbi->common.ref_frame_sign_bias); + vp8_find_near_mvs(xd, mi, +#if CONFIG_NEWNEAR + prev_mi, +#endif + &nearest, &nearby, &best_mv, rct, + (int)mbmi->second_ref_frame, + pbi->common.ref_frame_sign_bias); switch (mbmi->mode) { case ZEROMV: mbmi->second_mv.as_int = 0; diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c index d3e61699f..43182b10d 100644 --- a/vp8/encoder/bitstream.c +++ b/vp8/encoder/bitstream.c @@ -1207,7 +1207,13 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi) const int second_rf = mi->second_ref_frame; int_mv n1, n2; int ct[4]; - vp8_find_near_mvs(xd, m, &n1, &n2, &best_mv, ct, second_rf, cpi->common.ref_frame_sign_bias); + vp8_find_near_mvs(xd, m, +#if CONFIG_NEWNEAR + prev_m, +#endif + &n1, &n2, &best_mv, + ct, second_rf, + cpi->common.ref_frame_sign_bias); write_mv(w, &mi->second_mv.as_mv, &best_mv, mvc); } #endif /* CONFIG_DUALPRED */ diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c index fd5bd2e39..00055f9f1 100644 --- a/vp8/encoder/rdopt.c +++ b/vp8/encoder/rdopt.c @@ -2555,10 +2555,12 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int vp8_build_inter16x16_predictors_mby(&x->e_mbd); #if CONFIG_DUALPRED - MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi; - MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi; - int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME); - dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 0); + { + MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi; + MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi; + int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME); + dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 0); + } #endif /* CONFIG_DUALPRED */ if (cpi->active_map_enabled && x->active_ptr[0] == 0) { @@ -2713,10 +2715,12 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int /* We don't include the cost of the second reference here, because there are only * three options: Last/Golden, ARF/Last or Golden/ARF, or in other words if you * present them in that order, the second one is always known if the first is known */ - MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi; - MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi; - int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME); - dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 1); + { + MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi; + MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi; + int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME); + dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 1); + } } #endif /* CONFIG_DUALPRED */