Only seed motion search with mvrefs if they are available.

Fixes an encoder-side crash.

BUG=aomedia:519

Change-Id: I420404e21fe23bc753bfb08896f2b8b2e014af4e
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 974fd81..3ac9353 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -740,27 +740,30 @@
   int best_sad = INT_MAX;
   int this_sad = INT_MAX;
   int max_mv = 0;
-  int near_same_nearest;
   uint8_t *src_y_ptr = x->plane[0].src.buf;
   uint8_t *ref_y_ptr;
-  const int num_mv_refs =
-      MAX_MV_REF_CANDIDATES +
-      (cpi->sf.adaptive_motion_search && block_size < x->max_partition_size);
-
-  MV pred_mv[3];
-  pred_mv[0] = x->mbmi_ext->ref_mvs[ref_frame][0].as_mv;
-  pred_mv[1] = x->mbmi_ext->ref_mvs[ref_frame][1].as_mv;
-  pred_mv[2] = x->pred_mv[ref_frame];
+  int num_mv_refs = 0;
+  MV pred_mv[MAX_MV_REF_CANDIDATES + 1];
+  if (cpi->sf.adaptive_motion_search && block_size < x->max_partition_size) {
+    pred_mv[num_mv_refs] = x->pred_mv[ref_frame];
+    num_mv_refs++;
+  }
+  if (x->mbmi_ext->ref_mv_count[ref_frame] > 0) {
+    pred_mv[num_mv_refs] = x->mbmi_ext->ref_mvs[ref_frame][0].as_mv;
+    num_mv_refs++;
+  }
+  if (x->mbmi_ext->ref_mv_count[ref_frame] > 1) {
+    if (x->mbmi_ext->ref_mvs[ref_frame][0].as_int !=
+        x->mbmi_ext->ref_mvs[ref_frame][1].as_int) {
+      pred_mv[num_mv_refs] = x->mbmi_ext->ref_mvs[ref_frame][1].as_mv;
+      num_mv_refs++;
+    }
+  }
   assert(num_mv_refs <= (int)(sizeof(pred_mv) / sizeof(pred_mv[0])));
-
-  near_same_nearest = x->mbmi_ext->ref_mvs[ref_frame][0].as_int ==
-                      x->mbmi_ext->ref_mvs[ref_frame][1].as_int;
   // Get the sad for each candidate reference mv.
   for (i = 0; i < num_mv_refs; ++i) {
     const MV *this_mv = &pred_mv[i];
     int fp_row, fp_col;
-
-    if (i == 1 && near_same_nearest) continue;
     fp_row = (this_mv->row + 3 + (this_mv->row >= 0)) >> 3;
     fp_col = (this_mv->col + 3 + (this_mv->col >= 0)) >> 3;
     max_mv = AOMMAX(max_mv, AOMMAX(abs(this_mv->row), abs(this_mv->col)) >> 3);