Cut off motion field when if cm->use_prev_frame_mvs is off
When the frame header requires to cut off the motion vector
referencing from prior frames, shut off the use of motion field.
BUG=aomedia:984
Change-Id: Ib47129ea538248f4e67d115be2da3b5dd861693e
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index 330110f..463a84a 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -723,42 +723,46 @@
ref_mv_stack[idx].weight += REF_CAT_LEVEL;
#if CONFIG_MFMV
- int blk_row, blk_col;
- int coll_blk_count = 0;
- int voffset = AOMMAX(mi_size_high[BLOCK_8X8], xd->n8_h);
- int hoffset = AOMMAX(mi_size_wide[BLOCK_8X8], xd->n8_w);
+ if (cm->use_prev_frame_mvs) {
+ int blk_row, blk_col;
+ int coll_blk_count = 0;
+ int voffset = AOMMAX(mi_size_high[BLOCK_8X8], xd->n8_h);
+ int hoffset = AOMMAX(mi_size_wide[BLOCK_8X8], xd->n8_w);
- int tpl_sample_pos[9][2] = {
- { -2, hoffset }, { 0, hoffset }, { voffset, hoffset },
- { voffset, 0 }, { voffset, -2 }, { voffset, -4 },
- { -4, hoffset }, { voffset, 4 }, { 2, hoffset + 4 },
- };
- int i;
+ int tpl_sample_pos[9][2] = {
+ { -2, hoffset }, { 0, hoffset }, { voffset, hoffset },
+ { voffset, 0 }, { voffset, -2 }, { voffset, -4 },
+ { -4, hoffset }, { voffset, 4 }, { 2, hoffset + 4 },
+ };
+ int i;
- for (blk_row = 0; blk_row < xd->n8_h; blk_row += mi_size_high[BLOCK_8X8]) {
- for (blk_col = 0; blk_col < xd->n8_w; blk_col += mi_size_wide[BLOCK_8X8]) {
+ for (blk_row = 0; blk_row < xd->n8_h; blk_row += mi_size_high[BLOCK_8X8]) {
+ for (blk_col = 0; blk_col < xd->n8_w;
+ blk_col += mi_size_wide[BLOCK_8X8]) {
+ // (TODO: yunqing) prev_frame_mvs_base is not used here, tpl_mvs is
+ // used.
+ // Can be modified the same way.
+ int is_available = add_tpl_ref_mv(
+ cm, prev_frame_mvs_base, xd, mi_row, mi_col, ref_frame, blk_row,
+ blk_col, refmv_count, ref_mv_stack, mode_context);
+ if (blk_row == 0 && blk_col == 0) coll_blk_count = is_available;
+ }
+ }
+
+ if (coll_blk_count == 0) mode_context[ref_frame] |= (1 << ZEROMV_OFFSET);
+
+ for (i = 0; i < 9; ++i) {
+ blk_row = tpl_sample_pos[i][0];
+ blk_col = tpl_sample_pos[i][1];
+
+ if (!check_sb_border(cm, mi_row, mi_col, blk_row, blk_col)) continue;
// (TODO: yunqing) prev_frame_mvs_base is not used here, tpl_mvs is used.
// Can be modified the same way.
- int is_available = add_tpl_ref_mv(
- cm, prev_frame_mvs_base, xd, mi_row, mi_col, ref_frame, blk_row,
- blk_col, refmv_count, ref_mv_stack, mode_context);
- if (blk_row == 0 && blk_col == 0) coll_blk_count = is_available;
+ coll_blk_count += add_tpl_ref_mv(cm, prev_frame_mvs_base, xd, mi_row,
+ mi_col, ref_frame, blk_row, blk_col,
+ refmv_count, ref_mv_stack, mode_context);
}
}
-
- if (coll_blk_count == 0) mode_context[ref_frame] |= (1 << ZEROMV_OFFSET);
-
- for (i = 0; i < 9; ++i) {
- blk_row = tpl_sample_pos[i][0];
- blk_col = tpl_sample_pos[i][1];
-
- if (!check_sb_border(cm, mi_row, mi_col, blk_row, blk_col)) continue;
- // (TODO: yunqing) prev_frame_mvs_base is not used here, tpl_mvs is used.
- // Can be modified the same way.
- coll_blk_count += add_tpl_ref_mv(cm, prev_frame_mvs_base, xd, mi_row,
- mi_col, ref_frame, blk_row, blk_col,
- refmv_count, ref_mv_stack, mode_context);
- }
#else
#if CONFIG_TEMPMV_SIGNALING
if (cm->use_prev_frame_mvs && rf[1] == NONE_FRAME)