ref: 01ba4cf0ac28f6a84f7a60dae14d3c1e3c0c45c0
parent: ec7ab809c55ceca4cfd6c768e4ebc02feef6a51f
author: Paul Wilkins <paulwilkins@google.com>
date: Thu Sep 27 06:55:05 EDT 2018
Fix minor bug in calculation of max arf group length. Their is no valid last boosted Q availably when estimating the maximum group length for the first ARF group in a clip, so use a value based on the current max q. Change-Id: Ida0b4bfb7ce7433089ad808abed7f59c88527a81
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -2523,8 +2523,11 @@
{
int int_max_q = (int)(vp9_convert_qindex_to_q(twopass->active_worst_quality,
cpi->common.bit_depth));
- int int_lbq = (int)(vp9_convert_qindex_to_q(rc->last_boosted_qindex,
- cpi->common.bit_depth));
+ int q_term = (cm->current_video_frame == 0)
+ ? int_max_q / 32
+ : (int)(vp9_convert_qindex_to_q(rc->last_boosted_qindex,
+ cpi->common.bit_depth) /
+ 6);
active_min_gf_interval =
rc->min_gf_interval + arf_active_or_kf + VPXMIN(2, int_max_q / 200);
active_min_gf_interval =
@@ -2534,7 +2537,7 @@
// bits to spare and are better with a smaller interval and smaller boost.
// At high Q when there are few bits to spare we are better with a longer
// interval to spread the cost of the GF.
- active_max_gf_interval = 12 + arf_active_or_kf + VPXMIN(4, (int_lbq / 6));
+ active_max_gf_interval = 12 + arf_active_or_kf + VPXMIN(4, q_term);
// We have: active_min_gf_interval <=
// rc->max_gf_interval + arf_active_or_kf.