basetransform: do not delay sparse stream newsegment updates
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 19 Dec 2011 16:38:18 +0000 (17:38 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 19 Dec 2011 16:39:11 +0000 (17:39 +0100)
libs/gst/base/gstbasetransform.c

index 4408ef2..dfaa359 100644 (file)
@@ -2220,6 +2220,19 @@ gst_base_transform_sink_event (GstPad * pad, GstEvent * event)
     } else {
       delay = GST_EVENT_IS_SERIALIZED (event) && !caps_set
           && GST_EVENT_TYPE (event) != GST_EVENT_EOS;
+
+      /* do not stall sparse stream update newsegment events */
+      if (delay && (GST_EVENT_TYPE (event) == GST_EVENT_NEWSEGMENT)) {
+        gboolean update;
+
+        gst_event_parse_new_segment_full (event, &update, NULL, NULL, NULL,
+            NULL, NULL, NULL);
+        if (update) {
+          GST_DEBUG_OBJECT (trans, "update segment; triggering delayed events");
+          delay = FALSE;
+          caps_set = TRUE;
+        }
+      }
     }
 
     if (delay) {