summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-05-02 10:36:21 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-05-02 10:36:21 +0200
commitaa875604c9225eb350760e588eb6d9e38ce291dd (patch)
tree95b670f0333dc82961e8a8a5b3e3b95768684cea
parentdfc674514388a5646f2108ea5f1d4c464101c950 (diff)
uridownloader: Add refresh parameter to hint caches that they should check if they're up to date
-rw-r--r--gst-libs/gst/uridownloader/gsturidownloader.c49
-rw-r--r--gst-libs/gst/uridownloader/gsturidownloader.h6
2 files changed, 21 insertions, 34 deletions
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c
index 45f53439a..f0deee6c6 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.c
+++ b/gst-libs/gst/uridownloader/gsturidownloader.c
@@ -323,7 +323,7 @@ gst_uri_downloader_set_range (GstUriDownloader * downloader,
static gboolean
gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
- const gchar * referer, gboolean compress)
+ const gchar * referer, gboolean compress, gboolean refresh)
{
GstPad *pad;
GObjectClass *gobject_class;
@@ -379,10 +379,15 @@ 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) {
- GstStructure *extra_headers =
- gst_structure_new ("headers", "Referer", G_TYPE_STRING, referer,
- NULL);
+ if (referer || refresh) {
+ GstStructure *extra_headers = gst_structure_new_empty ("headers");
+
+ if (referer)
+ gst_structure_set (extra_headers, "Referer", G_TYPE_STRING, referer,
+ NULL);
+ if (refresh)
+ gst_structure_set (extra_headers, "Cache-Control", G_TYPE_STRING,
+ "max-age=0", NULL);
g_object_set (downloader->priv->urisrc, "extra-headers", extra_headers,
NULL);
@@ -408,32 +413,16 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
}
GstFragment *
-gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri,
- gboolean compress, GError ** err)
-{
- return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
- NULL, compress, 0, -1, err);
-}
-
-GstFragment *
-gst_uri_downloader_fetch_uri_with_referer (GstUriDownloader * downloader,
- const gchar * uri, const gchar * referer, gboolean compress, GError ** err)
-{
- return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
- referer, compress, 0, -1, err);
-}
-
-GstFragment *
-gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
- const gchar * uri, gboolean compress, gint64 range_start, gint64 range_end,
- GError ** err)
+gst_uri_downloader_fetch_uri (GstUriDownloader * downloader,
+ const gchar * uri, const gchar * referer, gboolean compress,
+ gboolean refresh, GError ** err)
{
- return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
- NULL, compress, range_start, range_end, err);
+ return gst_uri_downloader_fetch_uri_with_range (downloader, uri,
+ referer, compress, refresh, 0, -1, err);
}
/**
- * gst_uri_downloader_fetch_uri_with_range_and_referer:
+ * gst_uri_downloader_fetch_uri_with_range:
* @downloader: the #GstUriDownloader
* @uri: the uri
* @range_start: the starting byte index
@@ -442,9 +431,9 @@ gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
* Returns the downloaded #GstFragment
*/
GstFragment *
-gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader *
+gst_uri_downloader_fetch_uri_with_range (GstUriDownloader *
downloader, const gchar * uri, const gchar * referer, gboolean compress,
- gint64 range_start, gint64 range_end, GError ** err)
+ gboolean refresh, gint64 range_start, gint64 range_end, GError ** err)
{
GstStateChangeReturn ret;
GstFragment *download = NULL;
@@ -461,7 +450,7 @@ gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader *
goto quit;
}
- if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress)) {
+ if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress, refresh)) {
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 e35aee2d5..a087fd1b3 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.h
+++ b/gst-libs/gst/uridownloader/gsturidownloader.h
@@ -56,10 +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, 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);
-GstFragment * gst_uri_downloader_fetch_uri_with_referer (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, GError ** err);
-GstFragment * gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, 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, 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);
void gst_uri_downloader_reset (GstUriDownloader *downloader);
void gst_uri_downloader_cancel (GstUriDownloader *downloader);
void gst_uri_downloader_free (GstUriDownloader *downloader);