Add encoder support on FWD_KF update The status for reset_decoder_state is not needed to be explicitly signaled, as the forward coded keyframe now has to be specified as KEY_FRAME for its frame type. Whenever a show_existing_frame points to a to-show frame as KEY_FRAME, it will be identified as forwarded coded keyframe. Intra only frames are no longer considered as forward coded keyframe. Change-Id: I1b612dfe50e669f433aba4a3b5a47e378e4311ee
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index ed77a85..3ddf3db 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -3283,12 +3283,12 @@ #endif #if CONFIG_FWD_KF - if (cm->reset_decoder_state && !frame_bufs[frame_to_show].intra_only) { + if (cm->reset_decoder_state && + frame_bufs[frame_to_show].frame_type != KEY_FRAME) { aom_internal_error( &cm->error, AOM_CODEC_UNSUP_BITSTREAM, - "show_existing_frame to reset state on non-intra_only"); + "show_existing_frame to reset state on KEY_FRAME only"); } - aom_wb_write_bit(wb, cm->reset_decoder_state); #endif // CONFIG_FWD_KF return;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c index 2ab88ad..5f8a46b 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c
@@ -5852,6 +5852,7 @@ // frame type has been decided outside of this function call cm->cur_frame->intra_only = cm->frame_type == KEY_FRAME || cm->intra_only; + cm->cur_frame->frame_type = cm->frame_type; cm->use_ref_frame_mvs = !cpi->oxcf.disable_tempmv && !cm->cur_frame->intra_only && frame_might_use_prev_frame_mvs(cm);