summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-07-10 12:03:46 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-07-11 13:54:07 +0200
commit13e15fd953e0bd8aa7092b279980c41338bb7aac (patch)
tree97f718397a894c9635bfa7da49780d3844d35b2e
parent0c171fbef367bc70aa8b517ade81913e9742362c (diff)
decodebin: Consider the caps after the capsfilter after parsers for autoplugging
Otherwise we might try to continue autoplugging e.g. for a specific stream-format although the parser could convert to something else, thus giving us potentially less options for decoders.
-rw-r--r--gst/playback/gstdecodebin2.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c
index 01984fe7d..f1920a2ef 100644
--- a/gst/playback/gstdecodebin2.c
+++ b/gst/playback/gstdecodebin2.c
@@ -315,6 +315,8 @@ static void gst_decode_bin_handle_message (GstBin * bin, GstMessage * message);
static gboolean check_upstream_seekable (GstDecodeBin * dbin, GstPad * pad);
+static GstCaps *get_pad_caps (GstPad * pad);
+
#define EXPOSE_LOCK(dbin) G_STMT_START { \
GST_LOG_OBJECT (dbin, \
"expose locking from thread %p", \
@@ -1731,6 +1733,9 @@ analyze_new_pad (GstDecodeBin * dbin, GstElement * src, GstPad * pad,
decode_pad_set_target (dpad, p);
pad = p;
+ gst_caps_unref (caps);
+ caps = get_pad_caps (pad);
+
if (!gst_caps_is_fixed (caps)) {
g_value_array_free (factories);
goto non_fixed;