Fix frame_id numbers with forward keyframes
Since frame_id numbers seem to have been unused for some time, they do
not work with forward keyframes: The ref_frame_id[] array (frame_ids for
reference frames) was not refreshed upon showing a forward keyframe.
This patch resolves this issue.
BUG=aomedia:2267
Change-Id: I3ebe30c4cf556a4893094e3ee6b68cafaa7258bc
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 9acc690..7652029 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -5102,6 +5102,14 @@
if (av1_pack_bitstream(cpi, dest, size) != AOM_CODEC_OK)
return AOM_CODEC_ERROR;
+ if (seq_params->frame_id_numbers_present_flag &&
+ current_frame->frame_type == KEY_FRAME) {
+ // Displaying a forward key-frame, so reset the ref buffer IDs
+ int display_frame_id = cm->ref_frame_id[cpi->existing_fb_idx_to_show];
+ for (int i = 0; i < REF_FRAMES; i++)
+ cm->ref_frame_id[i] = display_frame_id;
+ }
+
cpi->seq_params_locked = 1;
// Set up frame to show to get ready for stats collection.