GNOME Bugzilla – Bug 609405
[qtdemux] Issues when seeking with file with lots of tracks and edit lists
Last modified: 2010-05-11 16:48:24 UTC
http://samples.mplayerhq.hu/mov/multitrack/cx/bellhamlam.mov That sample is a bit nuts but, apparently QuickTime plays it properly and we should at least not segfault. The reason it segfaults is because when translating the newsegment event from byte to time format, somehow the stop time we retrieve is less than the start time. gst_qtdemux_push_event (demux, gst_event_new_new_segment_full (update, rate, arate, GST_FORMAT_TIME, start, stop, start)); With stop < start, gst_event_new_new_segment_full () returns a null pointer which gst_qtdemux_push_event () tries to dereference. Patch for this incoming.
Created attachment 153319 [details] [review] Check for stop < start case for a newseg This avoids the segfault but doesn't address the root issue of why stop < start.
Created attachment 153320 [details] Seek test code Compile with: libtool --mode=link gcc `pkg-config --cflags --libs gstreamer-0.10` -o seek_test seek_test.c To reproduce the segfault, I've been using: ./seek_test 5.0 http://... When it tries to seek to approximately 25s, the stop < start is hit and the segfault occurs.
commit 4aff3e48bec7879e0527419527847f0e42ded5bc Author: Robert Swain <robert.swain@collabora.co.uk> Date: Wed Feb 10 20:36:56 2010 +0000 qtdemux: temporary safety check to avoid crashes with a certain file Add temporary check to avoid crashes with a certain file when seeking until the real cause of this is figured out. See #609405. Keeping bug open, since we really need to figure out the real issue here.
Demoting to critical since I don't think this will get fixed properly this cycle.
It turns out that the lots of tracks and edit lists are a bit of red herring. For one, edit lists are ignored in push based mode, which is what this is about, and the problem seems to have been in determining TIME from BYTE. commit bcde9fab09f43fdfee1064612c78b1042e3105f9 Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> Date: Tue May 11 18:42:32 2010 +0200 qtdemux: fix push based seeking ... where it comes down to transforming incoming BYTE segment to a corresponding TIME segment. Also fixes #609405.