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 516278 - [dvdreadsrc] FORMAT_BYTES based seek stopped working since 0.10.6
[dvdreadsrc] FORMAT_BYTES based seek stopped working since 0.10.6
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-ugly
git master
Other All
: Normal blocker
: 0.10.7
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-02-13 18:41 UTC by Tal Shalif
Modified: 2008-02-13 22:58 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
possible fix (2.19 KB, patch)
2008-02-13 21:18 UTC, Jan Schmidt
none Details | Review

Description Tal Shalif 2008-02-13 18:41:12 UTC
Please describe the problem:
pipeline seek() command which used to work in previous revision now causes the pipeline to freeze

Steps to reproduce:
1. cvs update code under gst-plugins-ugly/ext/dvdread to HEAD
2. make install
3. run python and use the gst-python gstreamer binding:
4. >>> import gst
5. >>> pipeline = gst.parse_launch("dvdreadsrc ! dvddemux name=demux .current_video ! queue ! mpeg2dec ! ffmpegcolorspace ! xvimagesink")
6. >>> pipeline.seek ( 1.0, gst.FORMAT_BYTES, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, long ( pipeline.query_duration ( gst.FORMAT_BYTES ) [0] * 0.3 ) , gst.SEEK_TYPE_NONE, 0 )


Actual results:
pipeline stops playing (video is now frozen/paused)

Expected results:
video playing should seek to the requested position in the DVD stream and playing continue.

Does this happen every time?
yes, I have tried with a few DVDs and it happens each time

Other information:
If I revert dvdreadsrc.c to revision 1.48 it works. It stops working in revision > 1.49
Comment 1 Jan Schmidt 2008-02-13 20:21:11 UTC
Yep, that revision breaks seeking on BYTES, alright. The problem is that after a bytes seek, you have no guarantee of landing on a NAV block, which is what you need in order to know where you are. The previous code would skip blocks until it found the nav packet, instead of erroring.
Comment 2 Jan Schmidt 2008-02-13 20:50:52 UTC
See bug #358891
Comment 3 Jan Schmidt 2008-02-13 21:18:04 UTC
Created attachment 105184 [details] [review]
possible fix

Any chance you could test the attached patch?
Comment 4 Jan Schmidt 2008-02-13 21:21:13 UTC
@ds: Do you still have that disk which you tested 358891 with?
Comment 5 Jan Schmidt 2008-02-13 21:25:46 UTC
Marking as a blocker, since this is a regression
Comment 6 Jan Schmidt 2008-02-13 22:57:41 UTC
After some tests and confirmation on IRC, committed:

2008-02-13  Jan Schmidt  <jan.schmidt@sun.com>

        * ext/dvdread/dvdreadsrc.c:
        Fix regression in DVD seeking - when a pack we
        expect to be a NAV block turns out not to be, scan forwards
        for up to 2MB (at most ~1sec) until we find one.

        Fixes: #516278