mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-08 19:52:09 +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 {
|
} 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;
|
||||||
|
|
Loading…
Reference in a new issue