*/
#include "ges-internal.h"
+#include "ges-extractable.h"
#include "ges-track-object.h"
#include "ges-timeline-object.h"
#include <gobject/gvaluecollector.h>
-G_DEFINE_ABSTRACT_TYPE (GESTrackObject, ges_track_object,
- G_TYPE_INITIALLY_UNOWNED);
+static void ges_extractable_interface_init (GESExtractableInterface * iface);
+
+
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GESTrackObject, ges_track_object,
+ G_TYPE_INITIALLY_UNOWNED,
+ G_IMPLEMENT_INTERFACE (GES_TYPE_EXTRACTABLE,
+ ges_extractable_interface_init));
struct _GESTrackObjectPrivate
{
priv->maxduration = GST_CLOCK_TIME_NONE;
}
+static void
+ges_extractable_interface_init (GESExtractableInterface * iface)
+{
+}
+
static inline gboolean
ges_track_object_set_start_internal (GESTrackObject * object, guint64 start)
{
GESTrackObjectPrivate *priv;
+ GESAsset *asset;
+
/* Padding for API extension */
gpointer _ges_reserved[GES_PADDING_LARGE];
};
*
* Subclasses can override the @create_gnl_object method to override what type
* of GNonLin object will be created.
- */
+ */
struct _GESTrackObjectClass {
/*< private >*/
GInitiallyUnownedClass parent_class;
*/
#include "ges-internal.h"
+#include "ges-extractable.h"
#include "ges-track-object.h"
#include "ges-track-effect.h"
#include "ges-track-parse-launch-effect.h"
-G_DEFINE_TYPE (GESTrackParseLaunchEffect, ges_track_parse_launch_effect,
- GES_TYPE_TRACK_EFFECT);
+static void ges_extractable_interface_init (GESExtractableInterface * iface);
+
+G_DEFINE_TYPE_WITH_CODE (GESTrackParseLaunchEffect,
+ ges_track_parse_launch_effect, GES_TYPE_TRACK_EFFECT,
+ G_IMPLEMENT_INTERFACE (GES_TYPE_EXTRACTABLE,
+ ges_extractable_interface_init));
static void ges_track_parse_launch_effect_dispose (GObject * object);
static void ges_track_parse_launch_effect_finalize (GObject * object);
PROP_BIN_DESCRIPTION,
};
+static gchar *
+extractable_check_id (GType type, const gchar * id, GError ** error)
+{
+ GstElement *effect = gst_parse_bin_from_description (id, TRUE, error);
+
+ if (effect == NULL)
+ return NULL;
+
+ gst_object_unref (effect);
+ return g_strdup (id);
+}
+
+static GParameter *
+extractable_get_parameters_from_id (const gchar * id, guint * n_params)
+{
+ GParameter *params = g_new0 (GParameter, 2);
+
+ params[0].name = g_strdup ("bin-description");
+ g_value_init (¶ms[0].value, G_TYPE_STRING);
+ g_value_set_string (¶ms[0].value, id);
+
+ *n_params = 1;
+
+ return params;
+}
+
+static gchar *
+extractable_get_id (GESExtractable * self)
+{
+ return g_strdup (GES_TRACK_PARSE_LAUNCH_EFFECT (self)->priv->bin_description);
+}
+
+static void
+ges_extractable_interface_init (GESExtractableInterface * iface)
+{
+ iface->check_id = (GESExtractableCheckId) extractable_check_id;
+ iface->get_parameters_from_id = extractable_get_parameters_from_id;
+ iface->get_id = extractable_get_id;
+}
+
static void
ges_track_parse_launch_effect_get_property (GObject * object,
guint property_id, GValue * value, GParamSpec * pspec)