Allow global motion based translation for sub8x8

Also handle block centers for sub8x8 blocks correctly.

BDRATE: lowres: -1.308%

Change-Id: I6bdb25bdaceb5086a8b951617fd62ed41cd89023
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index a64e8df..70f4e1b 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5046,7 +5046,7 @@
             gm_get_motion_vector(
                 &cpi->common.global_motion[mbmi->ref_frame[ref]],
                 cpi->common.allow_high_precision_mv, mbmi->sb_type, mi_col,
-                mi_row)
+                mi_row, i)
                 .as_int;
         thismvcost += GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[ref]);
 #else
@@ -5104,12 +5104,12 @@
       this_mv[0].as_int =
           gm_get_motion_vector(&cpi->common.global_motion[mbmi->ref_frame[0]],
                                cpi->common.allow_high_precision_mv,
-                               mbmi->sb_type, mi_col, mi_row)
+                               mbmi->sb_type, mi_col, mi_row, i)
               .as_int;
       this_mv[1].as_int =
           gm_get_motion_vector(&cpi->common.global_motion[mbmi->ref_frame[1]],
                                cpi->common.allow_high_precision_mv,
-                               mbmi->sb_type, mi_col, mi_row)
+                               mbmi->sb_type, mi_col, mi_row, i)
               .as_int;
       thismvcost += GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[0]) +
                     GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[1]);
@@ -5380,7 +5380,7 @@
       zeromv[cur_frm].as_int =
           gm_get_motion_vector(&cpi->common.global_motion[ref_frames[cur_frm]],
                                cpi->common.allow_high_precision_mv, bsize,
-                               mi_col, mi_row)
+                               mi_col, mi_row, block)
               .as_int;
     else
 #endif  // CONFIG_GLOBAL_MOTION
@@ -5842,7 +5842,7 @@
         frame_mv[ZEROMV][frame].as_int =
             gm_get_motion_vector(&cm->global_motion[frame],
                                  cm->allow_high_precision_mv, mbmi->sb_type,
-                                 mi_col, mi_row)
+                                 mi_col, mi_row, index)
                 .as_int;
 #else   // CONFIG_GLOBAL_MOTION
         frame_mv[ZEROMV][frame].as_int = 0;
@@ -5875,7 +5875,7 @@
           frame_mv[ZERO_ZEROMV][frame].as_int =
               gm_get_motion_vector(&cm->global_motion[frame],
                                    cm->allow_high_precision_mv, mbmi->sb_type,
-                                   mi_col, mi_row)
+                                   mi_col, mi_row, index)
                   .as_int;
 #else
           frame_mv[ZERO_ZEROMV][frame].as_int = 0;
@@ -9602,7 +9602,8 @@
 #if CONFIG_GLOBAL_MOTION
     frame_mv[ZEROMV][ref_frame].as_int =
         gm_get_motion_vector(&cm->global_motion[ref_frame],
-                             cm->allow_high_precision_mv, bsize, mi_col, mi_row)
+                             cm->allow_high_precision_mv, bsize, mi_col, mi_row,
+                             0)
             .as_int;
 #else   // CONFIG_GLOBAL_MOTION
     frame_mv[ZEROMV][ref_frame].as_int = 0;
@@ -9613,7 +9614,8 @@
 #if CONFIG_GLOBAL_MOTION
     frame_mv[ZERO_ZEROMV][ref_frame].as_int =
         gm_get_motion_vector(&cm->global_motion[ref_frame],
-                             cm->allow_high_precision_mv, bsize, mi_col, mi_row)
+                             cm->allow_high_precision_mv, bsize, mi_col, mi_row,
+                             0)
             .as_int;
 #else   // CONFIG_GLOBAL_MOTION
     frame_mv[ZERO_ZEROMV][ref_frame].as_int = 0;
@@ -9724,7 +9726,7 @@
 #if CONFIG_GLOBAL_MOTION
       zeromv.as_int = gm_get_motion_vector(&cm->global_motion[ALTREF_FRAME],
                                            cm->allow_high_precision_mv, bsize,
-                                           mi_col, mi_row)
+                                           mi_col, mi_row, 0)
                           .as_int;
 #else
       zeromv.as_int = 0;
@@ -10918,14 +10920,14 @@
     const uint8_t rf_type = av1_ref_frame_type(best_mbmode.ref_frame);
 #endif  // CONFIG_REF_MV
 #if CONFIG_GLOBAL_MOTION
-    zeromv[0].as_int =
-        gm_get_motion_vector(&cm->global_motion[refs[0]],
-                             cm->allow_high_precision_mv, bsize, mi_col, mi_row)
-            .as_int;
+    zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
+                                            cm->allow_high_precision_mv, bsize,
+                                            mi_col, mi_row, 0)
+                           .as_int;
     zeromv[1].as_int = comp_pred_mode
                            ? gm_get_motion_vector(&cm->global_motion[refs[1]],
                                                   cm->allow_high_precision_mv,
-                                                  bsize, mi_col, mi_row)
+                                                  bsize, mi_col, mi_row, 0)
                                  .as_int
                            : 0;
 #else
@@ -11037,12 +11039,12 @@
 #if CONFIG_GLOBAL_MOTION
       zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
                                               cm->allow_high_precision_mv,
-                                              bsize, mi_col, mi_row)
+                                              bsize, mi_col, mi_row, 0)
                              .as_int;
       zeromv[1].as_int = comp_pred_mode
                              ? gm_get_motion_vector(&cm->global_motion[refs[1]],
                                                     cm->allow_high_precision_mv,
-                                                    bsize, mi_col, mi_row)
+                                                    bsize, mi_col, mi_row, 0)
                                    .as_int
                              : 0;
 #else
@@ -11088,11 +11090,11 @@
                                            best_mbmode.ref_frame[1] };
       zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
                                               cm->allow_high_precision_mv,
-                                              bsize, mi_col, mi_row)
+                                              bsize, mi_col, mi_row, 0)
                              .as_int;
       zeromv[1].as_int = gm_get_motion_vector(&cm->global_motion[refs[1]],
                                               cm->allow_high_precision_mv,
-                                              bsize, mi_col, mi_row)
+                                              bsize, mi_col, mi_row, 0)
                              .as_int;
       lower_mv_precision(&zeromv[0].as_mv, cm->allow_high_precision_mv);
       lower_mv_precision(&zeromv[1].as_mv, cm->allow_high_precision_mv);
@@ -11254,7 +11256,8 @@
 #if CONFIG_GLOBAL_MOTION
   mbmi->mv[0].as_int =
       gm_get_motion_vector(&cm->global_motion[mbmi->ref_frame[0]],
-                           cm->allow_high_precision_mv, bsize, mi_col, mi_row)
+                           cm->allow_high_precision_mv, bsize, mi_col, mi_row,
+                           0)
           .as_int;
 #else   // CONFIG_GLOBAL_MOTION
   mbmi->mv[0].as_int = 0;