uridecodebin: Never treat live sources as streaming sources.
authorJulian Scheel <julian@jusst.de>
Fri, 13 Apr 2012 14:29:50 +0000 (16:29 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Sat, 14 Apr 2012 08:52:26 +0000 (10:52 +0200)
For streaming sources a queue is added before the demuxer, which can not be
properly filled by live sources. As http source can be live sources, this
caused issues for example with http live sources.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674057

gst/playback/gsturidecodebin.c

index 358ab93..94a5db7 100644 (file)
@@ -2009,6 +2009,21 @@ could_not_link:
   }
 }
 
+static gboolean
+is_live_source (GstElement * source)
+{
+  GObjectClass *source_class = NULL;
+  gboolean is_live = FALSE;
+
+  source_class = G_OBJECT_GET_CLASS (source);
+  if (!g_object_class_find_property (source_class, "is-live"))
+    return FALSE;
+
+  g_object_get (G_OBJECT (source), "is-live", &is_live, NULL);
+
+  return is_live;
+}
+
 /* construct and run the source and decoder elements until we found
  * all the streams or until a preroll queue has been filled.
 */
@@ -2038,6 +2053,9 @@ setup_source (GstURIDecodeBin * decoder)
   g_signal_emit (decoder, gst_uri_decode_bin_signals[SIGNAL_SOURCE_SETUP],
       0, decoder->source);
 
+  if (is_live_source (decoder->source))
+    decoder->is_stream = FALSE;
+
   /* remove the old decoders now, if any */
   remove_decoders (decoder, FALSE);