From fac4ed18d45c455e3971b1eb6d09246c7eafe00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 1 Dec 2015 19:44:36 +0200 Subject: [PATCH] hlsdemux: Always give timestamps if we're discont and don't mark stream discont if a playlist change was not successful 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c index 13947c04b1..f7632fe62c 100644 --- a/ext/hls/gsthlsdemux.c +++ b/ext/hls/gsthlsdemux.c @@ -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;