After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 704301 - tagdemux: Breaks seeking forward fails if ACCURATE seek and push sources
tagdemux: Breaks seeking forward fails if ACCURATE seek and push sources
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 1.0.9
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-07-15 23:36 UTC by Youness Alaoui
Modified: 2013-07-17 17:52 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
baseparse fix? (974 bytes, patch)
2013-07-16 01:50 UTC, Olivier Crête
none Details | Review
tagdemux: Put the modified time back in the time part of the segment (1.97 KB, patch)
2013-07-16 02:29 UTC, Olivier Crête
committed Details | Review

Description Youness Alaoui 2013-07-15 23:36:27 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.
Comment 1 Olivier Crête 2013-07-15 23:38:02 UTC
Also fails with pushfile://
Comment 2 Olivier Crête 2013-07-16 01:50:10 UTC
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 ?
Comment 3 Olivier Crête 2013-07-16 02:29:18 UTC
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 4 Sebastian Dröge (slomo) 2013-07-16 08:18:09 UTC
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
Comment 5 Tim-Philipp Müller 2013-07-16 09:27:32 UTC
I'm confused, why does it do arithmetic with "time" involving byte offsets?
Comment 6 Sebastian Dröge (slomo) 2013-07-16 09:56:54 UTC
Because time is in GST_FORMAT_BYTES ;)
Comment 7 Olivier Crête 2013-07-16 18:03:21 UTC
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
Comment 8 Tim-Philipp Müller 2013-07-17 17:52:11 UTC
Cherry-picked into 1.0 branch.