GST_M3U8_CLIENT_LOCK (hlsdemux->client);
GST_DEBUG_OBJECT (demux, "seeking to sequence %u", (guint) current_sequence);
+ hlsdemux->reset_pts = TRUE;
hlsdemux->client->sequence = current_sequence;
hlsdemux->client->sequence_position = current_pos;
GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
/* only 1 output supported */
gst_adaptive_demux_stream_new (demux, gst_hls_demux_create_pad (hlsdemux));
+ hlsdemux->reset_pts = TRUE;
+
return TRUE;
}
gst_m3u8_client_advance_fragment (hlsdemux->client,
stream->demux->segment.rate > 0);
+ hlsdemux->reset_pts = FALSE;
return GST_FLOW_OK;
}
}
/* set up our source for download */
- stream->fragment.timestamp = timestamp;
- stream->fragment.duration = duration;
+ if (hlsdemux->reset_pts) {
+ stream->fragment.timestamp = timestamp;
+ } else {
+ stream->fragment.timestamp = GST_CLOCK_TIME_NONE;
+ }
+
if (hlsdemux->current_key)
g_free (hlsdemux->current_key);
hlsdemux->current_key = key;
GstHLSDemux *demux = GST_HLS_DEMUX_CAST (ademux);
demux->do_typefind = TRUE;
+ demux->reset_pts = TRUE;
g_free (demux->key_url);
demux->key_url = NULL;
} else {
target_pos = 0;
}
+ if (GST_CLOCK_TIME_IS_VALID (demux->client->sequence_position)) {
+ target_pos = MAX (target_pos, demux->client->sequence_position);
+ }
current_pos = 0;
for (walk = demux->client->current->files; walk; walk = walk->next) {