* @title: GESEffect
* @short_description: adds an effect build from a parse-launch style
* bin description to a stream in a GESSourceClip or a GESLayer
+ *
+ * Currently we only support effects with 1 sinkpad and 1 sourcepad
+ * with the exception of `gesaudiomixer` and `gescompositor` which
+ * can be used as effects.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
GESTrackType type = ges_track_element_get_track_type (object);
+ if (!g_strcmp0 (self->priv->bin_description, "gesaudiomixer") ||
+ !g_strcmp0 (self->priv->bin_description, "gescompositor"))
+ return gst_element_factory_make (self->priv->bin_description, NULL);
+
if (type == GES_TRACK_TYPE_VIDEO) {
bin_desc = g_strconcat ("videoconvert name=pre_video_convert ! ",
self->priv->bin_description, " ! videoconvert name=post_video_convert",
#include <stdlib.h>
#include <ges/ges.h>
#include "ges/gstframepositioner.h"
+#include "ges/ges-smart-adder.h"
+#include "ges/ges-smart-video-mixer.h"
#include "ges-internal.h"
#ifndef DISABLE_XPTV
g_type_class_ref (GES_TYPE_TRANSITION_CLIP);
g_type_class_ref (GES_TYPE_OVERLAY_CLIP);
g_type_class_ref (GES_TYPE_OVERLAY_TEXT_CLIP);
+ g_type_class_ref (GES_TYPE_EFFECT_CLIP);
g_type_class_ref (GES_TYPE_GROUP);
ges_asset_cache_init ();
+ gst_element_register (NULL, "gesaudiomixer", 0, GES_TYPE_SMART_ADDER);
+ gst_element_register (NULL, "gescompositor", 0, GES_TYPE_SMART_MIXER);
gst_element_register (NULL, "framepositioner", 0, GST_TYPE_FRAME_POSITIONNER);
gst_element_register (NULL, "gespipeline", 0, GES_TYPE_PIPELINE);
g_type_class_unref (g_type_class_peek (GES_TYPE_TRANSITION_CLIP));
g_type_class_unref (g_type_class_peek (GES_TYPE_OVERLAY_CLIP));
g_type_class_unref (g_type_class_peek (GES_TYPE_OVERLAY_TEXT_CLIP));
+ g_type_class_unref (g_type_class_peek (GES_TYPE_EFFECT_CLIP));
g_type_class_unref (g_type_class_peek (GES_TYPE_GROUP));
/* Register track elements */