[0.10] gst-plugins-base: uridecodebin: Never treat live sources as streaming sources.
Sebastian Dröge
slomo at kemper.freedesktop.org
Mon Apr 16 00:06:31 PDT 2012
Module: gst-plugins-base
Branch: 0.10
Commit: c9ad084e291bd00d85b87e75bce4b63a9241260e
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=c9ad084e291bd00d85b87e75bce4b63a9241260e
Author: Julian Scheel <julian at jusst.de>
Date: Fri Apr 13 16:29:50 2012 +0200
uridecodebin: Never treat live sources as streaming sources.
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 | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c
index 30f8028..fbf14ee 100644
--- a/gst/playback/gsturidecodebin.c
+++ b/gst/playback/gsturidecodebin.c
@@ -1994,6 +1994,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.
*/
@@ -2023,6 +2038,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);
More information about the gstreamer-commits
mailing list