summaryrefslogtreecommitdiff
path: root/gst-libs/gst/uridownloader
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-02-12 13:08:29 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-02-12 13:08:29 +0100
commit2a38c1409b8295265c7484f96f7e37d7bf235805 (patch)
tree13213d21f32635081ed825c7d1b516615a008897 /gst-libs/gst/uridownloader
parent245a7d94f5b1a14fe7db16ec0836e9e71fe7d035 (diff)
downloadgstreamer-plugins-bad-2a38c1409b8295265c7484f96f7e37d7bf235805.tar.gz
uridownloader: Add support for compressed downloads
Very useful for playlists, less useful for media files.
Diffstat (limited to 'gst-libs/gst/uridownloader')
-rw-r--r--gst-libs/gst/uridownloader/gsturidownloader.c18
-rw-r--r--gst-libs/gst/uridownloader/gsturidownloader.h4
2 files changed, 15 insertions, 7 deletions
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c
index 5323445f5..4fc36178c 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.c
+++ b/gst-libs/gst/uridownloader/gsturidownloader.c
@@ -309,9 +309,11 @@ gst_uri_downloader_set_range (GstUriDownloader * downloader,
}
static gboolean
-gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri)
+gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
+ gboolean compress)
{
GstPad *pad;
+ GObjectClass *gobject_class;
if (!gst_uri_is_valid (uri))
return FALSE;
@@ -324,6 +326,10 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri)
if (!downloader->priv->urisrc)
return FALSE;
+ gobject_class = G_OBJECT_GET_CLASS (downloader->priv->urisrc);
+ if (g_object_class_find_property (gobject_class, "compress"))
+ g_object_set (downloader->priv->urisrc, "compress", compress, NULL);
+
/* add a sync handler for the bus messages to detect errors in the download */
gst_element_set_bus (GST_ELEMENT (downloader->priv->urisrc),
downloader->priv->bus);
@@ -340,9 +346,10 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri)
GstFragment *
gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri,
- GError ** err)
+ gboolean compress, GError ** err)
{
- return gst_uri_downloader_fetch_uri_with_range (downloader, uri, 0, -1, err);
+ return gst_uri_downloader_fetch_uri_with_range (downloader, uri, compress, 0,
+ -1, err);
}
/**
@@ -356,7 +363,8 @@ gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri,
*/
GstFragment *
gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
- const gchar * uri, gint64 range_start, gint64 range_end, GError ** err)
+ const gchar * uri, gboolean compress, gint64 range_start,
+ gint64 range_end, GError ** err)
{
GstStateChangeReturn ret;
GstFragment *download = NULL;
@@ -372,7 +380,7 @@ gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
goto quit;
}
- if (!gst_uri_downloader_set_uri (downloader, uri)) {
+ if (!gst_uri_downloader_set_uri (downloader, uri, compress)) {
GST_WARNING_OBJECT (downloader, "Failed to set URI");
goto quit;
}
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.h b/gst-libs/gst/uridownloader/gsturidownloader.h
index 9303f0c32..3a9184e4a 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.h
+++ b/gst-libs/gst/uridownloader/gsturidownloader.h
@@ -56,8 +56,8 @@ struct _GstUriDownloaderClass
GType gst_uri_downloader_get_type (void);
GstUriDownloader * gst_uri_downloader_new (void);
-GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, GError ** err);
-GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, gint64 range_start, gint64 range_end, GError ** err);
+GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, gboolean compress, GError ** err);
+GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, gboolean compress, gint64 range_start, gint64 range_end, GError ** err);
void gst_uri_downloader_reset (GstUriDownloader *downloader);
void gst_uri_downloader_cancel (GstUriDownloader *downloader);
void gst_uri_downloader_free (GstUriDownloader *downloader);