[NORMATIVE] Enforce constraint on frame_id_length.

frame_id_length can be at most 16 bits.

Although this is a normative change, it does not change
encoded bitstreams using the frame buffer marking feature.

BUG=aomedia:1578

Change-Id: I602bc5de57a3768d1955f2e3dad3bccc0ed95e74
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 7488710..bf96f8a 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -2373,8 +2373,8 @@
   }
 }
 
-void read_sequence_header(SequenceHeader *seq_params,
-                          struct aom_read_bit_buffer *rb) {
+void read_sequence_header(AV1_COMMON *cm, struct aom_read_bit_buffer *rb) {
+  SequenceHeader *seq_params = &cm->seq_params;
   int num_bits_width = aom_rb_read_literal(rb, 4) + 1;
   int num_bits_height = aom_rb_read_literal(rb, 4) + 1;
   int max_frame_width = aom_rb_read_literal(rb, num_bits_width) + 1;
@@ -2393,6 +2393,9 @@
     seq_params->delta_frame_id_length = aom_rb_read_literal(rb, 4) + 2;
     seq_params->frame_id_length =
         aom_rb_read_literal(rb, 3) + seq_params->delta_frame_id_length + 1;
+    if (seq_params->frame_id_length > 16)
+      aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
+                         "Invalid frame_id_length");
   }
 
   setup_sb_size(seq_params, rb);
diff --git a/av1/decoder/decodeframe.h b/av1/decoder/decodeframe.h
index 2bda1c3..4759426 100644
--- a/av1/decoder/decodeframe.h
+++ b/av1/decoder/decodeframe.h
@@ -20,8 +20,7 @@
 struct aom_read_bit_buffer;
 
 /* Placeholder for now */
-void read_sequence_header(SequenceHeader *seq_params,
-                          struct aom_read_bit_buffer *rb);
+void read_sequence_header(AV1_COMMON *cm, struct aom_read_bit_buffer *rb);
 
 void av1_read_frame_size(struct aom_read_bit_buffer *rb, int num_bits_width,
                          int num_bits_height, int *width, int *height);
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 04630ed..6667b9a 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -147,7 +147,7 @@
   }
 #endif
 
-  read_sequence_header(&cm->seq_params, rb);
+  read_sequence_header(cm, rb);
 
   av1_read_bitdepth_colorspace_sampling(cm, rb, pbi->allow_lowbitdepth);