first pass: Respect the rc->max_gf_interval.
max_gf_interval may be provided by the user, or we may have set it to a
default value in av1_rc_init().
So, we should respect that value in the breakout condition, instead of
recalculating it based on pyramid levels.
No change in stats if there was no user provided value for
max_gf_interval.
Change-Id: Ie462ba8b53229dd96d8b7c10a867caf01476f653
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index 62d21d5..eefce39 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -2216,6 +2216,7 @@
double boost_score = 0.0;
int active_min_gf_interval;
+ int active_max_gf_interval;
double gf_group_err = 0.0;
#if GROUP_ADAPTIVE_MAXQ
double gf_group_raw_error = 0.0;
@@ -2282,6 +2283,7 @@
// TODO(urvang): Try logic to vary min and max interval based on q.
active_min_gf_interval = rc->min_gf_interval;
+ active_max_gf_interval = rc->max_gf_interval;
double avg_sr_coded_error = 0;
double avg_raw_err_stdev = 0;
@@ -2343,9 +2345,9 @@
boost_score +=
decay_accumulator *
calc_frame_boost(cpi, &next_frame, this_frame_mv_in_out, GF_MAX_BOOST);
- // If almost totally static, we will not use the the fixed GF length later,
+ // If almost totally static, we will not use the the max GF length later,
// so we can continue for more frames.
- if (i >= (av1_rc_get_fixed_gf_length(oxcf->gf_max_pyr_height) + 1) &&
+ if ((i >= active_max_gf_interval + 1) &&
!is_almost_static(zero_motion_accumulator,
twopass->kf_zeromotion_pct)) {
break;