diff --git a/ges/ges-video-uri-source.c b/ges/ges-video-uri-source.c
index 4d15758..8f38964 100644
--- a/ges/ges-video-uri-source.c
+++ b/ges/ges-video-uri-source.c
@@ -23,6 +23,7 @@
  * @short_description: outputs a single video stream from a given file
  */
 
+#include <stdlib.h>
 #include <gst/pbutils/missing-plugins.h>
 
 #include "ges-utils.h"
@@ -43,6 +44,25 @@ enum
   PROP_URI
 };
 
+static void
+source_setup (GstElement * uridecodebin, GstElement * source, GESTrackElement * trksrc)
+{
+  GParamSpec **props;
+  GstElementClass *klass = GST_ELEMENT_GET_CLASS (source);
+  guint total, i;
+  const gchar ** props_names;
+
+  props = g_object_class_list_properties (G_OBJECT_CLASS (klass), &total);
+
+  props_names = malloc ((total + 1) * sizeof (gchar *));
+  for (i = 0; i < total; i++) {
+    props_names[i] = (gchar *) props[i]->name;
+  }
+  props_names[total] = NULL;
+
+  ges_track_element_add_children_props (trksrc, source, NULL, NULL, props_names);
+}
+
 /* GESSource VMethod */
 static GstElement *
 ges_video_uri_source_create_source (GESTrackElement * trksrc)
@@ -57,6 +77,8 @@ ges_video_uri_source_create_source (GESTrackElement * trksrc)
 
   decodebin = gst_element_factory_make ("uridecodebin", NULL);
 
+  g_signal_connect (decodebin, "source-setup", G_CALLBACK (source_setup),
+      trksrc);
   g_object_set (decodebin, "caps", ges_track_get_caps (track),
       "expose-all-streams", FALSE, "uri", self->uri, NULL);
 
