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.
This commit is contained in:
Sebastian Dröge 2015-06-25 20:19:34 +02:00
parent e671ad25a9
commit 95eb1aa49c

View file

@ -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,
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;