mpegvideoparse: Update caps when the sequence header changes
authorRaimo Järvi <raimo.jarvi@gmail.com>
Sat, 13 Mar 2010 05:03:32 +0000 (06:03 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 13 Mar 2010 05:03:32 +0000 (06:03 +0100)
Fixes bug #612687.

gst/mpegvideoparse/mpegvideoparse.c

index 7328fc7..43ffb49 100644 (file)
@@ -432,25 +432,21 @@ mpegvideoparse_drain_avail (MpegVideoParse * mpegvideoparse)
         cur->length, picture_start_code_name (cur->first_pack_type),
         cur->flags);
 
-    /* Don't start pushing out buffers until we've seen a sequence header */
-    if (mpegvideoparse->seq_hdr.mpeg_version == 0) {
-      if (cur->flags & MPEG_BLOCK_FLAG_SEQUENCE) {
-        /* Found a sequence header */
-        if (!mpegvideoparse_handle_sequence (mpegvideoparse, buf)) {
-          GST_DEBUG_OBJECT (mpegvideoparse,
-              "Invalid sequence header. Dropping buffer.");
-          gst_buffer_unref (buf);
-          buf = NULL;
-        }
-      } else {
-        if (buf) {
-          GST_DEBUG_OBJECT (mpegvideoparse,
-              "No sequence header yet. Dropping buffer of %u bytes",
-              GST_BUFFER_SIZE (buf));
-          gst_buffer_unref (buf);
-          buf = NULL;
-        }
+    if (cur->flags & MPEG_BLOCK_FLAG_SEQUENCE) {
+      /* Found a sequence header */
+      if (!mpegvideoparse_handle_sequence (mpegvideoparse, buf)) {
+        GST_DEBUG_OBJECT (mpegvideoparse,
+            "Invalid sequence header. Dropping buffer.");
+        gst_buffer_unref (buf);
+        buf = NULL;
       }
+    } else if (mpegvideoparse->seq_hdr.mpeg_version == 0 && buf) {
+      /* Don't start pushing out buffers until we've seen a sequence header */
+      GST_DEBUG_OBJECT (mpegvideoparse,
+          "No sequence header yet. Dropping buffer of %u bytes",
+          GST_BUFFER_SIZE (buf));
+      gst_buffer_unref (buf);
+      buf = NULL;
     }
 
     if (buf != NULL) {