more ref_mv changes from aom/master

Change-Id: I9152f898dfacdf3877ed719f193bb1e0dbee0a1a
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index ff05c71..0f3f949 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -35,7 +35,7 @@
         // Add a new item to the list.
         if (index == *refmv_count) {
           ref_mv_stack[index].this_mv = this_refmv;
-          ref_mv_stack[index].pred_mv =
+          ref_mv_stack[index].pred_mv[0] =
               get_sub_block_pred_mv(candidate_mi, ref, col, block);
           ref_mv_stack[index].weight = 2 * len;
           ++(*refmv_count);
@@ -61,7 +61,7 @@
           // Add a new item to the list.
           if (index == *refmv_count) {
             ref_mv_stack[index].this_mv = this_refmv;
-            ref_mv_stack[index].pred_mv =
+            ref_mv_stack[index].pred_mv[0] =
                 get_sub_block_pred_mv(candidate_mi, ref, col, alt_block);
             ref_mv_stack[index].weight = len;
             ++(*refmv_count);
@@ -97,6 +97,10 @@
       if (index == *refmv_count) {
         ref_mv_stack[index].this_mv = this_refmv[0];
         ref_mv_stack[index].comp_mv = this_refmv[1];
+        ref_mv_stack[index].pred_mv[0] =
+            get_sub_block_pred_mv(candidate_mi, 0, col, block);
+        ref_mv_stack[index].pred_mv[1] =
+            get_sub_block_pred_mv(candidate_mi, 1, col, block);
         ref_mv_stack[index].weight = 2 * len;
         ++(*refmv_count);
 
@@ -127,6 +131,10 @@
         if (index == *refmv_count) {
           ref_mv_stack[index].this_mv = this_refmv[0];
           ref_mv_stack[index].comp_mv = this_refmv[1];
+          ref_mv_stack[index].pred_mv[0] =
+              get_sub_block_pred_mv(candidate_mi, 0, col, block);
+          ref_mv_stack[index].pred_mv[1] =
+              get_sub_block_pred_mv(candidate_mi, 1, col, block);
           ref_mv_stack[index].weight = len;
           ++(*refmv_count);
 
@@ -230,6 +238,7 @@
         candidate_mi, candidate, rf, refmv_count, ref_mv_stack,
         cm->allow_high_precision_mv, len, block, mi_pos.col);
   }  // Analyze a single 8x8 block motion information.
+
   return newmv_count;
 }
 
@@ -333,6 +342,7 @@
 
       if (idx == *refmv_count && *refmv_count < MAX_REF_MV_STACK_SIZE) {
         ref_mv_stack[idx].this_mv.as_int = this_refmv.as_int;
+        ref_mv_stack[idx].pred_mv[0] = prev_frame_mvs->pred_mv[ref];
         ref_mv_stack[idx].weight = 2;
         ++(*refmv_count);
       }
@@ -389,8 +399,8 @@
     int blk_row, blk_col;
     int coll_blk_count = 0;
 
-    for (blk_row = 0; blk_row < xd->n8_h; blk_row += 2) {
-      for (blk_col = 0; blk_col < xd->n8_w; blk_col += 2) {
+    for (blk_row = 0; blk_row < xd->n8_h; ++blk_row) {
+      for (blk_col = 0; blk_col < xd->n8_w; ++blk_col) {
         coll_blk_count += add_col_ref_mv(
             cm, prev_frame_mvs_base, xd, mi_row, mi_col, ref_frame, blk_row,
             blk_col, refmv_count, ref_mv_stack, mode_context);
@@ -705,19 +715,30 @@
 #else
                         mode_context);
 #endif  // CONFIG_REF_MV
-  find_mv_refs_idx(cm, xd, mi, ref_frame, mv_ref_list, -1, mi_row, mi_col, sync,
-                   data, NULL);
+#endif  // CONFIG_EXT_INTER
+#if CONFIG_REF_MV
+  if (ref_frame <= ALTREF_FRAME)
+    find_mv_refs_idx(cm, xd, mi, ref_frame, mv_ref_list, -1, mi_row, mi_col,
+                     sync, data, mode_context);
 #else
   find_mv_refs_idx(cm, xd, mi, ref_frame, mv_ref_list, -1, mi_row, mi_col, sync,
                    data, mode_context);
-#endif  // CONFIG_EXT_INTER
+#endif  // CONFIG_REF_MV
 
 #if CONFIG_REF_MV
   setup_ref_mv_list(cm, xd, ref_frame, ref_mv_count, ref_mv_stack, mv_ref_list,
                     -1, mi_row, mi_col, mode_context);
 
-  for (idx = 0; idx < MAX_MV_REF_CANDIDATES; ++idx)
-    if (mv_ref_list[idx].as_int != 0) all_zero = 0;
+  if (*ref_mv_count >= 2) {
+    for (idx = 0; idx < AOMMIN(3, *ref_mv_count); ++idx) {
+      if (ref_mv_stack[idx].this_mv.as_int != 0) all_zero = 0;
+      if (ref_frame > ALTREF_FRAME)
+        if (ref_mv_stack[idx].comp_mv.as_int != 0) all_zero = 0;
+    }
+  } else if (ref_frame <= ALTREF_FRAME) {
+    for (idx = 0; idx < MAX_MV_REF_CANDIDATES; ++idx)
+      if (mv_ref_list[idx].as_int != 0) all_zero = 0;
+  }
 
   if (all_zero) mode_context[ref_frame] |= (1 << ALL_ZERO_FLAG_OFFSET);
 #endif