Commit 95eb1aa4 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵
Browse files

dashdemux: Subtract the period start when seeking based on a template

Otherwise we will look for segments after the period usually. The seek
timestamp is relative to the start of the first period and we have to
select a segment relative to the current period's start.
parent e671ad25
...@@ -3614,6 +3614,7 @@ gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream, ...@@ -3614,6 +3614,7 @@ gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream,
} else { } else {
GstClockTime duration = GstClockTime duration =
gst_mpd_client_get_segment_duration (client, stream, NULL); gst_mpd_client_get_segment_duration (client, stream, NULL);
GstStreamPeriod *stream_period = gst_mpdparser_get_stream_period (client);
guint segments_count = gst_mpd_client_get_segments_counts (client, stream); guint segments_count = gst_mpd_client_get_segments_counts (client, stream);
g_return_val_if_fail (stream->cur_seg_template-> g_return_val_if_fail (stream->cur_seg_template->
...@@ -3621,6 +3622,12 @@ gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream, ...@@ -3621,6 +3622,12 @@ gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream,
if (!GST_CLOCK_TIME_IS_VALID (duration)) { if (!GST_CLOCK_TIME_IS_VALID (duration)) {
return FALSE; return FALSE;
} }
if (ts > stream_period->start)
ts -= stream_period->start;
else
ts = 0;
index = ts / duration; index = ts / duration;
if (segments_count > 0 && index >= segments_count) { if (segments_count > 0 && index >= segments_count) {
stream->segment_index = segments_count; stream->segment_index = segments_count;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment