hlsdemux: Always give timestamps if we're discont and don't mark stream discont if...
authorSebastian Dröge <sebastian@centricular.com>
Tue, 1 Dec 2015 17:44:36 +0000 (19:44 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 1 Dec 2015 17:47:59 +0000 (19:47 +0200)
If the stream is discont, we must provide a timestamp in any case. Elements
like tsdemux are not going to output anything if we give a NONE timestamp
after a discont.

Also marking a stream as discont if a playlist change was not successful would
lead to the above situation, but in that case we are not required at all to
mark the stream discont as we're still at the old playlist.

ext/hls/gsthlsdemux.c

index 13947c04b15ea088be7ef751fb2d26a44a0c917d..f7632fe62c72f0916c3e46c502fda910fdad06df 100644 (file)
@@ -667,6 +667,9 @@ gst_hls_demux_update_fragment_info (GstAdaptiveDemuxStream * stream)
     return GST_FLOW_EOS;
   }
 
+  if (stream->discont)
+    discont = TRUE;
+
   /* set up our source for download */
   if (hlsdemux->reset_pts || discont) {
     stream->fragment.timestamp = timestamp;
@@ -996,7 +999,6 @@ retry_failover_protection:
 
   GST_INFO_OBJECT (demux, "Client was on %dbps, max allowed is %dbps, switching"
       " to bitrate %dbps", old_bandwidth, max_bitrate, new_bandwidth);
-  stream->discont = TRUE;
 
   if (gst_hls_demux_update_playlist (demux, FALSE, NULL)) {
     gchar *uri;
@@ -1013,6 +1015,7 @@ retry_failover_protection:
     g_free (main_uri);
     if (changed)
       *changed = TRUE;
+    stream->discont = TRUE;
   } else {
     GList *failover = NULL;