uridecodebin: Only enable progressive downloading if the upstream duration in bytes...
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 27 Aug 2010 18:45:19 +0000 (20:45 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 27 Aug 2010 18:45:19 +0000 (20:45 +0200)
Otherwise we might try to enable it for live streams, where this would
cause playback to fail completely.

Fixes bug #628028.

gst/playback/gsturidecodebin.c

index 391678d..1df1bb6 100644 (file)
@@ -1477,6 +1477,14 @@ type_found (GstElement * typefind, guint probability,
 
   /* remember if we need download buffering */
   decoder->is_download = IS_DOWNLOAD_MEDIA (media_type) && decoder->download;
+  /* only enable download buffering if the upstream duration is known */
+  if (decoder->is_download) {
+    GstFormat fmt = GST_FORMAT_BYTES;
+    gint64 dur;
+
+    decoder->is_download = (gst_element_query_duration (typefind, &fmt, &dur)
+        && fmt == GST_FORMAT_BYTES && dur != -1);
+  }
 
   dec_elem = make_decoder (decoder);
   if (!dec_elem)