Refactor ref mv parsing at the decoder

Refactor the reference motion vector parsing process at the decoder.
Simplify the logic to reduce unnecessary branching.

Change-Id: I35977ab984e5342c7631d04db8ea2c0ec47ef820
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index a460bcb..f651de8 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -1457,63 +1457,28 @@
   }
 
   if (is_compound && mbmi->mode != GLOBAL_GLOBALMV) {
-    uint8_t ref_frame_type = av1_ref_frame_type(mbmi->ref_frame);
+    int ref_mv_idx = mbmi->ref_mv_idx + 1;
+    nearestmv[0] = xd->ref_mv_stack[ref_frame][0].this_mv;
+    nearestmv[1] = xd->ref_mv_stack[ref_frame][0].comp_mv;
 
-    if (xd->ref_mv_count[ref_frame_type] > 0) {
-      if (mbmi->mode == NEAREST_NEARESTMV) {
-        nearestmv[0] = xd->ref_mv_stack[ref_frame_type][0].this_mv;
-        nearestmv[1] = xd->ref_mv_stack[ref_frame_type][0].comp_mv;
-#if CONFIG_AMVR
-        lower_mv_precision(&nearestmv[0].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
-        lower_mv_precision(&nearestmv[1].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
-#else
-        lower_mv_precision(&nearestmv[0].as_mv, allow_hp);
-        lower_mv_precision(&nearestmv[1].as_mv, allow_hp);
-#endif
-      } else if (mbmi->mode == NEAREST_NEWMV) {
-        nearestmv[0] = xd->ref_mv_stack[ref_frame_type][0].this_mv;
+    nearmv[0] = xd->ref_mv_stack[ref_frame][ref_mv_idx].this_mv;
+    nearmv[1] = xd->ref_mv_stack[ref_frame][ref_mv_idx].comp_mv;
 
 #if CONFIG_AMVR
-        lower_mv_precision(&nearestmv[0].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
+    lower_mv_precision(&nearestmv[0].as_mv, allow_hp,
+                       cm->cur_frame_force_integer_mv);
+    lower_mv_precision(&nearestmv[1].as_mv, allow_hp,
+                       cm->cur_frame_force_integer_mv);
+    lower_mv_precision(&nearmv[0].as_mv, allow_hp,
+                       cm->cur_frame_force_integer_mv);
+    lower_mv_precision(&nearmv[1].as_mv, allow_hp,
+                       cm->cur_frame_force_integer_mv);
 #else
-        lower_mv_precision(&nearestmv[0].as_mv, allow_hp);
+    lower_mv_precision(&nearestmv[0].as_mv, allow_hp);
+    lower_mv_precision(&nearestmv[1].as_mv, allow_hp);
+    lower_mv_precision(&nearmv[0].as_mv, allow_hp);
+    lower_mv_precision(&nearmv[1].as_mv, allow_hp);
 #endif
-      } else if (mbmi->mode == NEW_NEARESTMV) {
-        nearestmv[1] = xd->ref_mv_stack[ref_frame_type][0].comp_mv;
-#if CONFIG_AMVR
-        lower_mv_precision(&nearestmv[1].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
-#else
-        lower_mv_precision(&nearestmv[1].as_mv, allow_hp);
-#endif
-      }
-    }
-
-    if (xd->ref_mv_count[ref_frame_type] > 1) {
-      int ref_mv_idx = 1 + mbmi->ref_mv_idx;
-      if (compound_ref0_mode(mbmi->mode) == NEARMV) {
-        nearmv[0] = xd->ref_mv_stack[ref_frame_type][ref_mv_idx].this_mv;
-#if CONFIG_AMVR
-        lower_mv_precision(&nearmv[0].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
-#else
-        lower_mv_precision(&nearmv[0].as_mv, allow_hp);
-#endif
-      }
-
-      if (compound_ref1_mode(mbmi->mode) == NEARMV) {
-        nearmv[1] = xd->ref_mv_stack[ref_frame_type][ref_mv_idx].comp_mv;
-#if CONFIG_AMVR
-        lower_mv_precision(&nearmv[1].as_mv, allow_hp,
-                           cm->cur_frame_force_integer_mv);
-#else
-        lower_mv_precision(&nearmv[1].as_mv, allow_hp);
-#endif
-      }
-    }
   } else if (mbmi->ref_mv_idx > 0 && mbmi->mode == NEARMV) {
     int_mv cur_mv =
         xd->ref_mv_stack[mbmi->ref_frame[0]][1 + mbmi->ref_mv_idx].this_mv;