mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 15:22:17 +00:00
add create_track_objects
This commit is contained in:
parent
dca01a3c0e
commit
cd7cefffa6
3 changed files with 65 additions and 4 deletions
|
@ -35,6 +35,9 @@ gboolean
|
||||||
ges_timeline_object_fill_track_object_func (GESTimelineObject * object,
|
ges_timeline_object_fill_track_object_func (GESTimelineObject * object,
|
||||||
GESTrackObject * trackobj, GstElement * gnlobj);
|
GESTrackObject * trackobj, GstElement * gnlobj);
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
ges_timeline_object_create_track_objects_func (GESTimelineObject
|
||||||
|
* object, GESTrack * track);
|
||||||
|
|
||||||
G_DEFINE_TYPE (GESTimelineObject, ges_timeline_object, G_TYPE_OBJECT);
|
G_DEFINE_TYPE (GESTimelineObject, ges_timeline_object, G_TYPE_OBJECT);
|
||||||
|
|
||||||
|
@ -116,6 +119,7 @@ ges_timeline_object_class_init (GESTimelineObjectClass * klass)
|
||||||
object_class->set_property = ges_timeline_object_set_property;
|
object_class->set_property = ges_timeline_object_set_property;
|
||||||
object_class->dispose = ges_timeline_object_dispose;
|
object_class->dispose = ges_timeline_object_dispose;
|
||||||
object_class->finalize = ges_timeline_object_finalize;
|
object_class->finalize = ges_timeline_object_finalize;
|
||||||
|
klass->create_track_objects = ges_timeline_object_create_track_objects_func;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GESTimelineObject:start
|
* GESTimelineObject:start
|
||||||
|
@ -214,6 +218,50 @@ ges_timeline_object_create_track_object (GESTimelineObject * object,
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ges_timeline_object_create_track_objects:
|
||||||
|
* @object: The origin #GESTimelineObject
|
||||||
|
* @track: The #GESTrack to create each #GESTrackObject for.
|
||||||
|
*
|
||||||
|
* Creates all #GESTrackObjects supported by this object and adds them to the
|
||||||
|
* provided track. The the track is responsible for calling
|
||||||
|
* #ges_timeline_release_track_object on these objects when it is finished
|
||||||
|
* with them.
|
||||||
|
*
|
||||||
|
* Returns: True if each track object was created successfully, or false if an
|
||||||
|
* error occured.
|
||||||
|
*/
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
ges_timeline_object_create_track_objects (GESTimelineObject * object,
|
||||||
|
GESTrack * track)
|
||||||
|
{
|
||||||
|
GESTimelineObjectClass *klass;
|
||||||
|
|
||||||
|
klass = GES_TIMELINE_OBJECT_GET_CLASS (object);
|
||||||
|
|
||||||
|
if (!(klass->create_track_objects)) {
|
||||||
|
GST_INFO ("no create_track_objects implentation");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return klass->create_track_objects (object, track);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
ges_timeline_object_create_track_objects_func (GESTimelineObject * object,
|
||||||
|
GESTrack * track)
|
||||||
|
{
|
||||||
|
GESTrackObject *result;
|
||||||
|
|
||||||
|
result = ges_timeline_object_create_track_object (object, track);
|
||||||
|
if (!result) {
|
||||||
|
GST_WARNING ("couldn't create track object");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return ges_track_add_object (track, result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ges_timeline_object_release_track_object:
|
* ges_timeline_object_release_track_object:
|
||||||
* @object: a #GESTimelineObject
|
* @object: a #GESTimelineObject
|
||||||
|
|
|
@ -69,9 +69,8 @@ typedef gboolean (*FillTrackObjectFunc) (GESTimelineObject * object,
|
||||||
*
|
*
|
||||||
* Creates the 'primary track object for this @object.
|
* Creates the 'primary track object for this @object.
|
||||||
*
|
*
|
||||||
* Implementors should override this function if they only need to create one
|
* Implementors should override this function if they only interested in
|
||||||
* track object per track. If the implementor wishes to create multiple track
|
* creating a single custom track object per track.
|
||||||
* objects, they should override create_track_objects instead.
|
|
||||||
*
|
*
|
||||||
* The implementer of this function shall return the proper #GESTrackObject
|
* The implementer of this function shall return the proper #GESTrackObject
|
||||||
* that should be controlled by @object for the given @track.
|
* that should be controlled by @object for the given @track.
|
||||||
|
@ -84,6 +83,18 @@ typedef gboolean (*FillTrackObjectFunc) (GESTimelineObject * object,
|
||||||
typedef GESTrackObject* (*CreateTrackObjectFunc) (GESTimelineObject * object,
|
typedef GESTrackObject* (*CreateTrackObjectFunc) (GESTimelineObject * object,
|
||||||
GESTrack * track);
|
GESTrack * track);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CreateTrackObjectFunc:
|
||||||
|
* @object: a #GESTimelineObject
|
||||||
|
* @track: a #GESTimelineTrack
|
||||||
|
*
|
||||||
|
* Create all track objects this object handles for this type of track.
|
||||||
|
*
|
||||||
|
* Returns: %TRUE on success %FALSE on failure.
|
||||||
|
*/
|
||||||
|
typedef gboolean (*CreateTrackObjectsFunc) (GESTimelineObject * object,
|
||||||
|
GESTrack *track);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GES_TIMELINE_OBJECT_START:
|
* GES_TIMELINE_OBJECT_START:
|
||||||
* @obj: a #GESTimelineObject
|
* @obj: a #GESTimelineObject
|
||||||
|
|
|
@ -265,7 +265,9 @@ add_object_to_tracks (GESTimeline * timeline, GESTimelineObject * object)
|
||||||
GESTrack *track = priv->track;
|
GESTrack *track = priv->track;
|
||||||
|
|
||||||
GST_LOG ("Trying with track %p", track);
|
GST_LOG ("Trying with track %p", track);
|
||||||
ges_timeline_object_create_track_objects (object, track);
|
if (!ges_timeline_object_create_track_objects (object, track)) {
|
||||||
|
GST_WARNING ("error creating track objects");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue