diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
index 12d72eb..a534624 100644
--- a/gst/playback/gstplaybin2.c
+++ b/gst/playback/gstplaybin2.c
@@ -2852,6 +2852,25 @@ autoplug_factories_cb (GstElement * decodebin, GstPad * pad,
   return result;
 }
 
+static GstCaps *
+_get_first_sink_caps (GstElement * element)
+{
+  GstIterator *it;
+  GstPad *pad;
+  GstCaps *caps;
+
+  it = gst_element_iterate_sink_pads (element);
+
+  if ((gst_iterator_next (it, (gpointer) & pad)) == GST_ITERATOR_OK) {
+    caps = gst_pad_get_caps (pad);
+    gst_object_unref (GST_OBJECT (pad));
+  } else
+    caps = gst_caps_new_empty ();
+
+  gst_iterator_free (it);
+  return caps;
+}
+
 static GstStaticCaps sub_plaintext_caps =
     GST_STATIC_CAPS ("text/x-pango-markup; text/plain");
 
@@ -2892,6 +2911,32 @@ autoplug_continue_cb (GstElement * element, GstPad * pad, GstCaps * caps,
   if (text_sink)
     gst_object_unref (text_sink);
 
+  if (group->playbin->audio_sink) {
+    GstCaps *acaps;
+
+    gst_object_ref (group->playbin->audio_sink);
+    subcaps = gst_caps_make_writable (subcaps);
+    acaps = _get_first_sink_caps (group->playbin->audio_sink);
+    if (!gst_caps_is_any (acaps))
+      gst_caps_merge (subcaps, acaps);
+    else
+      gst_caps_unref (acaps);
+    gst_object_unref (group->playbin->audio_sink);
+  }
+
+  if (group->playbin->video_sink) {
+    GstCaps *vcaps;
+
+    gst_object_ref (group->playbin->video_sink);
+    subcaps = gst_caps_make_writable (subcaps);
+    vcaps = _get_first_sink_caps (group->playbin->video_sink);
+    if (!gst_caps_is_any (vcaps))
+      gst_caps_merge (subcaps, vcaps);
+    else
+      gst_caps_unref (vcaps);
+    gst_object_unref (group->playbin->video_sink);
+  }
+
   ret = !gst_caps_can_intersect (subcaps, caps);
   gst_caps_unref (subcaps);
 
