diff options
-rw-r--r-- | ext/smoothstreaming/gstmssdemux.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c index 8f10d7de0..196ce4147 100644 --- a/ext/smoothstreaming/gstmssdemux.c +++ b/ext/smoothstreaming/gstmssdemux.c @@ -373,6 +373,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 *iter; + GSList *active_streams = NULL; if (streams == NULL) { GST_INFO_OBJECT (mssdemux, "No streams found in the manifest"); @@ -382,16 +383,11 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux) return FALSE; } - GST_INFO_OBJECT (mssdemux, "Changing max bitrate to %u", - 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); @@ -404,6 +400,18 @@ 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); gst_adaptive_demux_stream_set_caps (GST_ADAPTIVE_DEMUX_STREAM_CAST (stream), create_mss_caps (stream, caps)); @@ -419,6 +427,7 @@ gst_mss_demux_setup_streams (GstAdaptiveDemux * demux) } } + g_slist_free (active_streams); return TRUE; } |