Populate kf_requested flag appropriately
It was observed that firstpass_inter_prediction() was
being called from first-pass/LAP stages even though
kf-max-dist was set to 0. This CL sets the kf_requested
flag appropriately when kf-max-dist==0.
BUG=aomedia:2967
STATS_CHANGED for kf-max-dist==0
Change-Id: Idf2f56af5a54c8f3e1ac710b6eae2f4ddcceb97a
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c
index b622c6e..5412213 100644
--- a/av1/encoder/encode_strategy.c
+++ b/av1/encoder/encode_strategy.c
@@ -1261,8 +1261,13 @@
av1_cyclic_refresh_update_parameters(cpi);
} else if (is_stat_generation_stage(cpi)) {
cpi->td.mb.e_mbd.lossless[0] = is_lossless_requested(&oxcf->rc_cfg);
- const int kf_requested = (cm->current_frame.frame_number == 0 ||
- (*frame_flags & FRAMEFLAGS_KEY));
+ // Current frame is coded as a key-frame for any of the following cases:
+ // 1) First frame of a video
+ // 2) For all-intra frame encoding
+ // 3) When a key-frame is forced
+ const int kf_requested =
+ (cm->current_frame.frame_number == 0 ||
+ oxcf->kf_cfg.key_freq_max == 0 || (*frame_flags & FRAMEFLAGS_KEY));
if (kf_requested && frame_update_type != OVERLAY_UPDATE &&
frame_update_type != INTNL_OVERLAY_UPDATE) {
frame_params.frame_type = KEY_FRAME;