static gboolean _set_child_property (GstValidateScenario * scenario, GstValidateAction * action) { const GValue *value; GESTimeline *timeline; GESTimelineElement *element; const gchar *property_name, *element_name; element_name = gst_structure_get_string (action->structure, "element-name"); timeline = get_timeline (scenario); g_return_val_if_fail (timeline, FALSE); element = ges_timeline_get_element (timeline, element_name); g_return_val_if_fail (GES_IS_TRACK_ELEMENT (element), FALSE); property_name = gst_structure_get_string (action->structure, "property"); value = gst_structure_get_value (action->structure, "value"); GST_DEBUG ("%s Setting %s property to %p", element->name, property_name, value); ges_track_element_set_child_property (GES_TRACK_ELEMENT (element), property_name, (GValue *) value); g_object_unref(timeline); return TRUE; }
GESTrackType ges_track_element_get_track_type (GESTrackElement * object) { g_return_val_if_fail (GES_IS_TRACK_ELEMENT (object), GES_TRACK_TYPE_UNKNOWN); return object->priv->track_type; }
void deep_prop_changed_cb (GESTrackElement * track_element, GstElement * element, GParamSpec * spec) { GST_DEBUG ("%s property changed", g_param_spec_get_name (spec)); fail_unless (GES_IS_TRACK_ELEMENT (track_element)); fail_unless (GST_IS_ELEMENT (element)); }
void ges_track_element_set_track_type (GESTrackElement * object, GESTrackType type) { g_return_if_fail (GES_IS_TRACK_ELEMENT (object)); if (object->priv->track_type != type) { object->priv->track_type = type; g_object_notify_by_pspec (G_OBJECT (object), properties[PROP_TRACK_TYPE]); } }
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; }
/** * ges_track_element_set_active: * @object: a #GESTrackElement * @active: visibility * * Sets the usage of the @object. If @active is %TRUE, the object will be used for * playback and rendering, else it will be ignored. * * Returns: %TRUE if the property was toggled, else %FALSE */ gboolean ges_track_element_set_active (GESTrackElement * object, gboolean active) { g_return_val_if_fail (GES_IS_TRACK_ELEMENT (object), FALSE); GST_DEBUG_OBJECT (object, "object:%p, active:%d", object, active); if (object->priv->gnlobject != NULL) { if (G_UNLIKELY (active == object->active)) return FALSE; g_object_set (object->priv->gnlobject, "active", active, NULL); if (active != object->active) { object->active = active; if (GES_TRACK_ELEMENT_GET_CLASS (object)->active_changed) GES_TRACK_ELEMENT_GET_CLASS (object)->active_changed (object, active); } } else object->priv->pending_active = active; return TRUE; }