Better block center in gm_get_motion_vector fn
Also supports homography models for future experiments.
Change-Id: I4510540f54133e063891ed491c95c087222f7810
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index daef18b..06534e2 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -1281,13 +1281,13 @@
#else
FRAME_CONTEXT *ec_ctx = cm->fc;
#endif
+ BLOCK_SIZE bsize = xd->mi[0]->mbmi.sb_type;
#if CONFIG_REF_MV
MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
#if CONFIG_CB4X4
int_mv *pred_mv = mbmi->pred_mv;
(void)block;
#else
- BLOCK_SIZE bsize = mbmi->sb_type;
int_mv *pred_mv =
(bsize >= BLOCK_8X8) ? mbmi->pred_mv : xd->mi[0]->bmi[block].pred_mv;
#endif // CONFIG_CB4X4
@@ -1298,6 +1298,7 @@
(void)cm;
(void)mi_row;
(void)mi_col;
+ (void)bsize;
switch (mode) {
#if CONFIG_EXT_INTER
@@ -1354,14 +1355,14 @@
#if CONFIG_GLOBAL_MOTION
mv[0].as_int = gm_get_motion_vector(&cm->global_motion[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;
if (is_compound)
mv[1].as_int = gm_get_motion_vector(&cm->global_motion[ref_frame[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;
#else
mv[0].as_int = 0;
@@ -1511,13 +1512,13 @@
#if CONFIG_GLOBAL_MOTION
mv[0].as_int = gm_get_motion_vector(&cm->global_motion[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;
mv[1].as_int = gm_get_motion_vector(&cm->global_motion[ref_frame[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;
#else
mv[0].as_int = 0;
@@ -1625,15 +1626,15 @@
#if CONFIG_GLOBAL_MOTION
zeromv[0].as_int = gm_get_motion_vector(&cm->global_motion[rf[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 =
(rf[1] != NONE_FRAME)
? gm_get_motion_vector(&cm->global_motion[rf[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