Bug 1380118 - Fix stream info peeking. draft
authorSebastien Alaiwan <sebastien.alaiwan@allegrodvt.com>
Mon, 07 Aug 2017 09:37:52 +0200
changeset 651857 cd1831624d683d98398715bdc4e857911008f55d
parent 651856 59c2f7ff3b945b0b8f1a690b8731d0c4836b3921
child 651858 9ad34e98705b163593ecb5d41d4a5d9004d680ac
push id75832
push userbmo:giles@thaumas.net
push dateThu, 24 Aug 2017 03:49:46 +0000
bugs1380118
milestone57.0a1
Bug 1380118 - Fix stream info peeking. Backport upstream patch by Sebastian Alaiwan fixing aom_peek_stream_info after changes to the superblock location. BUG=aomedia:681 Change-Id: Iefce035d633d1533c8400d85b3257971757160bc MozReview-Commit-ID: 7QEnDrpVFkC
third_party/aom/av1/av1_dx_iface.c
--- a/third_party/aom/av1/av1_dx_iface.c
+++ b/third_party/aom/av1/av1_dx_iface.c
@@ -213,16 +213,29 @@ static aom_codec_err_t decoder_peek_si_i
   si->w = si->h = 0;
 
   if (decrypt_cb) {
     data_sz = AOMMIN(sizeof(clear_buffer), data_sz);
     decrypt_cb(decrypt_state, data, clear_buffer, data_sz);
     data = clear_buffer;
   }
 
+  // skip a potential superframe index
+  {
+    uint32_t frame_sizes[8];
+    int frame_count;
+    int index_size = 0;
+    aom_codec_err_t res = av1_parse_superframe_index(
+        data, data_sz, frame_sizes, &frame_count, &index_size, NULL, NULL);
+    if (res != AOM_CODEC_OK) return res;
+
+    data += index_size;
+    data_sz -= index_size;
+  }
+
   {
     int show_frame;
     int error_resilient;
     struct aom_read_bit_buffer rb = { data, data + data_sz, 0, NULL, NULL };
     const int frame_marker = aom_rb_read_literal(&rb, 2);
     const BITSTREAM_PROFILE profile = av1_read_profile(&rb);
 #if CONFIG_EXT_TILE
     unsigned int large_scale_tile;