GNOME Bugzilla – Bug 516513
dvdread/dvddemux: FORMAT_TIME seek fails on some DVDs
Last modified: 2018-05-12 08:27:49 UTC
Please describe the problem: Seek operation fails when running a simple DVD playing pipeline using dvdreadsrc and dvddemux, Steps to reproduce: (using python bindings) 1. >>> import gst 2. >>> pipeline = gst.parse_launch("dvdreadsrc title=5 device=/home/tshalif/Desktop/MP3/b5s1d1.iso ! dvddemux name=demux .current_video ! queue ! mpeg2dec ! xvimagesink") 3. >>> pipeline.seek ( 1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, 1224407266667L, gst.SEEK_TYPE_NONE, 0 ) Actual results: The movie display pauses on the current position. After a long time (5 - 10 minutes) it resumes playing, but much further down the movie than the intended seek position Expected results: video output to seek to requested position and continue playing film Does this happen every time? On those DVDs where the problem manifests itself it happens every time, but with the following characteristics: It seems like for each such DVD there is a 'point-of-no-return' seek position; Seeking to any position larger than that position will fail as described abofe. But seeking to a position smaller than that point will succeed. Other information: In the above example, the 'point-of-no-return' seek position is 1224407266667 nanoseconds. Seeking to 1224407266666 or less will succeed, while seeking to 1224407266667 or above will fail.
Created attachment 105265 [details] dvdreadsrc:5,dvddemux:5 trace of failed seeking to pos 2524407266667
Created attachment 105266 [details] dvdreadsrc:5,dvddemux:5 trace of successful seeking to pos 2524407266666
Is this still a problem with the latest releases?
Work in progress verifying using GStreamer 0.10.34 (GIT)
The problem is as before: On Pirates of the Carribean (Japanese NTSC DVD distribution) The following works: >>> pipeline.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, 1358930000000L) True But trying to seek a bit further causes the movie stop: >>> pipeline.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, 1458930000000L) True The stream duration for that title is: >>> pipeline.query_duration(gst.FORMAT_TIME) (8582000000000L, <enum GST_FORMAT_TIME of type GstFormat>)
Likely fixed by https://bugzilla.gnome.org/show_bug.cgi?id=659252, can you please check ?
Possible fix by #659252 still under investigation - so far no success with HEAD@master
The problem persists. using latest Git master - gst.version() returns 0.10.35.1 Trying to seek on the pipeline or directly on the dvddemux element beyond a certain nanosecond position manifests the same problem described above. Seeking directly on the dvdreadsrc element seems to work. When seeking on dvdreadsrc via a call to src.seek(), playing rate can not be changed. Tests performed on Kubuntu 11.04 x86_64
Just to be sure: the fixes are in -ugly, you tried git of it as well, right ? Just making sure you've tried the right git repo, since 0.10.35.1 is not an -ugly version.
I compiled after pulling latest from master in all components.
Closing since this was for a very old version. If you can reproduce the issues on current GStreamer and attach logs, please re-open.