mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 01:45:33 +00:00
splitmuxsrc: Handle stop point from segment
If the seek stop point (or start, during reverse play) was within the segment we just finished, go EOS immediately instead of proceeding through all other parts and sending 0 length seeks to them. https://bugzilla.gnome.org/show_bug.cgi?id=772138
This commit is contained in:
parent
1a17ce9705
commit
00d20b044c
1 changed files with 22 additions and 0 deletions
|
@ -945,6 +945,28 @@ gst_splitmux_end_of_part (GstSplitMuxSrc * splitmux, SplitMuxSrcPad * splitpad)
|
|||
if (gst_splitmux_part_is_eos (splitmux->parts[splitpad->cur_part]))
|
||||
gst_splitmux_part_reader_deactivate (splitmux->parts[cur_part]);
|
||||
|
||||
if (splitmux->play_segment.rate >= 0.0) {
|
||||
if (splitmux->play_segment.stop != -1) {
|
||||
GstClockTime part_end =
|
||||
gst_splitmux_part_reader_get_end_offset (splitmux->parts[cur_part]);
|
||||
if (part_end >= splitmux->play_segment.stop) {
|
||||
GST_DEBUG_OBJECT (splitmux,
|
||||
"Stop position was within that part. Finishing");
|
||||
next_part = -1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (splitmux->play_segment.start != -1) {
|
||||
GstClockTime part_start =
|
||||
gst_splitmux_part_reader_get_start_offset (splitmux->parts[cur_part]);
|
||||
if (part_start >= splitmux->play_segment.start) {
|
||||
GST_DEBUG_OBJECT (splitmux,
|
||||
"Start position was within that part. Finishing");
|
||||
next_part = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (next_part != -1) {
|
||||
GST_DEBUG_OBJECT (splitmux, "At EOS on pad %" GST_PTR_FORMAT
|
||||
" moving to part %d", splitpad, next_part);
|
||||
|
|
Loading…
Reference in a new issue