GF length reduction: respect min_gf_interval.
Don't reduce length when min_gf_interval frames are left.
STATS_CHANGED for rare cases where GF length was mistakenly reduced even
though it was exactly same as min_gf_interval already.
Change-Id: I971198f2c984f6bb9e8264932edd6dd69d89f377
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c
index bdcd20a..ac22b68 100644
--- a/av1/encoder/pass2_strategy.c
+++ b/av1/encoder/pass2_strategy.c
@@ -945,11 +945,12 @@
next_gf_len + 1 >= rc->min_gf_interval;
if (single_overlay_left || unbalanced_gf) {
- // Note: Tried roll_back = DIVIDE_AND_ROUND(i, 8), but is does not work
- // better in the current setting
const int roll_back = REDUCE_GF_LENGTH_BY;
- alt_offset = -roll_back;
- i -= roll_back;
+ // Reduce length only if active_min_gf_interval will be respected later.
+ if (i - roll_back >= active_min_gf_interval + 1) {
+ alt_offset = -roll_back;
+ i -= roll_back;
+ }
}
}