Use size_t for decode API input size parameters.

Use a type more appropriate for buffer sizes that more
cleanly integrates with I/O APIs. Removes some casting
related to size_t use with C file I/O APIs (fread mainly).

This changes the call signatures of aom_codec_decode() and
aom_codec_peek_stream_info(), and updates the internal
implementations. The single change to all API entries is
and internal hooks is the change from "unsigned int" to
size_t for the data_sz parameter.

Change-Id: If293c537efa5c651184aac52efc001aba4ad187b
diff --git a/aom/aom_decoder.h b/aom/aom_decoder.h
index 458e3bb..56eff00 100644
--- a/aom/aom_decoder.h
+++ b/aom/aom_decoder.h
@@ -162,8 +162,7 @@
  *     buffer was too short.
  */
 aom_codec_err_t aom_codec_peek_stream_info(aom_codec_iface_t *iface,
-                                           const uint8_t *data,
-                                           unsigned int data_sz,
+                                           const uint8_t *data, size_t data_sz,
                                            aom_codec_stream_info_t *si);
 
 /*!\brief Return information about the current stream.
@@ -212,7 +211,7 @@
  *         for recoverability capabilities.
  */
 aom_codec_err_t aom_codec_decode(aom_codec_ctx_t *ctx, const uint8_t *data,
-                                 unsigned int data_sz, void *user_priv);
+                                 size_t data_sz, void *user_priv);
 
 /*!\brief Decoded frames iterator
  *
diff --git a/aom/internal/aom_codec_internal.h b/aom/internal/aom_codec_internal.h
index a633d4c..bff5a86 100644
--- a/aom/internal/aom_codec_internal.h
+++ b/aom/internal/aom_codec_internal.h
@@ -113,7 +113,7 @@
  *     Bitstream is parsable and stream information updated
  */
 typedef aom_codec_err_t (*aom_codec_peek_si_fn_t)(const uint8_t *data,
-                                                  unsigned int data_sz,
+                                                  size_t data_sz,
                                                   aom_codec_stream_info_t *si);
 
 /*!\brief Return information about the current stream.
@@ -195,7 +195,7 @@
  */
 typedef aom_codec_err_t (*aom_codec_decode_fn_t)(aom_codec_alg_priv_t *ctx,
                                                  const uint8_t *data,
-                                                 unsigned int data_sz,
+                                                 size_t data_sz,
                                                  void *user_priv);
 
 /*!\brief Decoded frames iterator
diff --git a/aom/src/aom_decoder.c b/aom/src/aom_decoder.c
index ecbf838..e0cec10 100644
--- a/aom/src/aom_decoder.c
+++ b/aom/src/aom_decoder.c
@@ -61,8 +61,7 @@
 }
 
 aom_codec_err_t aom_codec_peek_stream_info(aom_codec_iface_t *iface,
-                                           const uint8_t *data,
-                                           unsigned int data_sz,
+                                           const uint8_t *data, size_t data_sz,
                                            aom_codec_stream_info_t *si) {
   aom_codec_err_t res;
 
@@ -99,7 +98,7 @@
 }
 
 aom_codec_err_t aom_codec_decode(aom_codec_ctx_t *ctx, const uint8_t *data,
-                                 unsigned int data_sz, void *user_priv) {
+                                 size_t data_sz, void *user_priv) {
   aom_codec_err_t res;
 
   /* Sanity checks */
diff --git a/aomdec.c b/aomdec.c
index 361e211..ddfc3a5 100644
--- a/aomdec.c
+++ b/aomdec.c
@@ -797,8 +797,7 @@
 
         aom_usec_timer_start(&timer);
 
-        if (aom_codec_decode(&decoder, buf, (unsigned int)bytes_in_buffer,
-                             NULL)) {
+        if (aom_codec_decode(&decoder, buf, bytes_in_buffer, NULL)) {
           const char *detail = aom_codec_error_detail(&decoder);
           warn("Failed to decode frame %d: %s", frame_in,
                aom_codec_error(&decoder));
diff --git a/av1/av1_dx_iface.c b/av1/av1_dx_iface.c
index d514535..a3e2f2b 100644
--- a/av1/av1_dx_iface.c
+++ b/av1/av1_dx_iface.c
@@ -204,7 +204,7 @@
 }
 
 static aom_codec_err_t decoder_peek_si_internal(const uint8_t *data,
-                                                unsigned int data_sz,
+                                                size_t data_sz,
                                                 aom_codec_stream_info_t *si,
                                                 int *is_intra_only) {
   int intra_only_flag = 0;
@@ -275,8 +275,7 @@
   return AOM_CODEC_OK;
 }
 
-static aom_codec_err_t decoder_peek_si(const uint8_t *data,
-                                       unsigned int data_sz,
+static aom_codec_err_t decoder_peek_si(const uint8_t *data, size_t data_sz,
                                        aom_codec_stream_info_t *si) {
   return decoder_peek_si_internal(data, data_sz, si, NULL);
 }
@@ -459,7 +458,7 @@
 }
 
 static aom_codec_err_t decode_one(aom_codec_alg_priv_t *ctx,
-                                  const uint8_t **data, uint64_t data_sz,
+                                  const uint8_t **data, size_t data_sz,
                                   void *user_priv) {
   const AVxWorkerInterface *const winterface = aom_get_worker_interface();
 
@@ -469,8 +468,8 @@
   if (!ctx->si.h) {
     int is_intra_only = 0;
     ctx->si.is_annexb = ctx->is_annexb;
-    const aom_codec_err_t res = decoder_peek_si_internal(
-        *data, (unsigned int)data_sz, &ctx->si, &is_intra_only);
+    const aom_codec_err_t res =
+        decoder_peek_si_internal(*data, data_sz, &ctx->si, &is_intra_only);
     if (res != AOM_CODEC_OK) return res;
 
     if (!ctx->si.is_kf && !is_intra_only) return AOM_CODEC_ERROR;
@@ -509,7 +508,7 @@
 }
 
 static aom_codec_err_t decoder_decode(aom_codec_alg_priv_t *ctx,
-                                      const uint8_t *data, unsigned int data_sz,
+                                      const uint8_t *data, size_t data_sz,
                                       void *user_priv) {
   const uint8_t *data_start = data;
   const uint8_t *const data_end = data + data_sz;
@@ -555,7 +554,9 @@
       frame_size = (uint64_t)(data_end - data_start);
     }
 
-    res = decode_one(ctx, &data_start, frame_size, user_priv);
+    if (frame_size > UINT32_MAX) return AOM_CODEC_CORRUPT_FRAME;
+
+    res = decode_one(ctx, &data_start, (size_t)frame_size, user_priv);
     if (res != AOM_CODEC_OK) return res;
 
     // Allow extra zero bytes after the frame end
diff --git a/examples/decode_to_md5.c b/examples/decode_to_md5.c
index 75bb97d..0e108e2 100644
--- a/examples/decode_to_md5.c
+++ b/examples/decode_to_md5.c
@@ -110,7 +110,7 @@
     size_t frame_size = 0;
     const unsigned char *frame =
         aom_video_reader_get_frame(reader, &frame_size);
-    if (aom_codec_decode(&codec, frame, (unsigned int)frame_size, NULL))
+    if (aom_codec_decode(&codec, frame, frame_size, NULL))
       die_codec(&codec, "Failed to decode frame");
 
     while ((img = aom_codec_get_frame(&codec, &iter)) != NULL) {
diff --git a/examples/decode_with_drops.c b/examples/decode_with_drops.c
index 362f9ad..bd32c87 100644
--- a/examples/decode_with_drops.c
+++ b/examples/decode_with_drops.c
@@ -123,7 +123,7 @@
 
     if (!skip) {
       putc('.', stdout);
-      if (aom_codec_decode(&codec, frame, (unsigned int)frame_size, NULL))
+      if (aom_codec_decode(&codec, frame, frame_size, NULL))
         die_codec(&codec, "Failed to decode frame.");
 
       while ((img = aom_codec_get_frame(&codec, &iter)) != NULL)
diff --git a/examples/lightfield_decoder.c b/examples/lightfield_decoder.c
index b1a3921..0b52487 100644
--- a/examples/lightfield_decoder.c
+++ b/examples/lightfield_decoder.c
@@ -137,7 +137,7 @@
       size_t frame_size = 0;
       const unsigned char *frame =
           aom_video_reader_get_frame(reader, &frame_size);
-      if (aom_codec_decode(&codec, frame, (unsigned int)frame_size, NULL))
+      if (aom_codec_decode(&codec, frame, frame_size, NULL))
         die_codec(&codec, "Failed to decode frame.");
 
       while ((img = aom_codec_get_frame(&codec, &iter)) != NULL) {
diff --git a/examples/scalable_decoder.c b/examples/scalable_decoder.c
index 837f07a..37cf299 100644
--- a/examples/scalable_decoder.c
+++ b/examples/scalable_decoder.c
@@ -149,7 +149,7 @@
                                     &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))
+    if (aom_codec_decode(&codec, buf, bytes_in_buffer, NULL))
       die_codec(&codec, "Failed to decode frame.");
 
     while ((img = aom_codec_get_frame(&codec, &iter)) != NULL) {
diff --git a/examples/simple_decoder.c b/examples/simple_decoder.c
index e7c6a7d..a784f18 100644
--- a/examples/simple_decoder.c
+++ b/examples/simple_decoder.c
@@ -125,7 +125,7 @@
     size_t frame_size = 0;
     const unsigned char *frame =
         aom_video_reader_get_frame(reader, &frame_size);
-    if (aom_codec_decode(&codec, frame, (unsigned int)frame_size, NULL))
+    if (aom_codec_decode(&codec, frame, frame_size, NULL))
       die_codec(&codec, "Failed to decode frame.");
 
     while ((img = aom_codec_get_frame(&codec, &iter)) != NULL) {
diff --git a/test/decode_test_driver.cc b/test/decode_test_driver.cc
index 089cc9b..99a9e8d 100644
--- a/test/decode_test_driver.cc
+++ b/test/decode_test_driver.cc
@@ -22,8 +22,8 @@
 
 aom_codec_err_t Decoder::PeekStream(const uint8_t *cxdata, size_t size,
                                     aom_codec_stream_info_t *stream_info) {
-  return aom_codec_peek_stream_info(
-      CodecInterface(), cxdata, static_cast<unsigned int>(size), stream_info);
+  return aom_codec_peek_stream_info(CodecInterface(), cxdata, size,
+                                    stream_info);
 }
 
 aom_codec_err_t Decoder::DecodeFrame(const uint8_t *cxdata, size_t size) {
@@ -35,8 +35,7 @@
   aom_codec_err_t res_dec;
   InitOnce();
   API_REGISTER_STATE_CHECK(
-      res_dec = aom_codec_decode(&decoder_, cxdata,
-                                 static_cast<unsigned int>(size), user_priv));
+      res_dec = aom_codec_decode(&decoder_, cxdata, size, user_priv));
   return res_dec;
 }