From 6934362817f9db82db676580272fa84510f85494 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Tue, 12 Jul 2022 10:44:51 +0200 Subject: [PATCH] hlsdemux2: Always check DSN if required We don't want to consider the candidate as being before the playlist if the DSN don't match Part-of: --- subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c index 72eabcc..da9fd6e 100644 --- a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c +++ b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/m3u8.c @@ -1045,6 +1045,11 @@ find_segment_in_playlist (GstHLSMediaPlaylist * playlist, for (idx = 0; idx < playlist->segments->len; idx++) { GstM3U8MediaSegment *cand = g_ptr_array_index (playlist->segments, idx); + /* Ignore non-matching DSN if needed */ + if ((segment->discont_sequence != cand->discont_sequence) + && playlist->has_ext_x_dsn) + continue; + if (idx == 0 && cand->sequence == segment->sequence + 1) { /* Special case for segments just before the 1st one. We add another * reference because it now also belongs to the current playlist */ @@ -1055,9 +1060,7 @@ find_segment_in_playlist (GstHLSMediaPlaylist * playlist, return segment; } - if ((segment->discont_sequence == cand->discont_sequence - || !playlist->has_ext_x_dsn) - && (cand->sequence == segment->sequence)) { + if (cand->sequence == segment->sequence) { return cand; } } -- 2.7.4