static void extractable_set_asset (GESExtractable * self, GESAsset * asset) { /* FIXME That should go into #GESTrackElement, but * some work is needed to make sure it works properly */ if (ges_track_element_get_track_type (GES_TRACK_ELEMENT (self)) == GES_TRACK_TYPE_UNKNOWN) { ges_track_element_set_track_type (GES_TRACK_ELEMENT (self), ges_track_element_asset_get_track_type (GES_TRACK_ELEMENT_ASSET (asset))); } }
static GstElement * ges_effect_create_element (GESTrackElement * object) { GstElement *effect; gchar *bin_desc; GError *error = NULL; GESEffect *self = GES_EFFECT (object); const gchar *wanted_categories[] = { "Effect", NULL }; GESTrackType type = ges_track_element_get_track_type (object); if (type == GES_TRACK_TYPE_VIDEO) { bin_desc = g_strconcat ("videoconvert name=pre_video_convert ! ", self->priv->bin_description, " ! videoconvert name=post_video_convert", NULL); } else if (type == GES_TRACK_TYPE_AUDIO) { bin_desc = g_strconcat ("audioconvert ! audioresample !", self->priv->bin_description, NULL); } else { g_assert_not_reached (); } effect = gst_parse_bin_from_description (bin_desc, TRUE, &error); g_free (bin_desc); if (error != NULL) { GST_ERROR ("An error occured while creating the GstElement: %s", error->message); g_error_free (error); return NULL; } GST_DEBUG ("Created effect %p", effect); ges_track_element_add_children_props (object, effect, wanted_categories, NULL, NULL); return effect; }