Better block center in gm_get_motion_vector fn

Also supports homography models for future experiments.

Change-Id: I4510540f54133e063891ed491c95c087222f7810
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index d9e1b27..7b84fd2 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5046,7 +5046,8 @@
             gm_get_motion_vector(
                 &cpi->common.global_motion[mbmi->ref_frame[ref]],
                 cpi->common.allow_high_precision_mv,
-                mi_col * MI_SIZE + MI_SIZE / 2, mi_row * MI_SIZE + MI_SIZE / 2)
+                block_center_x(mi_col, mbmi->sb_type),
+                block_center_y(mi_row, mbmi->sb_type))
                 .as_int;
         thismvcost += GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[ref]);
 #else
@@ -5104,14 +5105,14 @@
       this_mv[0].as_int =
           gm_get_motion_vector(&cpi->common.global_motion[mbmi->ref_frame[0]],
                                cpi->common.allow_high_precision_mv,
-                               mi_col * MI_SIZE + MI_SIZE / 2,
-                               mi_row * MI_SIZE + MI_SIZE / 2)
+                               block_center_x(mi_col, mbmi->sb_type),
+                               block_center_y(mi_row, mbmi->sb_type))
               .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,
-                               mi_col * MI_SIZE + MI_SIZE / 2,
-                               mi_row * MI_SIZE + MI_SIZE / 2)
+                               block_center_x(mi_col, mbmi->sb_type),
+                               block_center_y(mi_row, mbmi->sb_type))
               .as_int;
       thismvcost += GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[0]) +
                     GLOBAL_MOTION_RATE(cpi, mbmi->ref_frame[1]);
@@ -5382,8 +5383,8 @@
       zeromv[cur_frm].as_int =
           gm_get_motion_vector(&cpi->common.global_motion[ref_frames[cur_frm]],
                                cpi->common.allow_high_precision_mv,
-                               mi_col * MI_SIZE + MI_SIZE / 2,
-                               mi_row * MI_SIZE + MI_SIZE / 2)
+                               block_center_x(mi_col, bsize),
+                               block_center_y(mi_row, bsize))
               .as_int;
     else
 #endif  // CONFIG_GLOBAL_MOTION
@@ -5843,9 +5844,10 @@
 #endif  // CONFIG_EXT_INTER
 #if CONFIG_GLOBAL_MOTION
         frame_mv[ZEROMV][frame].as_int =
-            gm_get_motion_vector(
-                &cm->global_motion[frame], cm->allow_high_precision_mv,
-                mi_col * MI_SIZE + MI_SIZE / 2, mi_row * MI_SIZE + MI_SIZE / 2)
+            gm_get_motion_vector(&cm->global_motion[frame],
+                                 cm->allow_high_precision_mv,
+                                 block_center_x(mi_col, mbmi->sb_type),
+                                 block_center_y(mi_row, mbmi->sb_type))
                 .as_int;
 #else   // CONFIG_GLOBAL_MOTION
         frame_mv[ZEROMV][frame].as_int = 0;
@@ -5878,8 +5880,8 @@
           frame_mv[ZERO_ZEROMV][frame].as_int =
               gm_get_motion_vector(&cm->global_motion[frame],
                                    cm->allow_high_precision_mv,
-                                   mi_col * MI_SIZE + MI_SIZE / 2,
-                                   mi_row * MI_SIZE + MI_SIZE / 2)
+                                   block_center_x(mi_col, mbmi->sb_type),
+                                   block_center_y(mi_row, mbmi->sb_type))
                   .as_int;
 #else
           frame_mv[ZERO_ZEROMV][frame].as_int = 0;
@@ -9568,7 +9570,7 @@
     frame_mv[ZEROMV][ref_frame].as_int =
         gm_get_motion_vector(
             &cm->global_motion[ref_frame], cm->allow_high_precision_mv,
-            mi_col * MI_SIZE + MI_SIZE / 2, mi_row * MI_SIZE + MI_SIZE / 2)
+            block_center_x(mi_col, bsize), block_center_y(mi_row, bsize))
             .as_int;
 #else   // CONFIG_GLOBAL_MOTION
     frame_mv[ZEROMV][ref_frame].as_int = 0;
@@ -9580,7 +9582,7 @@
     frame_mv[ZERO_ZEROMV][ref_frame].as_int =
         gm_get_motion_vector(
             &cm->global_motion[ref_frame], cm->allow_high_precision_mv,
-            mi_col * MI_SIZE + MI_SIZE / 2, mi_row * MI_SIZE + MI_SIZE / 2)
+            block_center_x(mi_col, bsize), block_center_y(mi_row, bsize))
             .as_int;
 #else   // CONFIG_GLOBAL_MOTION
     frame_mv[ZERO_ZEROMV][ref_frame].as_int = 0;
@@ -9684,8 +9686,8 @@
 #if CONFIG_GLOBAL_MOTION
       zeromv.as_int = gm_get_motion_vector(&cm->global_motion[ALTREF_FRAME],
                                            cm->allow_high_precision_mv,
-                                           mi_col * MI_SIZE + MI_SIZE / 2,
-                                           mi_row * MI_SIZE + MI_SIZE / 2)
+                                           block_center_x(mi_col, bsize),
+                                           block_center_y(mi_row, bsize))
                           .as_int;
 #else
       zeromv.as_int = 0;
@@ -10853,17 +10855,16 @@
 #if CONFIG_GLOBAL_MOTION
     zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
                                             cm->allow_high_precision_mv,
-                                            mi_col * MI_SIZE + MI_SIZE / 2,
-                                            mi_row * MI_SIZE + MI_SIZE / 2)
+                                            block_center_x(mi_col, bsize),
+                                            block_center_y(mi_row, bsize))
                            .as_int;
-    zeromv[1].as_int =
-        comp_pred_mode
-            ? gm_get_motion_vector(&cm->global_motion[refs[1]],
-                                   cm->allow_high_precision_mv,
-                                   mi_col * MI_SIZE + MI_SIZE / 2,
-                                   mi_row * MI_SIZE + MI_SIZE / 2)
-                  .as_int
-            : 0;
+    zeromv[1].as_int = comp_pred_mode
+                           ? gm_get_motion_vector(&cm->global_motion[refs[1]],
+                                                  cm->allow_high_precision_mv,
+                                                  block_center_x(mi_col, bsize),
+                                                  block_center_y(mi_row, bsize))
+                                 .as_int
+                           : 0;
 #else
     zeromv[0].as_int = 0;
     zeromv[1].as_int = 0;
@@ -10973,15 +10974,15 @@
 #if CONFIG_GLOBAL_MOTION
       zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
                                               cm->allow_high_precision_mv,
-                                              mi_col * MI_SIZE + MI_SIZE / 2,
-                                              mi_row * MI_SIZE + MI_SIZE / 2)
+                                              block_center_x(mi_col, bsize),
+                                              block_center_y(mi_row, bsize))
                              .as_int;
       zeromv[1].as_int =
           comp_pred_mode
               ? gm_get_motion_vector(&cm->global_motion[refs[1]],
                                      cm->allow_high_precision_mv,
-                                     mi_col * MI_SIZE + MI_SIZE / 2,
-                                     mi_row * MI_SIZE + MI_SIZE / 2)
+                                     block_center_x(mi_col, bsize),
+                                     block_center_y(mi_row, bsize))
                     .as_int
               : 0;
 #else
@@ -11027,13 +11028,13 @@
                                            best_mbmode.ref_frame[1] };
       zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[refs[0]],
                                               cm->allow_high_precision_mv,
-                                              mi_col * MI_SIZE + MI_SIZE / 2,
-                                              mi_row * MI_SIZE + MI_SIZE / 2)
+                                              block_center_x(mi_col, bsize),
+                                              block_center_y(mi_row, bsize))
                              .as_int;
       zeromv[1].as_int = gm_get_motion_vector(&cm->global_motion[refs[1]],
                                               cm->allow_high_precision_mv,
-                                              mi_col * MI_SIZE + MI_SIZE / 2,
-                                              mi_row * MI_SIZE + MI_SIZE / 2)
+                                              block_center_x(mi_col, bsize),
+                                              block_center_y(mi_row, bsize))
                              .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);
@@ -11196,7 +11197,7 @@
   mbmi->mv[0].as_int =
       gm_get_motion_vector(
           &cm->global_motion[mbmi->ref_frame[0]], cm->allow_high_precision_mv,
-          mi_col * MI_SIZE + MI_SIZE / 2, mi_row * MI_SIZE + MI_SIZE / 2)
+          block_center_x(mi_col, bsize), block_center_y(mi_row, bsize))
           .as_int;
 #else   // CONFIG_GLOBAL_MOTION
   mbmi->mv[0].as_int = 0;