ges_timeline_element_get_child_property
ges_timeline_element_add_child_property
ges_timeline_element_remove_child_property
+ges_timeline_element_get_track_types
GES_TIMELINE_ELEMENT_PARENT
GES_TIMELINE_ELEMENT_TIMELINE
GES_TIMELINE_ELEMENT_START
(self, prop_name, child, pspec);
}
+static GESTrackType
+_get_track_types (GESTimelineElement * object)
+{
+ GESTrackType types = GES_TRACK_TYPE_UNKNOWN;
+ GList *tmp, *children = ges_container_get_children (GES_CONTAINER (object),
+ TRUE);
+
+ for (tmp = children; tmp; tmp = tmp->next) {
+ if (GES_IS_TRACK_ELEMENT (tmp->data)) {
+ types |= ges_timeline_element_get_track_types (tmp->data);
+ }
+ }
+
+ g_list_free_full (children, gst_object_unref);
+
+ return types ^ GES_TRACK_TYPE_UNKNOWN;
+}
+
/******************************************
* *
* GObject virtual methods implementation *
element_class->set_inpoint = _set_inpoint;
element_class->list_children_properties = _list_children_properties;
element_class->lookup_child = _lookup_child;
+ element_class->get_track_types = _get_track_types;
/* No default implementations */
klass->remove_child = NULL;
{
return g_hash_table_remove (self->priv->children_props, pspec);
}
+
+/**
+ * ges_timeline_element_get_track_types:
+ * @self: A #GESTimelineElement
+ *
+ * Gets all the TrackTypes @self will interact with
+ *
+ * Since: 1.6.0
+ */
+GESTrackType
+ges_timeline_element_get_track_types (GESTimelineElement * self)
+{
+ g_return_if_fail (GES_IS_TIMELINE_ELEMENT (self));
+ g_return_if_fail (GES_TIMELINE_ELEMENT_GET_CLASS (self)->get_track_types);
+
+ return GES_TIMELINE_ELEMENT_GET_CLASS (self)->get_track_types (self);
+}
GParamSpec** (*list_children_properties) (GESTimelineElement * self, guint *n_properties);
gboolean (*lookup_child) (GESTimelineElement *self, const gchar *prop_name,
GObject **child, GParamSpec **pspec);
+ GESTrackType (*get_track_types) (GESTimelineElement * self);
/*< private > */
/* Padding for API extension */
gboolean ges_timeline_element_remove_child_property(GESTimelineElement * self,
GParamSpec *pspec);
+GESTrackType ges_timeline_element_get_track_types (GESTimelineElement * self);
+
G_END_DECLS
#endif /* _GES_TIMELINE_ELEMENT_H_ */
static gboolean _set_duration (GESTimelineElement * element,
GstClockTime duration);
static gboolean _set_priority (GESTimelineElement * element, guint32 priority);
+GESTrackType _get_track_types (GESTimelineElement * object);
static GParamSpec **default_list_children_properties (GESTrackElement * object,
guint * n_properties);
element_class->set_duration = _set_duration;
element_class->set_inpoint = _set_inpoint;
element_class->set_priority = _set_priority;
+ element_class->get_track_types = _get_track_types;
element_class->deep_copy = ges_track_element_copy_properties;
klass->create_gnl_object = ges_track_element_create_gnl_object_func;
return TRUE;
}
+GESTrackType
+_get_track_types (GESTimelineElement * object)
+{
+ return ges_track_element_get_track_type (GES_TRACK_ELEMENT (object));
+}
+
/**
* ges_track_element_set_active:
* @object: a #GESTrackElement