shithub: libvpx

Download patch

ref: d024d985dbfe177ab5d120fc105f4cf46008cf1e
parent: 1114183f1a358ca490fb078367e1ac162c29ed6a
parent: e703af974d2cf08aa7283bd0efd3bdd69801ea18
author: John Koleszar <jkoleszar@google.com>
date: Wed Jun 16 07:54:39 EDT 2010

Merge "Avoid encoding garbage when ivfenc encounters an unsupported Y4M file."

--- a/ivfenc.c
+++ b/ivfenc.c
@@ -299,12 +299,11 @@
 }
 
 
-unsigned int file_is_y4m(FILE *infile,
+unsigned int file_is_y4m(FILE      *infile,
                          y4m_input *y4m,
                          char       detect[4])
 {
-    if(memcmp(detect, "YUV4", 4) == 0 &&
-        y4m_input_open(y4m, infile, detect, 4) >= 0)
+    if(memcmp(detect, "YUV4", 4) == 0)
     {
         return 1;
     }
@@ -875,18 +874,26 @@
 
         if (file_is_y4m(infile, &y4m, detect.buf))
         {
-            file_type = FILE_TYPE_Y4M;
-            cfg.g_w = y4m.pic_w;
-            cfg.g_h = y4m.pic_h;
-            /* Use the frame rate from the file only if none was specified on the
-             *  command-line.
-             */
-            if (!arg_have_timebase)
+            if (y4m_input_open(&y4m, infile, detect.buf, 4) >= 0)
             {
-                cfg.g_timebase.num = y4m.fps_d;
-                cfg.g_timebase.den = y4m.fps_n;
+                file_type = FILE_TYPE_Y4M;
+                cfg.g_w = y4m.pic_w;
+                cfg.g_h = y4m.pic_h;
+                /* Use the frame rate from the file only if none was specified
+                 * on the command-line.
+                 */
+                if (!arg_have_timebase)
+                {
+                    cfg.g_timebase.num = y4m.fps_d;
+                    cfg.g_timebase.den = y4m.fps_n;
+                }
+                arg_use_i420 = 0;
             }
-            arg_use_i420 = 0;
+            else
+            {
+                fprintf(stderr, "Unsupported Y4M stream.\n");
+                return EXIT_FAILURE;
+            }
         }
         else if (file_is_ivf(infile, &fourcc, &cfg.g_w, &cfg.g_h, detect.buf))
         {