Set show_existing_frame properly for fwd_kf
BUG=aomedia:2514
Change-Id: Ieeee9af85e45dcd5c4136c71034ea0ca2c2dbe62
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c
index 66e2a7c..4b5a68c 100644
--- a/av1/encoder/encode_strategy.c
+++ b/av1/encoder/encode_strategy.c
@@ -1125,11 +1125,17 @@
cpi->oxcf.gf_max_pyr_height = USE_ALTREF_FOR_ONE_PASS;
if (oxcf->pass == 0 || oxcf->pass == 2) {
- frame_params.show_existing_frame =
- ((oxcf->enable_overlay == 0 || cpi->sf.disable_overlay_frames ||
- cpi->show_existing_alt_ref) &&
- gf_group->update_type[gf_group->index] == OVERLAY_UPDATE) ||
- gf_group->update_type[gf_group->index] == INTNL_OVERLAY_UPDATE;
+ // If this is a forward keyframe, mark as a show_existing_frame
+ if (cpi->oxcf.fwd_kf_enabled && (gf_group->index == gf_group->size) &&
+ gf_group->update_type[1] == ARF_UPDATE && cpi->rc.frames_to_key == 0) {
+ frame_params.show_existing_frame = 1;
+ } else {
+ frame_params.show_existing_frame =
+ ((oxcf->enable_overlay == 0 || cpi->sf.disable_overlay_frames ||
+ cpi->show_existing_alt_ref) &&
+ gf_group->update_type[gf_group->index] == OVERLAY_UPDATE) ||
+ gf_group->update_type[gf_group->index] == INTNL_OVERLAY_UPDATE;
+ }
frame_params.show_existing_frame &= allow_show_existing(cpi, *frame_flags);
// Reset show_existing_alt_ref decision to 0 after it is used.