From 6c968ed3dac3e16daf2479cb8fe8fe65fb440d28 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 21 Apr 2015 18:29:36 +0200 Subject: [PATCH] hlsdemux: Fix seeking We also have to update the current_file GList pointer in the M3U playlist client, otherwise we are just continuing playback from the current position instead of seeking. --- 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 7c52683..ab4df35 100644 --- a/ext/hls/gsthlsdemux.c +++ b/ext/hls/gsthlsdemux.c @@ -307,7 +307,7 @@ gst_hls_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek) GstSeekType start_type, stop_type; gint64 start, stop; gdouble rate; - GList *walk; + GList *walk, *current_file = NULL; GstClockTime current_pos, target_pos; gint64 current_sequence; GstM3U8MediaFile *file; @@ -376,6 +376,7 @@ gst_hls_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek) file = walk->data; current_sequence = file->sequence; + current_file = walk; if (current_pos <= target_pos && target_pos < current_pos + file->duration) { break; } @@ -390,6 +391,8 @@ gst_hls_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek) GST_DEBUG_OBJECT (demux, "seeking to sequence %u", (guint) current_sequence); hlsdemux->reset_pts = TRUE; hlsdemux->client->sequence = current_sequence; + hlsdemux->client->current_file = + current_file ? current_file : hlsdemux->client->current->files; hlsdemux->client->sequence_position = current_pos; GST_M3U8_CLIENT_UNLOCK (hlsdemux->client); -- 2.7.4