summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorPhilippe Normand <philn@igalia.com>2015-09-16 12:50:46 +0200
committerTim-Philipp Müller <tim@centricular.com>2015-09-30 16:54:20 +0100
commitbf1246cb1315caa48d7b9c2fd347206512a84a5f (patch)
tree7a9ee9c4ff08f502b868a6eb92410b3b6df5b5ce /ext
parentae7d938842da35f1523ea0ec3ab025327adf31c5 (diff)
downloadgstreamer-plugins-bad-bf1246cb1315caa48d7b9c2fd347206512a84a5f.tar.gz
mssdemux: activate streams before configuring bitrate
Doing the contrary has no effect and the consequence is that playback will start with the lowest bitrate even if we can already handle higher bitrate. https://bugzilla.gnome.org/show_bug.cgi?id=755108
Diffstat (limited to 'ext')
-rw-r--r--ext/smoothstreaming/gstmssdemux.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c
index d57c205bd..c6fbd1ab5 100644
--- a/ext/smoothstreaming/gstmssdemux.c
+++ b/ext/smoothstreaming/gstmssdemux.c
@@ -388,6 +388,7 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux)
{
GstMssDemux *mssdemux = GST_MSS_DEMUX_CAST (demux);
GSList *streams = gst_mss_manifest_get_streams (mssdemux->manifest);
+ GSList *active_streams = NULL;
GSList *iter;
const gchar *protection_system_id =
gst_mss_manifest_get_protection_system_id (mssdemux->manifest);
@@ -419,12 +420,12 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux)
demux->connection_speed);
gst_mss_manifest_change_bitrate (mssdemux->manifest, demux->connection_speed);
+ GST_INFO_OBJECT (mssdemux, "Activating streams");
+
for (iter = streams; iter; iter = g_slist_next (iter)) {
GstPad *srcpad = NULL;
GstMssDemuxStream *stream = NULL;
GstMssStream *manifeststream = iter->data;
- GstCaps *caps;
- const gchar *lang;
srcpad = _create_pad (mssdemux, manifeststream);
@@ -437,6 +438,17 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux)
srcpad);
stream->manifest_stream = manifeststream;
gst_mss_stream_set_active (manifeststream, TRUE);
+ active_streams = g_slist_prepend (active_streams, stream);
+ }
+
+ GST_INFO_OBJECT (mssdemux, "Changing max bitrate to %u",
+ demux->connection_speed);
+ gst_mss_manifest_change_bitrate (mssdemux->manifest, demux->connection_speed);
+
+ for (iter = active_streams; iter; iter = g_slist_next (iter)) {
+ GstMssDemuxStream *stream = iter->data;
+ GstCaps *caps;
+ const gchar *lang;
caps = gst_mss_stream_get_caps (stream->manifest_stream);
@@ -474,6 +486,7 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux)
}
}
+ g_slist_free (active_streams);
return TRUE;
}