mssdemux: activate streams before configuring bitrate
authorPhilippe Normand <philn@igalia.com>
Wed, 16 Sep 2015 10:50:46 +0000 (12:50 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 30 Sep 2015 15:54:20 +0000 (16:54 +0100)
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

ext/smoothstreaming/gstmssdemux.c

index d57c205..c6fbd1a 100644 (file)
@@ -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;
 }