Move frame type validation to right place

This commit moves the validation of frame type to immediately after
the decoding of frame type, so to detect corrupt frame early and stop
decoding.

BUG=oss-fuzz:10052,oss-fuzz:10049

Change-Id: Ia39a7338f96717e1464578d13e70a95fa63b82f5
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 3f5afe9..0dafce7 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -4476,6 +4476,16 @@
     }
 
     cm->frame_type = (FRAME_TYPE)aom_rb_read_literal(rb, 2);  // 2 bits
+    if (pbi->sequence_header_changed) {
+      if (pbi->common.frame_type == KEY_FRAME) {
+        // This is the start of a new coded video sequence.
+        pbi->sequence_header_changed = 0;
+      } else {
+        aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
+                           "Sequence header has changed without a keyframe.");
+      }
+    }
+
     cm->show_frame = aom_rb_read_bit(rb);
     if (seq_params->still_picture &&
         (cm->frame_type != KEY_FRAME || !cm->show_frame)) {
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index cf03ff1..44ecf81 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -741,15 +741,6 @@
           assert(rb.bit_offset == 0);
           rb.bit_offset = 8 * frame_header_size;
         }
-        if (pbi->sequence_header_changed) {
-          if (pbi->common.frame_type == KEY_FRAME) {
-            // This is the start of a new coded video sequence.
-            pbi->sequence_header_changed = 0;
-          } else {
-            cm->error.error_code = AOM_CODEC_UNSUP_BITSTREAM;
-            return -1;
-          }
-        }
 
         decoded_payload_size = frame_header_size;
         pbi->frame_header_size = frame_header_size;