[NORMATIVE] Enable mfmv for low latency settings
Tested in the low latency setting. Comparing the three options:
(1). Cut off temporal mv altogether.
(2). Use collocated mv referncing.
(3). Use mfmv referencing.
The current baseline is using (1).
The results are:
(2) improves the compression performance over (1) by -0.59% for
lowres and -0.65% for midres.
(3) improves over (1) by -1.05% for lowres and -1.43% for midres
BUG=aomedia:1403
Change-Id: Ie683110ecbe16131f8aea123bca490f8897ebdd8
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index 4936c2c..67c26c0 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -1731,6 +1731,7 @@
int gld_buf_idx = cm->frame_refs[GOLDEN_FRAME - LAST_FRAME].idx;
int alt_buf_idx = cm->frame_refs[ALTREF_FRAME - LAST_FRAME].idx;
int lst_buf_idx = cm->frame_refs[LAST_FRAME - LAST_FRAME].idx;
+ int lst2_buf_idx = cm->frame_refs[LAST2_FRAME - LAST_FRAME].idx;
int bwd_buf_idx = cm->frame_refs[BWDREF_FRAME - LAST_FRAME].idx;
int alt2_buf_idx = cm->frame_refs[ALTREF2_FRAME - LAST_FRAME].idx;
@@ -1782,6 +1783,12 @@
if (alt_frame_index > cur_frame_index && ref_stamp >= 0)
if (motion_field_projection(cm, ALTREF_FRAME, ref_stamp, 0)) --ref_stamp;
+
+ if (ref_stamp >= 0 && lst_buf_idx >= 0)
+ if (motion_field_projection(cm, LAST_FRAME, ref_stamp, 2)) --ref_stamp;
+
+ if (ref_stamp >= 0 && lst2_buf_idx >= 0)
+ if (motion_field_projection(cm, LAST2_FRAME, ref_stamp, 2)) --ref_stamp;
}
#endif // CONFIG_MFMV