Skip identical sequence headers after the first
BUG=aomedia:1480
Change-Id: I96b41b460aa19160af05715031e1d8e0bf2c1160
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 5306c4c..5f09523 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -276,6 +276,8 @@
int is_first_tg_obu_received = 1;
int frame_header_received = 0;
int frame_header_size = 0;
+ int seq_header_received = 0;
+ size_t seq_header_size = 0;
#if CONFIG_SCALABILITY
uint8_t obu_extension_header = 0;
#endif
@@ -358,7 +360,19 @@
obu_payload_size = read_temporal_delimiter_obu();
break;
case OBU_SEQUENCE_HEADER:
- obu_payload_size = read_sequence_header_obu(pbi, &rb);
+ if (!seq_header_received) {
+ obu_payload_size = read_sequence_header_obu(pbi, &rb);
+ seq_header_size = obu_payload_size;
+ seq_header_received = 1;
+ } else {
+ // Seeing another sequence header, skip as all sequence headers
+ // are requred to be identical.
+ if (obu_size - obu_header_size != seq_header_size) {
+ cm->error.error_code = AOM_CODEC_CORRUPT_FRAME;
+ return;
+ }
+ obu_payload_size = seq_header_size;
+ }
break;
case OBU_FRAME_HEADER:
// Only decode first frame header received