mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-16 05:16:36 +00:00
track-element: Add method to remove control binding
API: ges_track_element_remove_control_binding
This commit is contained in:
parent
7f4f1b0a07
commit
6a0ac89009
4 changed files with 66 additions and 2 deletions
|
@ -152,6 +152,7 @@ ges_track_element_edit
|
||||||
ges_track_element_set_control_source
|
ges_track_element_set_control_source
|
||||||
ges_track_element_get_control_binding
|
ges_track_element_get_control_binding
|
||||||
ges_track_element_get_all_control_bindings
|
ges_track_element_get_all_control_bindings
|
||||||
|
ges_track_element_remove_control_binding
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GESTrackElementPrivate
|
GESTrackElementPrivate
|
||||||
ges_track_element_set_track
|
ges_track_element_set_track
|
||||||
|
|
|
@ -1079,7 +1079,7 @@ ges_pipeline_set_mode (GESPipeline * pipeline, GESPipelineFlags mode)
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
g_return_val_if_fail (GES_IS_PIPELINE (pipeline), FALSE);
|
g_return_val_if_fail (GES_IS_PIPELINE (pipeline), FALSE);
|
||||||
|
|
||||||
GST_ERROR_OBJECT (pipeline, "current mode : %d, mode : %d",
|
GST_DEBUG_OBJECT (pipeline, "current mode : %d, mode : %d",
|
||||||
pipeline->priv->mode, mode);
|
pipeline->priv->mode, mode);
|
||||||
|
|
||||||
/* fast-path, nothing to change */
|
/* fast-path, nothing to change */
|
||||||
|
|
|
@ -86,6 +86,7 @@ static GParamSpec *properties[PROP_LAST];
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
CONTROL_BINDING_ADDED,
|
CONTROL_BINDING_ADDED,
|
||||||
|
CONTROL_BINDING_REMOVED,
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -261,6 +262,19 @@ ges_track_element_class_init (GESTrackElementClass * klass)
|
||||||
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic,
|
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic,
|
||||||
G_TYPE_NONE, 1, GST_TYPE_CONTROL_BINDING);
|
G_TYPE_NONE, 1, GST_TYPE_CONTROL_BINDING);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GESTrackElement::control-binding-added:
|
||||||
|
* @track_element: a #GESTrackElement
|
||||||
|
* @control_binding: the #GstControlBinding that has been added
|
||||||
|
*
|
||||||
|
* The control-bunding-added is emitted each time a control binding
|
||||||
|
* is added for a child property of @track_element
|
||||||
|
*/
|
||||||
|
ges_track_element_signals[CONTROL_BINDING_REMOVED] =
|
||||||
|
g_signal_new ("control-binding-reomved", G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic,
|
||||||
|
G_TYPE_NONE, 1, GST_TYPE_CONTROL_BINDING);
|
||||||
|
|
||||||
element_class->set_start = _set_start;
|
element_class->set_start = _set_start;
|
||||||
element_class->set_duration = _set_duration;
|
element_class->set_duration = _set_duration;
|
||||||
element_class->set_inpoint = _set_inpoint;
|
element_class->set_inpoint = _set_inpoint;
|
||||||
|
@ -1404,6 +1418,52 @@ ges_track_element_edit (GESTrackElement * object,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ges_track_element_remove_control_binding:
|
||||||
|
* @object: the #GESTrackElement on which to set a control binding
|
||||||
|
* @property_name: The name of the property to control.
|
||||||
|
* @binding_type: The type of binding to create. Only "direct" is available for now.
|
||||||
|
*
|
||||||
|
* Removes a #GstControlBinding from @object.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if the binding could be removed, %FALSE if an error
|
||||||
|
* occured
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ges_track_element_remove_control_binding (GESTrackElement * object,
|
||||||
|
const gchar * property_name)
|
||||||
|
{
|
||||||
|
GESTrackElementPrivate *priv;
|
||||||
|
GstControlBinding *binding;
|
||||||
|
GstObject *target;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GES_IS_TRACK_ELEMENT (object), FALSE);
|
||||||
|
|
||||||
|
priv = GES_TRACK_ELEMENT (object)->priv;
|
||||||
|
binding =
|
||||||
|
(GstControlBinding *) g_hash_table_lookup (priv->bindings_hashtable,
|
||||||
|
property_name);
|
||||||
|
|
||||||
|
if (binding) {
|
||||||
|
g_object_get (binding, "object", &target, NULL);
|
||||||
|
GST_DEBUG_OBJECT (object, "Removing binding %p for property %s", binding,
|
||||||
|
property_name);
|
||||||
|
|
||||||
|
gst_object_ref (binding);
|
||||||
|
gst_object_remove_control_binding (target, binding);
|
||||||
|
|
||||||
|
g_signal_emit (object, ges_track_element_signals[CONTROL_BINDING_REMOVED],
|
||||||
|
0, binding);
|
||||||
|
|
||||||
|
gst_object_unref (target);
|
||||||
|
gst_object_unref (binding);
|
||||||
|
g_hash_table_remove (priv->bindings_hashtable, property_name);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ges_track_element_set_control_source:
|
* ges_track_element_set_control_source:
|
||||||
|
|
|
@ -210,5 +210,8 @@ ges_track_element_add_children_props (GESTrackElement *self,
|
||||||
const gchar **whitelist);
|
const gchar **whitelist);
|
||||||
GHashTable *
|
GHashTable *
|
||||||
ges_track_element_get_all_control_bindings (GESTrackElement * trackelement);
|
ges_track_element_get_all_control_bindings (GESTrackElement * trackelement);
|
||||||
|
gboolean
|
||||||
|
ges_track_element_remove_control_binding (GESTrackElement * object,
|
||||||
|
const gchar * property_name);
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
#endif /* _GES_TRACK_ELEMENT */
|
#endif /* _GES_TRACK_ELEMENT */
|
||||||
|
|
Loading…
Reference in a new issue