From 268c5e7e1728e2a0d9470a120e9f9c8e39ffb524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 6 Jul 2018 10:51:37 +0300 Subject: [PATCH] parsebin: Don't try to continue autoplugging a parser if we got raw caps Otherwise we'll fail with an unhelpful message that no decoder for the raw caps was found if a container contains raw media. --- gst/playback/gstparsebin.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gst/playback/gstparsebin.c b/gst/playback/gstparsebin.c index aee542c9c9..d8fc232952 100644 --- a/gst/playback/gstparsebin.c +++ b/gst/playback/gstparsebin.c @@ -106,6 +106,7 @@ #include "gstplay-enum.h" #include "gstplayback.h" #include "gstplaybackutils.h" +#include "gstrawcaps.h" /* generic templates */ static GstStaticPadTemplate parse_bin_sink_template = @@ -1103,9 +1104,18 @@ static gboolean gst_parse_bin_autoplug_continue (GstElement * element, GstPad * pad, GstCaps * caps) { + static GstStaticCaps raw_caps = GST_STATIC_CAPS (DEFAULT_RAW_CAPS); + + GST_DEBUG_OBJECT (element, "caps %" GST_PTR_FORMAT, caps); + + /* If it matches our target caps, expose it */ + if (gst_caps_can_intersect (caps, gst_static_caps_get (&raw_caps))) { + GST_DEBUG_OBJECT (element, "autoplug-continue returns FALSE"); + return FALSE; + } + GST_DEBUG_OBJECT (element, "autoplug-continue returns TRUE"); - /* by default we always continue */ return TRUE; }