[Bug 706774] qtdemux: handle multiple sample descriptions per track

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Jul 4 18:17:32 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=706774

--- Comment #9 from Thiago Sousa Santos <thiagossantos at gmail.com> ---
This file causes a race condition in decodebin3. It has 2 stsd entries: jpeg
and svq3. Only the first frame uses jpeg all the rest of the clip is svq3 so
this is what happens:

1) qtdemux creates and pushes a stream start with a GstStream object with
caps=jpeg, then pushes caps and the jpeg buffer
2) decodebin3 receives on its probe the stream-start and stores the GstStream
3) decodebin3 receives the jpeg caps event

In parallel qtdemux moves to the second frame and updates the GstStream to have
svq3 caps.

The issue arises from the fact that decodebin3 uses gst_stream_get_caps to
create the decoder and not the caps from the event, because it assumes they are
the same. What happens is that it can receive the jpeg caps event after the
GstStream has been set to svq3 so it will create a svq3 decodere to handle the
caps event and the next buffer and it all fails.

Replacing gst_stream_get_caps to use the event's caps makes it work reliably
but I still need to understand a bit more of decodebin3 to decide if this is
the right approach. Also, this makes using gst_stream_get_caps not useful for
negotiation purposes.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list