summaryrefslogtreecommitdiff
path: root/gst/isomp4/qtdemux.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-09-23 20:59:00 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-09-24 09:33:33 +0200
commitd7a0fd82c0330404553ee7e4885ade0af68c03ad (patch)
tree619055aceae5b285a01dc7e4494489087b452e44 /gst/isomp4/qtdemux.c
parent3c2044168deebf75cbb2b9131322cc19762bd026 (diff)
downloadgstreamer-plugins-good-d7a0fd82c0330404553ee7e4885ade0af68c03ad.tar.gz
qtdemux: Accumulate segments for edit lists before activating the next segment
eceb2ccc739092d964d78945e19c2ecedbd214e2 broke segment seeks by always accumulating segments manually when activating a segment. This is only needed when handling edit lists, not when activating a segment because of a seek. Do the accumulation when switching edit list segments instead. This fixes segment seeks again, while keeping edit lists playback working. https://bugzilla.gnome.org/show_bug.cgi?id=755471
Diffstat (limited to 'gst/isomp4/qtdemux.c')
-rw-r--r--gst/isomp4/qtdemux.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
index 8393959c9..1de62dfc3 100644
--- a/gst/isomp4/qtdemux.c
+++ b/gst/isomp4/qtdemux.c
@@ -4192,11 +4192,6 @@ gst_qtdemux_activate_segment (GstQTDemux * qtdemux, QtDemuxStream * stream,
/* Copy flags from main segment */
stream->segment.flags = qtdemux->segment.flags;
- /* accumulate previous segments */
- if (GST_CLOCK_TIME_IS_VALID (stream->segment.stop))
- stream->accumulated_base += (stream->segment.stop - stream->segment.start) /
- ABS (stream->segment.rate);
-
/* update the segment values used for clipping */
stream->segment.offset = qtdemux->segment.offset;
stream->segment.base = qtdemux->segment.base + stream->accumulated_base;
@@ -4480,6 +4475,13 @@ next_segment:
stream->time_position = segment->stop_time;
}
/* make sure we select a new segment */
+
+ /* accumulate previous segments */
+ if (GST_CLOCK_TIME_IS_VALID (stream->segment.stop))
+ stream->accumulated_base +=
+ (stream->segment.stop -
+ stream->segment.start) / ABS (stream->segment.rate);
+
stream->segment_index = -1;
}
}