Copy global motion to mbmi to help with context
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index b2d812a..a104738 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -481,6 +481,8 @@
#else
WarpedMotionParams wm_params;
#endif // CONFIG_EXTENDED_WARP_PREDICTION
+ /*! \brief Whether global affine warp is used for the block */
+ int global_mv_block[2];
/*! \brief The type of intra mode used by inter-intra */
INTERINTRA_MODE interintra_mode;
/*! \brief The type of wedge used in interintra mode. */
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index 9c7c461..36a6bb5 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -384,7 +384,6 @@
const MV_REFERENCE_FRAME rf[2], uint8_t *refmv_count,
uint8_t *ref_match_count, uint8_t *newmv_count, CANDIDATE_MV *ref_mv_stack,
uint16_t *ref_mv_weight, int_mv *gm_mv_candidates,
- const WarpedMotionParams *gm_params[INTER_REFS_PER_FRAME],
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
const MB_MODE_INFO *mbmi,
MV_REFERENCE_FRAME ref_frame_idx0[MAX_REF_MV_STACK_SIZE],
@@ -437,7 +436,7 @@
#endif
int_mv this_refmv[2];
for (ref = 0; ref < 2; ++ref) {
- if (is_global_mv_block(candidate, gm_params[rf[ref]]->wmtype))
+ if (candidate->global_mv_block[ref])
this_refmv[ref] = gm_mv_candidates[ref];
else
this_refmv[ref] = get_block_mv(candidate,
@@ -488,10 +487,9 @@
#endif // CONFIG_C071_SUBBLK_WARPMV
ref);
} else {
- const int is_gm_block =
- rf[0] == NONE_FRAME || rf[0] == INTRA_FRAME
- ? 0
- : is_global_mv_block(candidate, gm_params[rf[0]]->wmtype);
+ const int is_gm_block = rf[0] == NONE_FRAME || rf[0] == INTRA_FRAME
+ ? 0
+ : candidate->global_mv_block[ref];
this_refmv = is_gm_block ? gm_mv_candidates[0]
: get_block_mv(candidate,
#if CONFIG_C071_SUBBLK_WARPMV
@@ -500,10 +498,9 @@
ref);
}
#else
- const int is_gm_block =
- rf[0] == NONE_FRAME || rf[0] == INTRA_FRAME
- ? 0
- : is_global_mv_block(candidate, gm_params[rf[0]]->wmtype);
+ const int is_gm_block = rf[0] == NONE_FRAME || rf[0] == INTRA_FRAME
+ ? 0
+ : candidate->global_mv_block[ref];
const int_mv this_refmv = is_gm_block ? gm_mv_candidates[0]
: get_block_mv(candidate,
#if CONFIG_C071_SUBBLK_WARPMV
@@ -554,8 +551,7 @@
const int cand_to_ref_dist =
cm->ref_frame_relative_dist[candidate->ref_frame[ref]];
- const int is_gm_block = is_global_mv_block(
- candidate, gm_params[candidate->ref_frame[ref]]->wmtype);
+ const int is_gm_block = candidate->global_mv_block[ref];
const int_mv cand_refmv = is_gm_block ? gm_mv_candidates[0]
: get_block_mv(candidate,
#if CONFIG_C071_SUBBLK_WARPMV
@@ -616,7 +612,7 @@
int_mv this_refmv[2];
for (ref = 0; ref < 2; ++ref) {
- if (is_global_mv_block(candidate, gm_params[rf[ref]]->wmtype))
+ if (candidate->global_mv_block[ref])
this_refmv[ref] = gm_mv_candidates[ref];
else
this_refmv[ref] = get_block_mv(candidate,
@@ -666,8 +662,8 @@
if (candidate_ref_idx0 != -1 && candidate_ref_idx1 != -1) {
int_mv this_refmv[2];
- const int is_gm_block = is_global_mv_block(
- candidate, gm_params[rf[candidate_ref_idx0]]->wmtype);
+ const int is_gm_block =
+ candidate->global_mv_block[candidate_ref_idx0];
this_refmv[candidate_ref_idx0] =
is_gm_block ? gm_mv_candidates[candidate_ref_idx0]
: get_block_mv(candidate,
@@ -819,7 +815,6 @@
int mi_col, const MV_REFERENCE_FRAME rf[2], int row_offset,
CANDIDATE_MV *ref_mv_stack, uint16_t *ref_mv_weight, uint8_t *refmv_count,
uint8_t *ref_match_count, uint8_t *newmv_count, int_mv *gm_mv_candidates,
- const WarpedMotionParams *gm_params[INTER_REFS_PER_FRAME],
int max_row_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
MV_REFERENCE_FRAME *ref_frame_idx0, MV_REFERENCE_FRAME *ref_frame_idx1,
@@ -922,7 +917,6 @@
#endif // CONFIG_C071_SUBBLK_WARPMV
rf, refmv_count, ref_match_count, newmv_count,
ref_mv_stack, ref_mv_weight, gm_mv_candidates,
- gm_params,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
xd->mi[0], ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -981,9 +975,7 @@
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
const MV_REFERENCE_FRAME rf[2], int col_offset, CANDIDATE_MV *ref_mv_stack,
uint16_t *ref_mv_weight, uint8_t *refmv_count, uint8_t *ref_match_count,
- uint8_t *newmv_count, int_mv *gm_mv_candidates,
- const WarpedMotionParams *gm_params[INTER_REFS_PER_FRAME],
- int max_col_offset,
+ uint8_t *newmv_count, int_mv *gm_mv_candidates, int max_col_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
MV_REFERENCE_FRAME *ref_frame_idx0, MV_REFERENCE_FRAME *ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1083,7 +1075,6 @@
#endif // CONFIG_C071_SUBBLK_WARPMV
rf, refmv_count, ref_match_count, newmv_count,
ref_mv_stack, ref_mv_weight, gm_mv_candidates,
- gm_params,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
xd->mi[0], ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1131,7 +1122,6 @@
const int mi_col, const MV_REFERENCE_FRAME rf[2], int row_offset,
int col_offset, CANDIDATE_MV *ref_mv_stack, uint16_t *ref_mv_weight,
uint8_t *ref_match_count, uint8_t *newmv_count, int_mv *gm_mv_candidates,
- const WarpedMotionParams *gm_params[INTER_REFS_PER_FRAME],
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
MV_REFERENCE_FRAME *ref_frame_idx0, MV_REFERENCE_FRAME *ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1193,7 +1183,6 @@
#endif // CONFIG_C071_SUBBLK_WARPMV
rf, refmv_count, ref_match_count, newmv_count,
ref_mv_stack, ref_mv_weight, gm_mv_candidates,
- gm_params,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
xd->mi[0], ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1789,10 +1778,6 @@
const int has_bl = has_bottom_left(cm, xd, mi_row, mi_col, bs);
#endif // CONFIG_C043_MVP_IMPROVEMENTS
#endif // CONFIG_EXT_RECUR_PARTITIONS
- const WarpedMotionParams *gm_params[INTER_REFS_PER_FRAME];
- for (int r = 0; r < INTER_REFS_PER_FRAME; ++r) {
- gm_params[r] = effective_global_motion(xd, r);
- }
MV_REFERENCE_FRAME rf[2];
const TileInfo *const tile = &xd->tile;
@@ -1862,7 +1847,7 @@
if (xd->left_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, (xd->height - 1), -1,
ref_mv_stack, ref_mv_weight, &col_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1881,7 +1866,7 @@
if (xd->up_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, (xd->width - 1), ref_mv_stack,
ref_mv_weight, &row_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1898,7 +1883,7 @@
if (xd->left_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, 0, -1, ref_mv_stack,
ref_mv_weight, &col_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1917,7 +1902,7 @@
if (xd->up_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, 0, ref_mv_stack,
ref_mv_weight, &row_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1934,7 +1919,7 @@
if (has_bl) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, xd->height, -1, ref_mv_stack,
ref_mv_weight, &col_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1951,7 +1936,7 @@
if (has_tr) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, xd->width, ref_mv_stack,
ref_mv_weight, &row_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1970,7 +1955,7 @@
uint8_t dummy_new_mv_count = 0;
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, -1, ref_mv_stack,
ref_mv_weight, &dummy_ref_match_count, &dummy_new_mv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -1987,7 +1972,7 @@
if (xd->left_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, (xd->height >> 1), -1,
ref_mv_stack, ref_mv_weight, &col_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2006,7 +1991,7 @@
if (xd->up_available) {
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, (xd->width >> 1),
ref_mv_stack, ref_mv_weight, &row_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2028,7 +2013,7 @@
mi_row,
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
mi_col, rf, -1, ref_mv_stack, ref_mv_weight, refmv_count,
- &row_match_count, &newmv_count, gm_mv_candidates, gm_params,
+ &row_match_count, &newmv_count, gm_mv_candidates,
max_row_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
@@ -2050,7 +2035,7 @@
mi_col,
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
rf, -1, ref_mv_stack, ref_mv_weight, refmv_count,
- &col_match_count, &newmv_count, gm_mv_candidates, gm_params,
+ &col_match_count, &newmv_count, gm_mv_candidates,
max_col_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
@@ -2069,7 +2054,7 @@
if (has_tr)
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, xd->width, ref_mv_stack,
ref_mv_weight, &row_match_count, &newmv_count,
- gm_mv_candidates, gm_params,
+ gm_mv_candidates,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2206,7 +2191,6 @@
// Scan the second outer area.
scan_blk_mbmi(cm, xd, mi_row, mi_col, rf, -1, -1, ref_mv_stack, ref_mv_weight,
&row_match_count, &dummy_newmv_count, gm_mv_candidates,
- gm_params,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2232,7 +2216,7 @@
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
rf, col_offset, ref_mv_stack, ref_mv_weight, refmv_count,
&col_match_count, &dummy_newmv_count, gm_mv_candidates,
- gm_params, max_col_offset,
+ max_col_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2258,7 +2242,7 @@
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
mi_col, rf, row_offset, ref_mv_stack, ref_mv_weight,
refmv_count, &row_match_count, &dummy_newmv_count,
- gm_mv_candidates, gm_params, max_row_offset,
+ gm_mv_candidates, max_row_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
@@ -2277,7 +2261,7 @@
#endif // CONFIG_TIP || CONFIG_EXT_RECUR_PARTITIONS
rf, col_offset, ref_mv_stack, ref_mv_weight, refmv_count,
&col_match_count, &dummy_newmv_count, gm_mv_candidates,
- gm_params, max_col_offset,
+ max_col_offset,
#if CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
ref_frame_idx0, ref_frame_idx1,
#endif // CONFIG_SKIP_MODE_DRL_WITH_REF_IDX
diff --git a/av1/common/mvref_common.h b/av1/common/mvref_common.h
index e86a73a..ee36d33 100644
--- a/av1/common/mvref_common.h
+++ b/av1/common/mvref_common.h
@@ -981,7 +981,7 @@
}
}
}
- *params = effective_global_motion(xd, mbmi->ref_frame[0]);
+ *params = *effective_global_motion(xd, mbmi->ref_frame[0]);
#else
assert(mbmi->warp_ref_idx < mbmi->max_num_warp_candidates);
*params = warp_param_stack[mbmi->warp_ref_idx].wm_params;
@@ -1007,13 +1007,11 @@
const MACROBLOCKD *xd,
const MB_MODE_INFO *neighbor_mi,
WarpedMotionParams *wm_params) {
- const WarpedMotionParams *gm_params =
- &cm->global_motion[neighbor_mi->ref_frame[0]];
-
+ (void)cm;
if (is_warp_mode(neighbor_mi->motion_mode)) {
*wm_params = neighbor_mi->wm_params[0];
- } else if (is_global_mv_block(neighbor_mi, gm_params->wmtype)) {
- *wm_params = *gm_params;
+ } else if (neighbor_mi->global_mv_block[0]) {
+ *wm_params = neighbor_mi->wm_params[0];
} else {
// Neighbor block is translation-only, so doesn't have
// a warp model. So we need to synthesize one.
@@ -1057,11 +1055,9 @@
xd->mi[mi_pos.row * xd->mi_stride + mi_pos.col];
if (!is_inter_ref_frame(left_mi->ref_frame[0])) return 1;
if (left_mi->ref_frame[0] != mbmi->ref_frame[0]) return 1;
- const WarpedMotionParams *gm_params =
- &xd->global_motion[left_mi->ref_frame[0]];
if (is_warp_mode(left_mi->motion_mode)) {
return 2;
- } else if (is_global_mv_block(left_mi, gm_params->wmtype)) {
+ } else if (left_mi->global_mv_block[0]) {
return 3;
} else {
// Neighbor block is translation-only
@@ -1084,11 +1080,9 @@
xd->mi[mi_pos.row * xd->mi_stride + mi_pos.col];
if (!is_inter_ref_frame(above_mi->ref_frame[0])) return 1;
if (above_mi->ref_frame[0] != mbmi->ref_frame[0]) return 1;
- const WarpedMotionParams *gm_params =
- &xd->global_motion[above_mi->ref_frame[0]];
if (is_warp_mode(above_mi->motion_mode)) {
return 2;
- } else if (is_global_mv_block(above_mi, gm_params->wmtype)) {
+ } else if (above_mi->global_mv_block[0]) {
return 3;
} else {
// Neighbor block is translation-only
diff --git a/av1/common/warped_motion.h b/av1/common/warped_motion.h
index 7ac8e0d..0d44c49 100644
--- a/av1/common/warped_motion.h
+++ b/av1/common/warped_motion.h
@@ -366,6 +366,38 @@
wm_params->wmtype = HOMOGRAPHY;
}
+static INLINE void copy_global_motion_to_mbmi(const MACROBLOCKD *xd,
+ MB_MODE_INFO *mbmi) {
+ const BLOCK_SIZE bsize = mbmi->sb_type[PLANE_TYPE_Y];
+ const int block_size_allowed =
+ AOMMIN(block_size_wide[bsize], block_size_high[bsize]) >= 8;
+ mbmi->global_mv_block[0] = 0;
+ mbmi->global_mv_block[1] = 0;
+ if (!block_size_allowed) return;
+ const PREDICTION_MODE this_mode = mbmi->mode;
+ if (this_mode == GLOBALMV) {
+ const WarpedMotionParams *gm0 =
+ effective_global_motion(xd, mbmi->ref_frame[0]);
+ if (gm0->wmtype > TRANSLATION) {
+ mbmi->wm_params[0] = *gm0;
+ mbmi->global_mv_block[0] = 1;
+ }
+ } else if (this_mode == GLOBAL_GLOBALMV) {
+ const WarpedMotionParams *gm0 =
+ effective_global_motion(xd, mbmi->ref_frame[0]);
+ const WarpedMotionParams *gm1 =
+ effective_global_motion(xd, mbmi->ref_frame[1]);
+ if (gm0->wmtype > TRANSLATION) {
+ mbmi->wm_params[0] = *gm0;
+ mbmi->global_mv_block[0] = 1;
+ }
+ if (gm1->wmtype > TRANSLATION) {
+ mbmi->wm_params[1] = *gm1;
+ mbmi->global_mv_block[1] = 1;
+ }
+ }
+}
+
#if CONFIG_IMPROVED_GLOBAL_MOTION
static INLINE void av1_scale_warp_model(const WarpedMotionParams *in_params,
int in_distance,
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index e47ee97..0df31b6 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -3191,6 +3191,10 @@
AV1_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &dcb->xd;
MB_MODE_INFO *const mi = xd->mi[0];
+ mi->wm_params[0] = default_warp_params;
+ mi->wm_params[1] = default_warp_params;
+ mi->global_mv_block[0] = 0;
+ mi->global_mv_block[1] = 0;
mi->use_intrabc[xd->tree_type == CHROMA_PART] = 0;
if (xd->tree_type == SHARED_PART)
@@ -3210,6 +3214,7 @@
y_inside_boundary);
} else {
read_inter_frame_mode_info(pbi, dcb, r);
+ copy_global_motion_to_mbmi(xd, mi);
#if CONFIG_BVP_IMPROVEMENT && CONFIG_REF_MV_BANK
if (cm->seq_params.enable_refmvbank) {
MB_MODE_INFO *const mbmi = xd->mi[0];
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index da3e767..7dd0b37 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5599,6 +5599,10 @@
ctx->rd_stats.skip_txfm = 0;
mbmi->ref_frame[0] = INTRA_FRAME;
mbmi->ref_frame[1] = NONE_FRAME;
+ mbmi->wm_params[0] = default_warp_params;
+ mbmi->wm_params[1] = default_warp_params;
+ mbmi->global_mv_block[0] = 0;
+ mbmi->global_mv_block[1] = 0;
mbmi->use_intrabc[xd->tree_type == CHROMA_PART] = 0;
if (xd->tree_type != CHROMA_PART) {
mbmi->mv[0].as_int = 0;
@@ -7154,6 +7158,11 @@
mbmi->mv[0].as_int = mbmi->mv[1].as_int = 0;
mbmi->motion_mode = SIMPLE_TRANSLATION;
mbmi->interintra_mode = (INTERINTRA_MODE)(II_DC_PRED - 1);
+ mbmi->wm_params[0] = default_warp_params;
+ mbmi->wm_params[1] = default_warp_params;
+ mbmi->global_mv_block[0] = 0;
+ mbmi->global_mv_block[1] = 0;
+ copy_global_motion_to_mbmi(xd, mbmi);
set_default_interp_filters(mbmi,
#if CONFIG_OPTFLOW_REFINEMENT
cm,
@@ -8907,6 +8916,7 @@
assert(mbmi->interp_fltr == av1_unswitchable_filter(interp_filter));
}
}
+ copy_global_motion_to_mbmi(xd, mbmi);
for (i = 0; i < REFERENCE_MODES; ++i) {
if (search_state.intra_search_state.best_pred_rd[i] == INT64_MAX) {
@@ -9015,6 +9025,11 @@
const MV_REFERENCE_FRAME last_frame = get_closest_pastcur_ref_index(cm);
mbmi->ref_frame[0] = last_frame;
mbmi->ref_frame[1] = NONE_FRAME;
+ mbmi->wm_params[0] = default_warp_params;
+ mbmi->wm_params[1] = default_warp_params;
+ mbmi->global_mv_block[0] = 0;
+ mbmi->global_mv_block[1] = 0;
+ copy_global_motion_to_mbmi(xd, mbmi);
#if CONFIG_TIP
if (is_tip_ref_frame(mbmi->ref_frame[0])) {
mbmi->mv[0].as_int = 0;
@@ -9129,6 +9144,7 @@
}
av1_zero(best_pred_diff);
+ copy_global_motion_to_mbmi(xd, mbmi);
store_coding_context(x, ctx, best_pred_diff, 0
#if CONFIG_C071_SUBBLK_WARPMV