Assert the precondition for update_ref_frame_id().
Assert frame_id_numbers_present_flag is true in update_ref_frame_id().
update_ref_frame_id() uses the valid_for_referencing array, which is
equivalent to the RefValid array in the spec. This assertion helps ensure
that valid_for_referencing is used only when frame_id_numbers_present_flag
is true, a property described in the Note in Section 6.8.3 (Reference frame
marking semantics) of the spec:
Note: RefValid is only used to define valid bitstreams when
frame_id_numbers_present_flag is equal to 1. ...
This property is satisfied by the libaom reference code, but is not
fully satisfied by the spec.
BUG=2295
Change-Id: I4438d86b1b645304b627bc1f7d241f1831435253
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index ef1b17b..7a25070 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -4717,6 +4717,7 @@
// If the refresh_frame_flags bitmask is set, update reference frame id values
// and mark frames as valid for reference.
static void update_ref_frame_id(AV1_COMMON *const cm, int frame_id) {
+ assert(cm->seq_params.frame_id_numbers_present_flag);
int refresh_frame_flags = cm->current_frame.refresh_frame_flags;
for (int i = 0; i < REF_FRAMES; i++) {
if ((refresh_frame_flags >> i) & 1) {