webmdec: Fix return values for webm_read_frame
authorVignesh Venkatasubramanian <vigneshv@google.com>
Mon, 14 Apr 2014 22:21:22 +0000 (15:21 -0700)
committerVignesh Venkatasubramanian <vigneshv@google.com>
Tue, 15 Apr 2014 18:55:17 +0000 (11:55 -0700)
Fix return values for webm_read_frame so that we can distinguish between
error and end of stream. 0 - Success, 1 - End of stream, -1 error.

Change-Id: Ic35d0c7d7a166e027711a3d2300ecdda25a5d0cc

webmdec.c
webmdec.h

index 7cacdf9..0341e82 100644 (file)
--- a/webmdec.c
+++ b/webmdec.c
@@ -114,6 +114,7 @@ int webm_read_frame(struct WebmInputContext *webm_ctx,
                     size_t *buffer_size) {
   if (webm_ctx->chunk >= webm_ctx->chunks) {
     uint32_t track;
+    int status;
 
     do {
       /* End of this packet, get another. */
@@ -122,21 +123,23 @@ int webm_read_frame(struct WebmInputContext *webm_ctx,
         webm_ctx->pkt = NULL;
       }
 
-      if (nestegg_read_packet(webm_ctx->nestegg_ctx, &webm_ctx->pkt) <= 0 ||
-          nestegg_packet_track(webm_ctx->pkt, &track)) {
-        return 1;
-      }
+      status = nestegg_read_packet(webm_ctx->nestegg_ctx, &webm_ctx->pkt);
+      if (status <= 0)
+        return status ? status : 1;
+
+      if (nestegg_packet_track(webm_ctx->pkt, &track))
+        return -1;
     } while (track != webm_ctx->video_track);
 
     if (nestegg_packet_count(webm_ctx->pkt, &webm_ctx->chunks))
-      return 1;
+      return -1;
 
     webm_ctx->chunk = 0;
   }
 
   if (nestegg_packet_data(webm_ctx->pkt, webm_ctx->chunk,
                           buffer, bytes_in_buffer)) {
-    return 1;
+    return -1;
   }
 
   webm_ctx->chunk++;
index fa5a52e..108c6ad 100644 (file)
--- a/webmdec.h
+++ b/webmdec.h
@@ -31,6 +31,11 @@ struct WebmInputContext {
 int file_is_webm(struct WebmInputContext *webm_ctx,
                  struct VpxInputContext *vpx_ctx);
 
+/* Reads a WebM video frame. Return values:
+ *   0 - Success
+ *   1 - End of File
+ *  -1 - Error
+ */
 int webm_read_frame(struct WebmInputContext *webm_ctx,
                     uint8_t **buffer,
                     size_t *bytes_in_buffer,