diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-05-05 09:36:56 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-05-05 09:41:51 +0200 |
commit | 706a88ccb3705a4e0d0c9ebd78357a4a30e48106 (patch) | |
tree | 1d2797e831a8b81c2805317d9b4881ea3db9c36d /gst-libs/gst/uridownloader | |
parent | 816000f726c7ddbf9edebd0fb67e05240669a9f7 (diff) | |
download | gstreamer-plugins-bad-706a88ccb3705a4e0d0c9ebd78357a4a30e48106.tar.gz |
uridownloader: Add parameter to disallow caching as required by HLS
Diffstat (limited to 'gst-libs/gst/uridownloader')
-rw-r--r-- | gst-libs/gst/uridownloader/gsturidownloader.c | 21 | ||||
-rw-r--r-- | gst-libs/gst/uridownloader/gsturidownloader.h | 4 |
2 files changed, 16 insertions, 9 deletions
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c index f0deee6c6..99d88e88b 100644 --- a/gst-libs/gst/uridownloader/gsturidownloader.c +++ b/gst-libs/gst/uridownloader/gsturidownloader.c @@ -323,7 +323,8 @@ gst_uri_downloader_set_range (GstUriDownloader * downloader, static gboolean gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri, - const gchar * referer, gboolean compress, gboolean refresh) + const gchar * referer, gboolean compress, gboolean refresh, + gboolean allow_cache) { GstPad *pad; GObjectClass *gobject_class; @@ -379,13 +380,17 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri, if (g_object_class_find_property (gobject_class, "keep-alive")) g_object_set (downloader->priv->urisrc, "keep-alive", TRUE, NULL); if (g_object_class_find_property (gobject_class, "extra-headers")) { - if (referer || refresh) { + if (referer || refresh || !allow_cache) { GstStructure *extra_headers = gst_structure_new_empty ("headers"); if (referer) gst_structure_set (extra_headers, "Referer", G_TYPE_STRING, referer, NULL); - if (refresh) + + if (!allow_cache) + gst_structure_set (extra_headers, "Cache-Control", G_TYPE_STRING, + "no-cache", NULL); + else if (refresh) gst_structure_set (extra_headers, "Cache-Control", G_TYPE_STRING, "max-age=0", NULL); @@ -415,10 +420,10 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri, GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, - gboolean refresh, GError ** err) + gboolean refresh, gboolean allow_cache, GError ** err) { return gst_uri_downloader_fetch_uri_with_range (downloader, uri, - referer, compress, refresh, 0, -1, err); + referer, compress, refresh, allow_cache, 0, -1, err); } /** @@ -433,7 +438,8 @@ gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, - gboolean refresh, gint64 range_start, gint64 range_end, GError ** err) + gboolean refresh, gboolean allow_cache, + gint64 range_start, gint64 range_end, GError ** err) { GstStateChangeReturn ret; GstFragment *download = NULL; @@ -450,7 +456,8 @@ gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * goto quit; } - if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress, refresh)) { + if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress, refresh, + allow_cache)) { 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 a087fd1b3..c40a46030 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, const gchar * referer, gboolean compress, gboolean refresh, GError ** err); -GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gboolean refresh, gint64 range_start, gint64 range_end, GError ** err); +GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gboolean refresh, gboolean allow_cache, GError ** err); +GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gboolean refresh, gboolean allow_cache, 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); |