obudec: Fix TU reader function call sig inconsistency.

Change the OBU TU reader to use the same call signature as the
IVF and WebM readers.

Change-Id: I690d311f21d5abf0972e5cb7785363d37d15b11b
diff --git a/aomdec.c b/aomdec.c
index e365dbf..e01cf6a 100644
--- a/aomdec.c
+++ b/aomdec.c
@@ -249,7 +249,7 @@
                             buffer_size);
     case FILE_TYPE_OBU:
       return obudec_read_temporal_unit(input->obu_ctx, buf, bytes_in_buffer,
-                                       buffer_size, 0);
+                                       buffer_size);
     default: return 1;
   }
 }
@@ -533,7 +533,7 @@
   memset(&webm_ctx, 0, sizeof(webm_ctx));
   input.webm_ctx = &webm_ctx;
 #endif
-  struct ObuDecInputContext obu_ctx = { NULL, NULL, 0, 0, 0 };
+  struct ObuDecInputContext obu_ctx = { NULL, NULL, 0, 0, 0, 0 };
   obu_ctx.avx_ctx = &aom_input_ctx;
   input.obu_ctx = &obu_ctx;
   input.aom_input_ctx = &aom_input_ctx;
diff --git a/examples/scalable_decoder.c b/examples/scalable_decoder.c
index 6b41c85..23c3510 100644
--- a/examples/scalable_decoder.c
+++ b/examples/scalable_decoder.c
@@ -100,9 +100,8 @@
   uint8_t *buf = NULL;
   size_t bytes_in_buffer = 0;
   size_t buffer_size = 0;
-  int next_layer_id = 0;
   struct AvxInputContext aom_input_ctx;
-  struct ObuDecInputContext obu_ctx = { &aom_input_ctx, NULL, 0, 0, 0 };
+  struct ObuDecInputContext obu_ctx = { &aom_input_ctx, NULL, 0, 0, 0, 0 };
   aom_codec_stream_info_t si;
   uint8_t tmpbuf[32];
   unsigned int i;
@@ -141,7 +140,7 @@
   }
 
   while (!obudec_read_temporal_unit(&obu_ctx, &buf, &bytes_in_buffer,
-                                    &buffer_size, next_layer_id)) {
+                                    &buffer_size)) {
     aom_codec_iter_t iter = NULL;
     aom_image_t *img = NULL;
     if (aom_codec_decode(&codec, buf, (unsigned int)bytes_in_buffer, NULL))
@@ -151,15 +150,15 @@
       if (img->enhancement_id == 0) {
         printf("Writing       base layer 0 %d\n", frame_cnt);
         aom_img_write(img, outfile[0]);
-        next_layer_id++;
+        obu_ctx.last_layer_id++;
       } else if (img->enhancement_id <= (int)si.enhancement_layers_cnt) {
         printf("Writing enhancemnt layer %d %d\n", img->enhancement_id,
                frame_cnt);
         aom_img_write(img, outfile[img->enhancement_id]);
         if (img->enhancement_id == (int)si.enhancement_layers_cnt)
-          next_layer_id = 0;
+          obu_ctx.last_layer_id = 0;
         else
-          next_layer_id++;
+          obu_ctx.last_layer_id++;
       } else {
         die_codec(&codec, "Invalid bitstream.  Layer id exceeds layer count");
       }
diff --git a/obudec.c b/obudec.c
index 1ce7d24..4b5bda3 100644
--- a/obudec.c
+++ b/obudec.c
@@ -258,7 +258,7 @@
 
 int obudec_read_temporal_unit(struct ObuDecInputContext *obu_ctx,
                               uint8_t **buffer, size_t *bytes_read,
-                              size_t *buffer_size, int last_layer_id) {
+                              size_t *buffer_size) {
   FILE *f = obu_ctx->avx_ctx->file;
   if (!f) return -1;
 
@@ -286,7 +286,7 @@
 
     if (obu_header.type == OBU_TEMPORAL_DELIMITER || obu_size == 0 ||
         (obu_header.has_extension &&
-         obu_header.enhancement_layer_id > last_layer_id)) {
+         obu_header.enhancement_layer_id > obu_ctx->last_layer_id)) {
       const size_t tu_size = obu_ctx->bytes_buffered;
 
 #if defined AOM_MAX_ALLOCABLE_MEMORY
diff --git a/obudec.h b/obudec.h
index c413f20..6cfad15 100644
--- a/obudec.h
+++ b/obudec.h
@@ -23,6 +23,7 @@
   size_t buffer_capacity;
   size_t bytes_buffered;
   int is_annexb;
+  int last_layer_id;
 };
 
 // Returns 1 when file data starts (if Annex B stream, after reading the
@@ -37,7 +38,7 @@
 // via 'bytes_read'.
 int obudec_read_temporal_unit(struct ObuDecInputContext *obu_ctx,
                               uint8_t **buffer, size_t *bytes_read,
-                              size_t *buffer_size, int last_layer_id);
+                              size_t *buffer_size);
 
 void obudec_free(struct ObuDecInputContext *obu_ctx);
 
diff --git a/tools/dump_obu.cc b/tools/dump_obu.cc
index 749b5a7..100f9f5 100644
--- a/tools/dump_obu.cc
+++ b/tools/dump_obu.cc
@@ -35,6 +35,7 @@
     memset(avx_ctx, 0, sizeof(*avx_ctx));
     memset(obu_ctx, 0, sizeof(*obu_ctx));
     obu_ctx->avx_ctx = avx_ctx;
+    obu_ctx->last_layer_id = kIgnoreLayers;
 #if CONFIG_WEBM_IO
     memset(webm_ctx, 0, sizeof(*webm_ctx));
 #endif
@@ -74,7 +75,7 @@
     }
     case FILE_TYPE_OBU: {
       if (obudec_read_temporal_unit(ctx->obu_ctx, &ctx->unit_buffer, unit_size,
-                                    &ctx->unit_buffer_size, kIgnoreLayers)) {
+                                    &ctx->unit_buffer_size)) {
         return false;
       }
       break;