GNOME Bugzilla – Bug 704301
tagdemux: Breaks seeking forward fails if ACCURATE seek and push sources
Last modified: 2013-07-17 17:52:11 UTC
If you try to do a seek with the GST_SEEK_FLAG_ACCURATE and the source is an http URI, then the stream is seeked to the currently playing position instead of the requested seek position. This behavior does not happen if you use a file source or if the ACCURATE flag is not set.
Also fails with pushfile://
Created attachment 249252 [details] [review] baseparse fix? What happens here is that GstTagDemux transforms the seek event and on the way back it transforms segment.start, but not segment.time (is that correct?).. Then BaseParse tries to match the new segment to the seek using the segment.time and that fails. So the simple patch is to use segment.start. Although I'm not sure if it's right or if GstTagDemux should also transform segment.time ?
Created attachment 249253 [details] [review] tagdemux: Put the modified time back in the time part of the segment Actually, I think baseparse is correct, but GstTagDemux is definitely wrong in reading GstSegment.time and putting its modified value in GstSegment.position
Comment on attachment 249253 [details] [review] tagdemux: Put the modified time back in the time part of the segment Yes, I think this is correct. The time is what actually matters here, not the position
I'm confused, why does it do arithmetic with "time" involving byte offsets?
Because time is in GST_FORMAT_BYTES ;)
Fixed commit b550764da81b35be77a47d8ec7e4a114b3ede0e6 Author: Olivier Crête <olivier.crete@collabora.com> Date: Mon Jul 15 22:27:20 2013 -0400 tagdemux: Put the modified time back in the time part of the segment https://bugzilla.gnome.org/show_bug.cgi?id=704301
Cherry-picked into 1.0 branch.