hls/m3u8: Fix starting segment for live playlist

RFC 8216 6.3.3 "Playing the Media Playlist File" : states that for live media
playlists "the client SHOULD NOT choose a segment that starts less than three
target durations from the end of the Playlist file"

This is an off-by-one error. Since we are looking for the "index" of the
segment, we need to subtract 1 from the searched position.

Ex: For a playlist with 12 entries, we want to start playback on the 9th segment
... which is at index 8.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2259>
This commit is contained in:
Edward Hervey 2022-04-21 11:47:55 +02:00 committed by GStreamer Marge Bot
parent d824698561
commit 964ee0299d

View file

@ -1124,8 +1124,8 @@ gst_hls_media_playlist_get_starting_segment (GstHLSMediaPlaylist * self)
/* Live playlist */
res =
g_ptr_array_index (self->segments,
MAX ((gint) self->segments->len - GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE,
0));
MAX ((gint) self->segments->len - GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE -
1, 0));
}
if (res) {