Fix build_cur_mv() to avoid using invalid mv
Avoid using invalid motion vector in build_cur_mv(). Slight noise
level coding performance change.
STATS_CHANGED
Change-Id: Icb954816518b4bcbf510273dd0eff67044cbc19a
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 6208a06..d482839 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -10163,7 +10163,12 @@
const PREDICTION_MODE single_mode =
get_single_mode(this_mode, i, is_comp_pred);
if (single_mode == NEWMV) {
- cur_mv[i] = this_mv;
+ const uint8_t ref_frame_type = av1_ref_frame_type(mbmi->ref_frame);
+ cur_mv[i] =
+ (i == 0) ? x->mbmi_ext->ref_mv_stack[ref_frame_type][mbmi->ref_mv_idx]
+ .this_mv
+ : x->mbmi_ext->ref_mv_stack[ref_frame_type][mbmi->ref_mv_idx]
+ .comp_mv;
} else {
ret &= clamp_and_check_mv(cur_mv + i, this_mv, cm, x);
}