decodebin: Consider the caps after the capsfilter after parsers for autoplugging
authorSebastian Dröge <sebastian@centricular.com>
Thu, 10 Jul 2014 10:03:46 +0000 (12:03 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 21 Jul 2014 07:35:05 +0000 (09:35 +0200)
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.

gst/playback/gstdecodebin2.c

index 01984fe..f1920a2 100644 (file)
@@ -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;