diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index c77f20320c..ac76d26ae8 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -78,6 +78,11 @@ ges_track_object_get_track ges_track_object_get_timeline_object ges_track_object_get_gnlobject ges_track_object_get_element +ges_track_object_get_start +ges_track_object_get_inpoint +ges_track_object_get_duration +ges_track_object_get_priority +ges_track_object_is_active GES_TRACK_OBJECT_DURATION GES_TRACK_OBJECT_INPOINT diff --git a/ges/ges-track-object.c b/ges/ges-track-object.c index 99c0a4b3f0..2e1106ed6a 100644 --- a/ges/ges-track-object.c +++ b/ges/ges-track-object.c @@ -107,19 +107,19 @@ ges_track_object_get_property (GObject * object, guint property_id, switch (property_id) { case PROP_START: - g_value_set_uint64 (value, tobj->start); + g_value_set_uint64 (value, ges_track_object_get_start (tobj)); break; case PROP_INPOINT: - g_value_set_uint64 (value, tobj->inpoint); + g_value_set_uint64 (value, ges_track_object_get_inpoint (tobj)); break; case PROP_DURATION: - g_value_set_uint64 (value, tobj->duration); + g_value_set_uint64 (value, ges_track_object_get_duration (tobj)); break; case PROP_PRIORITY: - g_value_set_uint (value, tobj->priority); + g_value_set_uint (value, ges_track_object_get_priority (tobj)); break; case PROP_ACTIVE: - g_value_set_boolean (value, tobj->active); + g_value_set_boolean (value, ges_track_object_is_active (tobj)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -811,3 +811,90 @@ ges_track_object_is_locked (GESTrackObject * object) { return object->priv->locked; } + +/** + * ges_track_object_get_start: + * @object: a #GESTrackObject + * + * Get the position of the object in the container #GESTrack. + * + * Returns: the start position (in #GstClockTime) + */ +guint64 +ges_track_object_get_start (GESTrackObject * object) +{ + if (G_UNLIKELY (object->priv->gnlobject == NULL)) + return object->priv->pending_start; + else + return object->start; +} + +/** + * ges_track_object_get_inpoint: + * @object: a #GESTrackObject + * + * Get the offset within the contents of this #GESTrackObject + * + * Returns: the in-point (in #GstClockTime) + */ +guint64 +ges_track_object_get_inpoint (GESTrackObject * object) +{ + if (G_UNLIKELY (object->priv->gnlobject == NULL)) + return object->priv->pending_inpoint; + else + return object->inpoint; +} + +/** + * ges_track_object_get_duration: + * @object: a #GESTrackObject + * + * Get the duration which will be used in the container #GESTrack + * starting from the 'in-point' + * + * Returns: the duration (in #GstClockTime) + */ +guint64 +ges_track_object_get_duration (GESTrackObject * object) +{ + if (G_UNLIKELY (object->priv->gnlobject == NULL)) + return object->priv->pending_duration; + else + return object->duration; +} + +/** + * ges_track_object_get_priority: + * @object: a #GESTrackObject + * + * Get the priority of the object withing the containing #GESTrack. + * + * Returns: the priority of @object + */ +guint32 +ges_track_object_get_priority (GESTrackObject * object) +{ + if (G_UNLIKELY (object->priv->gnlobject == NULL)) + return object->priv->pending_priority; + else + return object->priority; +} + +/** + * ges_track_object_is_active: + * @object: a #GESTrackObject + * + * Lets you know if @object will be used for playback and rendering, + * or not. + * + * Returns: %TRUE if @object is active, %FALSE otherwize + */ +gboolean +ges_track_object_is_active (GESTrackObject * object) +{ + if (G_UNLIKELY (object->priv->gnlobject == NULL)) + return object->priv->pending_active; + else + return object->active; +} diff --git a/ges/ges-track-object.h b/ges/ges-track-object.h index 7371df34ad..926ac7dbf0 100644 --- a/ges/ges-track-object.h +++ b/ges/ges-track-object.h @@ -152,6 +152,12 @@ void ges_track_object_set_inpoint (GESTrackObject * object, guint64 inpoint); void ges_track_object_set_duration (GESTrackObject * object, guint64 duration); void ges_track_object_set_priority (GESTrackObject * object, guint32 priority); +guint64 ges_track_object_get_start (GESTrackObject * object); +guint64 ges_track_object_get_inpoint (GESTrackObject * object); +guint64 ges_track_object_get_duration (GESTrackObject * object); +guint32 ges_track_object_get_priority (GESTrackObject * object); +gboolean ges_track_object_is_active (GESTrackObject * object); + gboolean ges_track_object_set_active (GESTrackObject * object, gboolean active); G_END_DECLS