GESTrackParseLaunchEffect: better create_element implementation
authorThibault Saunier <thibault.saunier@collabora.co.uk>
Wed, 16 Mar 2011 21:06:08 +0000 (17:06 -0400)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Fri, 6 May 2011 08:39:05 +0000 (10:39 +0200)
ges/ges-track-parse-launch-effect.c

index baf793e8f42be51c9ca409bcc5a4c590fb96dd96..6aea39b64446d835a8c7e7d44b13eccff1a20a52 100644 (file)
@@ -136,18 +136,37 @@ static GstElement *
 ges_track_parse_launch_effect_create_element (GESTrackObject * object)
 {
   GstElement *effect;
+  gchar *bin_desc;
 
   GError *error = NULL;
   GESTrackParseLaunchEffect *self = GES_TRACK_PARSE_LAUNCH_EFFECT (object);
+  GESTrack *track = ges_track_object_get_track (object);
 
-  effect =
-      gst_parse_bin_from_description (self->priv->bin_description, TRUE,
-      &error);
+  if (!track) {
+    GST_WARNING
+        ("The object %p should be in a Track for the element to be created");
+    return NULL;
+  }
+
+  if (track->type == GES_TRACK_TYPE_VIDEO) {
+    bin_desc = g_strconcat ("ffmpegcolorspace !",
+        self->priv->bin_description, " ! ffmpegcolorspace", NULL);
+  } else if (track->type == GES_TRACK_TYPE_AUDIO) {
+    bin_desc = g_strconcat ("audioconvert ! audioresample !", self->priv->bin_description, NULL);
+  } else {
+    GST_DEBUG ("We don not suppoort this track type here");
+    return NULL;
+  }
+
+  effect = gst_parse_bin_from_description (bin_desc, TRUE, &error);
+
+  g_free (bin_desc);
 
   if (error != NULL) {
-               g_error_free (error);
+    GST_DEBUG ("%s accured while creating the GstElement", error->message);
+    g_error_free (error);
     return NULL;
-       }
+  }
 
   GST_DEBUG ("Created %p", effect);