diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index b2cb4eee61..b2d271e89f 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -3752,6 +3752,14 @@ source_pad_blocked_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data) GstDecodeChain *chain; GstDecodeBin *dbin; + if ((GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) && + (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 + from demuxer might block the loop thread */ + return GST_PAD_PROBE_PASS; + } + chain = dpad->chain; dbin = chain->dbin;