Fix to nightly failures for one_pass_rt_lag encoding Only set what is needed for one_pass_rt_lag encoding from the find_next_key_frame(). Failure caused by: aomedia-review.googlesource.com/c/aom/+/205341 Change-Id: Ie48b9e52b3fb47a353063a909905fe6b85fb7c1a
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c index 591b5df..b0d6db4 100644 --- a/av1/encoder/pass2_strategy.c +++ b/av1/encoder/pass2_strategy.c
@@ -3775,12 +3775,29 @@ } // Keyframe processing. if (rc->frames_to_key <= 0) { - FIRSTPASS_STATS this_frame; + const KeyFrameCfg *const kf_cfg = &oxcf->kf_cfg; assert(rc->frames_to_key == 0); - // Define next KF group and assign bits to it. + // Define next KF group. frame_params->frame_type = KEY_FRAME; rc->frames_since_key = 0; - find_next_key_frame(cpi, &this_frame); + // Use arfs if possible. + p_rc->use_arf_in_this_kf_group = is_altref_enabled( + oxcf->gf_cfg.lag_in_frames, oxcf->gf_cfg.enable_auto_arf); + // Reset the GF group data structures. + av1_zero(*gf_group); + cpi->gf_frame_index = 0; + // KF is always a GF so clear frames till next gf counter. + rc->frames_till_gf_update_due = 0; + int num_frames_to_app_forced_key = detect_app_forced_key(cpi); + p_rc->this_key_frame_forced = + cpi->common.current_frame.frame_number != 0 && rc->frames_to_key == 0; + if (num_frames_to_app_forced_key != -1) + rc->frames_to_key = num_frames_to_app_forced_key; + else + rc->frames_to_key = AOMMAX(1, kf_cfg->key_freq_max); + correct_frames_to_key(cpi); + p_rc->kf_boost = DEFAULT_KF_BOOST; + gf_group->update_type[0] = KF_UPDATE; } // Define a new GF/ARF group. (Should always enter here for key frames). if (cpi->gf_frame_index == gf_group->size) {