[fwd-kf] Don't reset current_frame_id when show_existing_frame=1
Remove the reset of current_frame_id, while making sure that we
write the correct frame ID into the reference slots.
This does not affect the decoder output; it just makes it simpler
to specify which frame IDs are allowed / not allowed after a
show_existing_frame.
BUG=aomedia:1612
Change-Id: I7ee33a40dfa9adb72194217f5a55cbb454533342
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 75c999ab..9da3676 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -2565,11 +2565,15 @@
if (cm->seq_params.frame_id_numbers_present_flag) {
/* If bitmask is set, update reference frame id values and
- mark frames as valid for reference */
+ mark frames as valid for reference.
+ Note that the displayed frame be valid for referencing
+ in order to have been selected.
+ */
int refresh_frame_flags = pbi->refresh_frame_flags;
+ int display_frame_id = cm->ref_frame_id[existing_frame_idx];
for (int i = 0; i < REF_FRAMES; i++) {
if ((refresh_frame_flags >> i) & 1) {
- cm->ref_frame_id[i] = cm->current_frame_id;
+ cm->ref_frame_id[i] = display_frame_id;
cm->valid_for_referencing[i] = 1;
}
}
@@ -2644,9 +2648,6 @@
cm->valid_for_referencing[existing_frame_idx] == 0)
aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
"Reference buffer frame ID mismatch");
-#if CONFIG_FWD_KF
- cm->current_frame_id = display_frame_id;
-#endif // CONFIG_FWD_KF
}
lock_buffer_pool(pool);
if (frame_to_show < 0 || frame_bufs[frame_to_show].ref_count < 1) {