From c5901cebcabc966dd65f70080feec79bb26b4645 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 18 Jul 2012 15:24:00 +0200 Subject: [PATCH] decodebin: Block on caps event A caps event is also used to establish that a stream has prerolled. Without this, we end up allowing negotiation queries to fail, ending in decoders (and other elements) to not be configured right from the start with the most optimal settings. --- gst/playback/gstdecodebin2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index b2dd3efeda..e4198e69a7 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -3866,6 +3866,7 @@ source_pad_blocked_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data) GstDecodeBin *dbin; if ((GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) && + (GST_EVENT_TYPE (GST_PAD_PROBE_INFO_EVENT (info)) != GST_EVENT_CAPS) && (GST_EVENT_IS_STICKY (GST_PAD_PROBE_INFO_EVENT (info)) || !GST_EVENT_IS_SERIALIZED (GST_PAD_PROBE_INFO_EVENT (info)))) { /* do not block on sticky or out of band events otherwise the allocation query