mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-08 11:42:01 +00:00
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:
parent
e671ad25a9
commit
95eb1aa49c
1 changed files with 7 additions and 0 deletions
|
@ -3614,6 +3614,7 @@ gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream,
|
|||
} else {
|
||||
GstClockTime duration =
|
||||
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);
|
||||
|
||||
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)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (ts > stream_period->start)
|
||||
ts -= stream_period->start;
|
||||
else
|
||||
ts = 0;
|
||||
|
||||
index = ts / duration;
|
||||
if (segments_count > 0 && index >= segments_count) {
|
||||
stream->segment_index = segments_count;
|
||||
|
|
Loading…
Reference in a new issue