Do not fail if reserved bits are not all zeros.

A manual cherry-pick of commit c34228f20fc711fc0d76619141779cc007c67749.

The AV1 spec instructs a decoder to ignore reserved bits. Specifically,
Section 6.2.2 says:
    obu_reserved_1bit must be set to 0. The value is ignored by a
    decoder.
Section 6.2.3 says:
    extension_header_reserved_3bits must be set to 0. The value is
    ignored by a decoder.
Section 6.7.6.1 says:
    scalability_structure_reserved_3bits must be set to zero and be
    ignored by decoders.

Bug: aomedia:2811
Change-Id: Id17358fc4acc5eca4e846c676936a3a90d5c327e
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 3ec1042..6b79b8c 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -88,10 +88,8 @@
     return AOM_CODEC_UNSUP_BITSTREAM;
   }
 
-  if (aom_rb_read_bit(rb) != 0) {
-    // obu_reserved_1bit must be set to 0.
-    return AOM_CODEC_CORRUPT_FRAME;
-  }
+  // obu_reserved_1bit must be set to 0. The value is ignored by a decoder.
+  aom_rb_read_bit(rb);
 
   if (header->has_extension) {
     if (bit_buffer_byte_length == 1) return AOM_CODEC_CORRUPT_FRAME;
@@ -99,10 +97,9 @@
     header->size += 1;
     header->temporal_layer_id = aom_rb_read_literal(rb, 3);
     header->spatial_layer_id = aom_rb_read_literal(rb, 2);
-    if (aom_rb_read_literal(rb, 3) != 0) {
-      // extension_header_reserved_3bits must be set to 0.
-      return AOM_CODEC_CORRUPT_FRAME;
-    }
+    // extension_header_reserved_3bits must be set to 0. The value is ignored by
+    // a decoder.
+    aom_rb_read_literal(rb, 3);
   } else {
     header->temporal_layer_id = 0;
     header->spatial_layer_id = 0;
@@ -639,7 +636,9 @@
   int spatial_layer_dimensions_present_flag = aom_rb_read_literal(rb, 1);
   int spatial_layer_description_present_flag = aom_rb_read_literal(rb, 1);
   int temporal_group_description_present_flag = aom_rb_read_literal(rb, 1);
-  aom_rb_read_literal(rb, 3);  // reserved
+  // scalability_structure_reserved_3bits must be set to zero and be ignored by
+  // decoders.
+  aom_rb_read_literal(rb, 3);
 
   if (spatial_layer_dimensions_present_flag) {
     int i;