From: Sebastian Dröge Date: Wed, 23 Sep 2015 18:59:00 +0000 (+0200) Subject: qtdemux: Accumulate segments for edit lists before activating the next segment X-Git-Tag: 1.19.3~509^2~3263 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7a0fd82c0330404553ee7e4885ade0af68c03ad;p=platform%2Fupstream%2Fgstreamer.git 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 --- diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 8393959..1de62df 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; } }