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 531672 - [qtdemux] does not handle files with edit lists correctly anymore
[qtdemux] does not handle files with edit lists correctly anymore
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 0.10.9
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-05-06 06:31 UTC by Julien MOUTTE
Modified: 2008-05-26 13:51 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Fix segment selection and newsegment generation (1.69 KB, patch)
2008-05-06 06:34 UTC, Julien MOUTTE
rejected Details | Review

Description Julien MOUTTE 2008-05-06 06:31:20 UTC
Some files can generate an infinite loop and the generated newsegments event do not really reflect the edit list information.

Please see this file as an example :

http://dolphy-tech.net/files/Iron%20Man.mov
Comment 1 Julien MOUTTE 2008-05-06 06:34:25 UTC
Created attachment 110437 [details] [review]
Fix segment selection and newsegment generation

This makes sure we are not looping over the same segment in an infinite loop by using the next sample as our time_position instead of segment->stop. newsegment generation is handled differently to reflect the edit list values.
Comment 2 Wim Taymans 2008-05-26 13:25:39 UTC
The patch does not seem to do the right thing, it changes the segment values to something weird and references samples which could be uninitialized. I'll try to find what's wrong and find a fix.
Comment 3 Wim Taymans 2008-05-26 13:48:59 UTC
This change broke it:

http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/qtdemux/qtdemux.c?r1=1.208&r2=1.209

The reason is that the range check for what segment to activate is wrong, in _find_segment:

-if (segment->time <= time_position && time_position <= segment->stop_time) {
+if (segment->time <= time_position && time_position < segment->stop_time) {

If the time_position == ->stop_time, we must activate the next segment. I understand that for reverse playback, these ranges must likely be reversed.
Comment 4 Wim Taymans 2008-05-26 13:51:45 UTC
        * gst/qtdemux/qtdemux.c: (gst_qtdemux_find_segment),
        (gst_qtdemux_activate_segment):
        Unbreak segment activation again. Fixes #531672.