mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
GESTimelineObject: use GESTrackEffect as base classe for effects and not GESTrackOperation.
This commit is contained in:
parent
20c2d1df71
commit
9dccf8d475
3 changed files with 28 additions and 30 deletions
|
@ -261,26 +261,26 @@ ges_timeline_object_class_init (GESTimelineObjectClass * klass)
|
||||||
/**
|
/**
|
||||||
* GESTimelineObject::effect-added
|
* GESTimelineObject::effect-added
|
||||||
* @object: the #GESTimelineObject
|
* @object: the #GESTimelineObject
|
||||||
* @efect: the #GESTrackOperation that was added.
|
* @effect: the #GESTrackEffect that was added.
|
||||||
*
|
*
|
||||||
* Will be emitted after an effect was added to the object.
|
* Will be emitted after an effect was added to the object.
|
||||||
*/
|
*/
|
||||||
ges_timeline_object_signals[EFFECT_ADDED] =
|
ges_timeline_object_signals[EFFECT_ADDED] =
|
||||||
g_signal_new ("effect-added", G_TYPE_FROM_CLASS (klass),
|
g_signal_new ("effect-added", G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, ges_marshal_VOID__OBJECT,
|
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, ges_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1, GES_TYPE_TRACK_OPERATION);
|
G_TYPE_NONE, 1, GES_TYPE_TRACK_EFFECT);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GESTimelineObject::effect-removed
|
* GESTimelineObject::effect-removed
|
||||||
* @object: the #GESTimelineObject
|
* @object: the #GESTimelineObject
|
||||||
* @efect: the #GESTrackOperation that was added.
|
* @effect: the #GESTrackEffect that was added.
|
||||||
*
|
*
|
||||||
* Will be emitted after an effect was remove from the object.
|
* Will be emitted after an effect was remove from the object.
|
||||||
*/
|
*/
|
||||||
ges_timeline_object_signals[EFFECT_REMOVED] =
|
ges_timeline_object_signals[EFFECT_REMOVED] =
|
||||||
g_signal_new ("effect-removed", G_TYPE_FROM_CLASS (klass),
|
g_signal_new ("effect-removed", G_TYPE_FROM_CLASS (klass),
|
||||||
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, ges_marshal_VOID__OBJECT,
|
G_SIGNAL_RUN_FIRST, 0, NULL, NULL, ges_marshal_VOID__OBJECT,
|
||||||
G_TYPE_NONE, 1, GES_TYPE_TRACK_OPERATION);
|
G_TYPE_NONE, 1, GES_TYPE_TRACK_EFFECT);
|
||||||
|
|
||||||
klass->need_fill_track = TRUE;
|
klass->need_fill_track = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -397,9 +397,10 @@ ges_timeline_object_add_track_object (GESTimelineObject * object, GESTrackObject
|
||||||
ObjectMapping *mapping;
|
ObjectMapping *mapping;
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
GESTimelineObjectPrivate *priv = object->priv;
|
GESTimelineObjectPrivate *priv = object->priv;
|
||||||
|
gboolean is_effect = GES_IS_TRACK_EFFECT (trobj);
|
||||||
|
|
||||||
GST_LOG ("Got a TrackObject : %p , setting the timeline object as its"
|
GST_LOG ("Got a TrackObject : %p , setting the timeline object as its"
|
||||||
"creator. Is a TrackOperation %i", trobj, GES_IS_TRACK_OPERATION (trobj));
|
"creator. Is a TrackEffect %i", trobj, is_effect);
|
||||||
|
|
||||||
if (!trobj)
|
if (!trobj)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -418,14 +419,14 @@ ges_timeline_object_add_track_object (GESTimelineObject * object, GESTrackObject
|
||||||
|
|
||||||
mapping->priority_offset = priv->nb_effects;
|
mapping->priority_offset = priv->nb_effects;
|
||||||
|
|
||||||
/* If the trackobject is an operation:
|
/* If the trackobject is an effect:
|
||||||
* - We add it on top of the list of TrackOperation
|
* - We add it on top of the list of TrackEffect
|
||||||
* - We put all TrackObject present in the TimelineObject
|
* - We put all TrackObject present in the TimelineObject
|
||||||
* which are not TrackEffect on top of them
|
* which are not TrackEffect on top of them
|
||||||
*
|
*
|
||||||
* FIXME: Let the full control over priorities to the user
|
* FIXME: Let the full control over priorities to the user
|
||||||
*/
|
*/
|
||||||
if (GES_IS_TRACK_OPERATION (trobj)) {
|
if (is_effect) {
|
||||||
GST_DEBUG
|
GST_DEBUG
|
||||||
("Moving non on top effect under other TrackObject-s, nb effects %i",
|
("Moving non on top effect under other TrackObject-s, nb effects %i",
|
||||||
priv->nb_effects);
|
priv->nb_effects);
|
||||||
|
@ -444,7 +445,7 @@ ges_timeline_object_add_track_object (GESTimelineObject * object, GESTrackObject
|
||||||
|
|
||||||
/* emit 'effect-added' */
|
/* emit 'effect-added' */
|
||||||
g_signal_emit (object, ges_timeline_object_signals[EFFECT_ADDED], 0,
|
g_signal_emit (object, ges_timeline_object_signals[EFFECT_ADDED], 0,
|
||||||
GES_TRACK_OPERATION (trobj));
|
GES_TRACK_EFFECT (trobj));
|
||||||
}
|
}
|
||||||
|
|
||||||
object->priv->trackobjects =
|
object->priv->trackobjects =
|
||||||
|
@ -525,10 +526,10 @@ ges_timeline_object_release_track_object (GESTimelineObject * object,
|
||||||
object->priv->trackobjects =
|
object->priv->trackobjects =
|
||||||
g_list_remove (object->priv->trackobjects, trackobject);
|
g_list_remove (object->priv->trackobjects, trackobject);
|
||||||
|
|
||||||
if (GES_IS_TRACK_OPERATION (trackobject)) {
|
if (GES_IS_TRACK_EFFECT (trackobject)) {
|
||||||
/* emit 'object-removed' */
|
/* emit 'object-removed' */
|
||||||
g_signal_emit (object, ges_timeline_object_signals[EFFECT_REMOVED], 0,
|
g_signal_emit (object, ges_timeline_object_signals[EFFECT_REMOVED], 0,
|
||||||
GES_TRACK_OPERATION (trackobject));
|
GES_TRACK_EFFECT (trackobject));
|
||||||
}
|
}
|
||||||
|
|
||||||
ges_track_object_set_timeline_object (trackobject, NULL);
|
ges_track_object_set_timeline_object (trackobject, NULL);
|
||||||
|
@ -848,10 +849,10 @@ sort_track_effects (gpointer a, gpointer b, GESTimelineObject * object)
|
||||||
*
|
*
|
||||||
* Get effects applied on @object
|
* Get effects applied on @object
|
||||||
*
|
*
|
||||||
* Returns: a #GList of the #GESTrackOperation that are applied on
|
* Returns: a #GList of the #GESTrackEffect that are applied on
|
||||||
* @object order by ascendant priorities.
|
* @object order by ascendant priorities.
|
||||||
* The refcount of the objects will be increased. The user will have to
|
* The refcount of the objects will be increased. The user will have to
|
||||||
* unref each #GESTrackOperation and free the #GList.
|
* unref each #GESTrackEffect and free the #GList.
|
||||||
*/
|
*/
|
||||||
GList *
|
GList *
|
||||||
ges_timeline_object_get_effects (GESTimelineObject * object)
|
ges_timeline_object_get_effects (GESTimelineObject * object)
|
||||||
|
@ -882,7 +883,7 @@ ges_timeline_object_get_effects (GESTimelineObject * object)
|
||||||
*/
|
*/
|
||||||
gint
|
gint
|
||||||
ges_timeline_object_get_top_effect_position (GESTimelineObject * object,
|
ges_timeline_object_get_top_effect_position (GESTimelineObject * object,
|
||||||
GESTrackOperation * effect)
|
GESTrackEffect * effect)
|
||||||
{
|
{
|
||||||
return find_object_mapping (object,
|
return find_object_mapping (object,
|
||||||
GES_TRACK_OBJECT (effect))->priority_offset;
|
GES_TRACK_OBJECT (effect))->priority_offset;
|
||||||
|
@ -901,7 +902,7 @@ ges_timeline_object_get_top_effect_position (GESTimelineObject * object,
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
ges_timeline_object_set_top_effect_priority (GESTimelineObject * object,
|
ges_timeline_object_set_top_effect_priority (GESTimelineObject * object,
|
||||||
GESTrackOperation * effect, guint newpriority)
|
GESTrackEffect * effect, guint newpriority)
|
||||||
{
|
{
|
||||||
GList *tmp;
|
GList *tmp;
|
||||||
guint inc;
|
guint inc;
|
||||||
|
|
|
@ -246,11 +246,11 @@ ges_timeline_object_get_effects (GESTimelineObject *object);
|
||||||
|
|
||||||
gint
|
gint
|
||||||
ges_timeline_object_get_top_effect_position (GESTimelineObject *object,
|
ges_timeline_object_get_top_effect_position (GESTimelineObject *object,
|
||||||
GESTrackOperation *effect);
|
GESTrackEffect *effect);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
ges_timeline_object_set_top_effect_priority (GESTimelineObject *object,
|
ges_timeline_object_set_top_effect_priority (GESTimelineObject *object,
|
||||||
GESTrackOperation *effect, guint newpriority);
|
GESTrackEffect *effect, guint newpriority);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ges/ges.h>
|
#include <ges/ges.h>
|
||||||
#include <ges/ges-track-operation.h>
|
|
||||||
#include <gst/check/gstcheck.h>
|
#include <gst/check/gstcheck.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
effect_added_cb (GESTimelineObject * obj, GESTrackOperation * trop,
|
effect_added_cb (GESTimelineObject * obj, GESTrackEffect * trop, gpointer data);
|
||||||
gpointer data);
|
|
||||||
void
|
void
|
||||||
deep_prop_changed_cb (GESTrackObject * obj, GstElement * element,
|
deep_prop_changed_cb (GESTrackObject * obj, GstElement * element,
|
||||||
GParamSpec * spec);
|
GParamSpec * spec);
|
||||||
|
@ -148,7 +146,7 @@ GST_START_TEST (test_get_effects_from_tl)
|
||||||
gint priority =
|
gint priority =
|
||||||
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
||||||
(source),
|
(source),
|
||||||
GES_TRACK_OPERATION (tmp->data));
|
GES_TRACK_EFFECT (tmp->data));
|
||||||
fail_unless (priority > effect_prio);
|
fail_unless (priority > effect_prio);
|
||||||
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
||||||
effect_prio = priority;
|
effect_prio = priority;
|
||||||
|
@ -222,11 +220,11 @@ GST_START_TEST (test_tl_effect)
|
||||||
gint priority =
|
gint priority =
|
||||||
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
||||||
(tl_effect),
|
(tl_effect),
|
||||||
GES_TRACK_OPERATION (tmp->data));
|
GES_TRACK_EFFECT (tmp->data));
|
||||||
fail_unless (priority > effect_prio);
|
fail_unless (priority > effect_prio);
|
||||||
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
||||||
fail_unless (ges_track_object_get_track (GES_TRACK_OBJECT (tmp->
|
fail_unless (ges_track_object_get_track (GES_TRACK_OBJECT (tmp->data))->
|
||||||
data))->type == track_type[i]);
|
type == track_type[i]);
|
||||||
effect_prio = priority;
|
effect_prio = priority;
|
||||||
|
|
||||||
g_object_unref (tmp->data);
|
g_object_unref (tmp->data);
|
||||||
|
@ -286,13 +284,13 @@ GST_START_TEST (test_priorities_tl_object)
|
||||||
GES_TRACK_OBJECT (tck_effect1)));
|
GES_TRACK_OBJECT (tck_effect1)));
|
||||||
|
|
||||||
fail_unless (ges_timeline_object_set_top_effect_priority (GES_TIMELINE_OBJECT
|
fail_unless (ges_timeline_object_set_top_effect_priority (GES_TIMELINE_OBJECT
|
||||||
(tl_effect), GES_TRACK_OPERATION (tck_effect1), 0));
|
(tl_effect), GES_TRACK_EFFECT (tck_effect1), 0));
|
||||||
|
|
||||||
fail_unless (ges_track_object_get_priority (GES_TRACK_OBJECT (tck_effect)) ==
|
fail_unless (ges_track_object_get_priority (GES_TRACK_OBJECT (tck_effect)) ==
|
||||||
3);
|
3);
|
||||||
|
|
||||||
fail_unless (ges_timeline_object_set_top_effect_priority (GES_TIMELINE_OBJECT
|
fail_unless (ges_timeline_object_set_top_effect_priority (GES_TIMELINE_OBJECT
|
||||||
(tl_effect), GES_TRACK_OPERATION (tck_effect1), 3));
|
(tl_effect), GES_TRACK_EFFECT (tck_effect1), 3));
|
||||||
fail_unless (ges_track_object_get_priority (GES_TRACK_OBJECT (tck_effect)) ==
|
fail_unless (ges_track_object_get_priority (GES_TRACK_OBJECT (tck_effect)) ==
|
||||||
2);
|
2);
|
||||||
|
|
||||||
|
@ -304,7 +302,7 @@ GST_START_TEST (test_priorities_tl_object)
|
||||||
gint priority =
|
gint priority =
|
||||||
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
ges_timeline_object_get_top_effect_position (GES_TIMELINE_OBJECT
|
||||||
(tl_effect),
|
(tl_effect),
|
||||||
GES_TRACK_OPERATION (tmp->data));
|
GES_TRACK_EFFECT (tmp->data));
|
||||||
fail_unless (priority > effect_prio);
|
fail_unless (priority > effect_prio);
|
||||||
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
fail_unless (GES_IS_TRACK_EFFECT (tmp->data));
|
||||||
effect_prio = priority;
|
effect_prio = priority;
|
||||||
|
@ -369,12 +367,11 @@ GST_START_TEST (test_track_effect_set_properties)
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
void
|
void
|
||||||
effect_added_cb (GESTimelineObject * obj, GESTrackOperation * trop,
|
effect_added_cb (GESTimelineObject * obj, GESTrackEffect * trop, gpointer data)
|
||||||
gpointer data)
|
|
||||||
{
|
{
|
||||||
GST_DEBUG ("Effect added");
|
GST_DEBUG ("Effect added");
|
||||||
fail_unless (GES_IS_TIMELINE_OBJECT (obj));
|
fail_unless (GES_IS_TIMELINE_OBJECT (obj));
|
||||||
fail_unless (GES_IS_TRACK_OPERATION (trop));
|
fail_unless (GES_IS_TRACK_EFFECT (trop));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue