summaryrefslogtreecommitdiff
path: root/gst-libs/gst/uridownloader
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-03-05 10:47:01 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-03-06 16:36:10 +0100
commitcd02546089e5ae0e53e3e18ab33a4b6a6c2d5d7a (patch)
treeda10bd04b6228381eaa16baa426fb39c80d8eff9 /gst-libs/gst/uridownloader
parent7ed08a132663eba4b6ec86a08c31200c874ce1a4 (diff)
downloadgstreamer-plugins-bad-cd02546089e5ae0e53e3e18ab33a4b6a6c2d5d7a.tar.gz
hlsdemux: Implement handling of byte ranges
Diffstat (limited to 'gst-libs/gst/uridownloader')
-rw-r--r--gst-libs/gst/uridownloader/gstfragment.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gst-libs/gst/uridownloader/gstfragment.c b/gst-libs/gst/uridownloader/gstfragment.c
index 452456a49..d595e8253 100644
--- a/gst-libs/gst/uridownloader/gstfragment.c
+++ b/gst-libs/gst/uridownloader/gstfragment.c
@@ -235,9 +235,21 @@ gst_fragment_get_caps (GstFragment * fragment)
return NULL;
g_mutex_lock (&fragment->priv->lock);
- if (fragment->priv->caps == NULL)
+ if (fragment->priv->caps == NULL) {
+ guint64 offset, offset_end;
+
+ /* FIXME: This is currently necessary as typefinding only
+ * works with 0 offsets... need to find a better way to
+ * do that */
+ offset = GST_BUFFER_OFFSET (fragment->priv->buffer);
+ offset_end = GST_BUFFER_OFFSET_END (fragment->priv->buffer);
+ GST_BUFFER_OFFSET (fragment->priv->buffer) = GST_BUFFER_OFFSET_NONE;
+ GST_BUFFER_OFFSET_END (fragment->priv->buffer) = GST_BUFFER_OFFSET_NONE;
fragment->priv->caps =
gst_type_find_helper_for_buffer (NULL, fragment->priv->buffer, NULL);
+ GST_BUFFER_OFFSET (fragment->priv->buffer) = offset;
+ GST_BUFFER_OFFSET_END (fragment->priv->buffer) = offset_end;
+ }
gst_caps_ref (fragment->priv->caps);
g_mutex_unlock (&fragment->priv->lock);