diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-08-21 12:06:07 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-09-25 23:52:28 +0200 |
commit | 572e54574bb3600bb40a8b62c267c537d4b411f0 (patch) | |
tree | 2c1aebf2b5f8448fc6ac2012f86e2ae79fbd1c03 /ext | |
parent | 07ee57228b77c2c06cac232311388ef638e87721 (diff) | |
download | gstreamer-plugins-bad-572e54574bb3600bb40a8b62c267c537d4b411f0.tar.gz |
mpdparser: Store an URI downloader in the parser for downloading additional MPD resources if needed
https://bugzilla.gnome.org/show_bug.cgi?id=752230
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dash/gstdashdemux.c | 3 | ||||
-rw-r--r-- | ext/dash/gstmpdparser.c | 13 | ||||
-rw-r--r-- | ext/dash/gstmpdparser.h | 5 |
3 files changed, 21 insertions, 0 deletions
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c index ae349d170..5445ad4a4 100644 --- a/ext/dash/gstdashdemux.c +++ b/ext/dash/gstdashdemux.c @@ -724,6 +724,7 @@ gst_dash_demux_process_manifest (GstAdaptiveDemux * demux, GstBuffer * buf) if (dashdemux->client) gst_mpd_client_free (dashdemux->client); dashdemux->client = gst_mpd_client_new (); + gst_mpd_client_set_uri_downloader (dashdemux->client, demux->downloader); dashdemux->client->mpd_uri = g_strdup (demux->manifest_uri); dashdemux->client->mpd_base_uri = g_strdup (demux->manifest_base_uri); @@ -801,6 +802,7 @@ gst_dash_demux_reset (GstAdaptiveDemux * ademux) gst_dash_demux_clock_drift_free (demux->clock_drift); demux->clock_drift = NULL; demux->client = gst_mpd_client_new (); + gst_mpd_client_set_uri_downloader (demux->client, ademux->downloader); demux->n_audio_streams = 0; demux->n_video_streams = 0; @@ -1273,6 +1275,7 @@ gst_dash_demux_update_manifest_data (GstAdaptiveDemux * demux, /* parse the manifest file */ new_client = gst_mpd_client_new (); + gst_mpd_client_set_uri_downloader (new_client, demux->downloader); new_client->mpd_uri = g_strdup (demux->manifest_uri); new_client->mpd_base_uri = g_strdup (demux->manifest_base_uri); gst_buffer_map (buffer, &mapinfo, GST_MAP_READ); diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index a2d34b606..5d596425d 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -3051,9 +3051,22 @@ gst_mpd_client_free (GstMpdClient * client) g_free (client->mpd_base_uri); client->mpd_base_uri = NULL; + if (client->downloader) + gst_object_unref (client->downloader); + client->downloader = NULL; + g_free (client); } +void +gst_mpd_client_set_uri_downloader (GstMpdClient * client, + GstUriDownloader * downloader) +{ + if (client->downloader) + gst_object_unref (client->downloader); + client->downloader = gst_object_ref (downloader); +} + static void gst_mpd_client_check_profiles (GstMpdClient * client) { diff --git a/ext/dash/gstmpdparser.h b/ext/dash/gstmpdparser.h index c2fde5500..85ddc8476 100644 --- a/ext/dash/gstmpdparser.h +++ b/ext/dash/gstmpdparser.h @@ -28,6 +28,7 @@ #define __GST_MPDPARSER_H__ #include <gst/gst.h> +#include <gst/uridownloader/gsturidownloader.h> G_BEGIN_DECLS @@ -514,6 +515,8 @@ struct _GstMpdClient /* profiles */ gboolean profile_isoff_ondemand; + + GstUriDownloader * downloader; }; /* Basic initialization/deinitialization functions */ @@ -522,6 +525,8 @@ void gst_active_streams_free (GstMpdClient * client); void gst_mpd_client_free (GstMpdClient * client); void gst_media_fragment_info_clear (GstMediaFragmentInfo * fragment); +void gst_mpd_client_set_uri_downloader (GstMpdClient * client, GstUriDownloader * download); + /* MPD file parsing */ gboolean gst_mpd_parse (GstMpdClient *client, const gchar *data, gint size); |