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 609107 - [qtdemux] Unknown atoms should also be skipped when looking for moov
[qtdemux] Unknown atoms should also be skipped when looking for moov
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.18
Other Linux
: Normal blocker
: 0.10.18
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-02-05 17:11 UTC by Robert Swain
Modified: 2010-02-07 10:06 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Unknown atoms should also be skipped when looking for moov (1.58 KB, patch)
2010-02-05 17:15 UTC, Robert Swain
none Details | Review
Unknown atoms should also be skipped when looking for moov (1.58 KB, patch)
2010-02-05 17:20 UTC, Robert Swain
reviewed Details | Review
Unknown atoms should also be skipped when looking for moov (2.24 KB, patch)
2010-02-05 21:08 UTC, Robert Swain
committed Details | Review

Description Robert Swain 2010-02-05 17:11:03 UTC
In the chain function in qtdemux, in the header state, we are looking for the moov atom. If another atom is encountered, we normally skip over it and check the next atom and so on until we find the moov atom. Then we seek back to the first mdat and commence normal operation.

However, if the atom encountered is unknown to qtdemux, it will seek back to the first mdat rather than skipping over it as it should. I think this causes a seeking loop between the initial and header states in the chain function and so the video never pre-rolls.

A sample can be found here: http://samples.mplayerhq.hu/mobileVideo_3gp/rudolf.3gp

Note, this only applies in push mode so just lump the URI at playbin2 or so to test. Patch incoming...
Comment 1 Robert Swain 2010-02-05 17:15:52 UTC
Created attachment 153095 [details] [review]
Unknown atoms should also be skipped when looking for moov
Comment 2 Robert Swain 2010-02-05 17:20:07 UTC
Created attachment 153096 [details] [review]
Unknown atoms should also be skipped when looking for moov

I remembered to put the 'Fixes bug #BINGO' in this time... ;)
Comment 3 Thiago Sousa Santos 2010-02-05 20:49:37 UTC
Review of attachment 153096 [details] [review]:

Haven't really tested, but the change looks simple and from the code seems good. One thing you forgot is to reset the variable when qtdemux is set to READY.

Nitpick: you don't need to use "== TRUE"
Comment 4 Robert Swain 2010-02-05 21:08:32 UTC
Created attachment 153106 [details] [review]
Unknown atoms should also be skipped when looking for moov

Don't unnecessarily use == TRUE as TRUE is something non-zero. Initialise got_moov to FALSE and reset to FALSE when changing into READY state.
Comment 5 Tim-Philipp Müller 2010-02-07 10:06:55 UTC
Committed this, so it gets as much testing as possible by those who use git:

commit 7877ffb6f59024f10dc0f0e15be981dc228c3d27
Author: Robert Swain <robert.swain@collabora.co.uk>
Date:   Fri Feb 5 18:05:39 2010 +0100

    qtdemux: skip unknown atoms when looking for moov
    
    Fixes bug #609107