enforce_max_ref_frames only when 7 refs allowed.
A command-line option was recently added to ask for a certain number of
maximum reference frames to use per frame.
We should call enforce_max_ref_frames() only when max_reference_frames
== 7, because for values < 7, we will later restrict to
max_reference_frames specified anyway.
This reduces the loss going from max_reference_frames = 7 to
max_reference_frames = 3 for speed 2 and above.
New numbers for 60 frames:
(baseline: max_reference_frames = 7
compared to: max_reference_frames = 3)
speed 1 (same as before this patch):
- lowres: +1.098
- midres: +1.190
speed 2:
- lowres: +1.648
- midres: +1.616
speed 3:
- lowres: +2.103
- midres: +2.477
Change-Id: Ide8c14e49f1d60280d9e6093108f72517e085162
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index f08b86b..9563ba3 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -6530,7 +6530,9 @@
}
av1_setup_frame_buf_refs(cm);
- if (cpi->sf.selective_ref_frame >= 3) enforce_max_ref_frames(cpi);
+ if (cpi->sf.selective_ref_frame >= 3 && cpi->oxcf.max_reference_frames == 7) {
+ enforce_max_ref_frames(cpi);
+ }
av1_setup_frame_sign_bias(cm);
#if CONFIG_MISMATCH_DEBUG