## GESTrackObject

GESTrackObject — Base Class for objects contained in a GESTrack

## Synopsis

    #include <ges/ges.h>

                        GESTrackObject;
                        GESTrackObjectClass;
    void                ges_track_object_set_duration       (GESTrackObject *object,
                                                             guint64 duration);
    void                ges_track_object_set_inpoint        (GESTrackObject *object,
                                                             guint64 inpoint);
    void                ges_track_object_set_priority       (GESTrackObject *object,
                                                             guint32 priority);
    void                ges_track_object_set_start          (GESTrackObject *object,
                                                             guint64 start);
    gboolean            ges_track_object_set_active         (GESTrackObject *object,
                                                             gboolean active);
    void                ges_track_object_set_locked         (GESTrackObject *object,
                                                             gboolean locked);
    gboolean            ges_track_object_is_locked          (GESTrackObject *object);
    GESTrack *          ges_track_object_get_track          (GESTrackObject *object);
    GESTimelineObject *  ges_track_object_get_timeline_object
                                                            (GESTrackObject *object);
    GstElement *        ges_track_object_get_gnlobject      (GESTrackObject *object);
    GstElement *        ges_track_object_get_element        (GESTrackObject *object);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GESTrackObject
                   +----GESTrackSource
                   +----GESTrackOperation

## Properties

      "active"                   gboolean              : Read / Write
      "duration"                 guint64               : Read / Write
      "in-point"                 guint64               : Read / Write
      "priority"                 guint                 : Read / Write
      "start"                    guint64               : Read / Write

## Description

GESTrackObject is the Base Class for any object that can be contained in a GESTrack.

It contains the basic information as to the location of the object within its container, like the start position, the in-point, the duration and the priority.

## Details

### GESTrackObject

    typedef struct _GESTrackObject GESTrackObject;

The GESTrackObject base class.

### GESTrackObjectClass

    typedef struct {
      /* virtual methods for subclasses */
      const gchar *gnlobject_factorytype;
      GstElement* (*create_gnl_object) (GESTrackObject * object);
      GstElement* (*create_element) (GESTrackObject * object);

      void (*start_changed) (GESTrackObject *object, guint64 start);
      void (*media_start_changed) (GESTrackObject *object, guint64 media_start);
      void (*gnl_priority_changed) (GESTrackObject *object, guint priority);
      void (*duration_changed) (GESTrackObject *object, guint64 duration);
      void (*active_changed) (GESTrackObject *object, gboolean active);
    } GESTrackObjectClass;

Subclasses can override the `create_gnl_object` method to override what type of GNonLin object will be created.

const gchar *`gnlobject_factorytype`; | name of the GNonLin GStElementFactory type to use.
`create_gnl_object` () | method to create the GNonLin container object. The default implementation will create an object of type `gnlobject_factorytype` and call `create_element`.
`create_element` () | method to return the GstElement to put in the gnlobject.
`start_changed` () | start property of gnlobject has changed
`media_start_changed` () | media-start property of gnlobject has changed
`gnl_priority_changed` () | duration property glnobject has changed
`duration_changed` () | duration property glnobject has changed
`active_changed` () | active property of gnlobject has changed

### ges_track_object_set_duration ()

    void                ges_track_object_set_duration       (GESTrackObject *object,
                                                             guint64 duration);

Set the duration which will be used in the container GESTrack starting from the 'in-point'

`object` : | a GESTrackObject
`duration` : | the duration (in GstClockTime)

### ges_track_object_set_inpoint ()

    void                ges_track_object_set_inpoint        (GESTrackObject *object,
                                                             guint64 inpoint);

Set the offset within the contents of this GESTrackObject

`object` : | a GESTrackObject
`inpoint` : | the in-point (in GstClockTime)

### ges_track_object_set_priority ()

    void                ges_track_object_set_priority       (GESTrackObject *object,
                                                             guint32 priority);

Sets the priority of the object withing the containing GESTrack. If two objects intersect over the same region of time, the priority property is used to decide which one takes precedence.

The highest priority (that supercedes everything) is 0, and then lowering priorities go in increasing numerical value (with G_MAXUINT32 being the lowest priority).

`object` : | a GESTrackObject
`priority` : | the priority

### ges_track_object_set_start ()

    void                ges_track_object_set_start          (GESTrackObject *object,
                                                             guint64 start);

Sets the position of the object in the container GESTrack.

`object` : | a GESTrackObject
`start` : | the start position (in GstClockTime)

### ges_track_object_set_active ()

    gboolean            ges_track_object_set_active         (GESTrackObject *object,
                                                             gboolean active);

Sets the usage of the `object`. If `active` is `TRUE`, the object will be used for playback and rendering, else it will be ignored.

`object` : | a GESTrackObject
`active` : | visibility
Returns : | `TRUE` if the property was toggled, else `FALSE`

### ges_track_object_set_locked ()

    void                ges_track_object_set_locked         (GESTrackObject *object,
                                                             gboolean locked);

Set the locking status of the `object` in relationship to its controlling GESTimelineObject. If `locked` is `TRUE`, then this object will move synchronously with its controlling GESTimelineObject.

`object` : | a GESTrackObject
`locked` : | whether the object is lock to its parent

### ges_track_object_is_locked ()

    gboolean            ges_track_object_is_locked          (GESTrackObject *object);

Let you know if object us locked or not (moving synchronously).

`object` : | a GESTrackObject
Returns : | `TRUE` if the object is moving synchronously to its controlling GESTimelineObject, else `FALSE`.

### ges_track_object_get_track ()

    GESTrack *          ges_track_object_get_track          (GESTrackObject *object);

Get the GESTrack to which this object belongs.

`object` : | a GESTrackObject
Returns : | The GESTrack to which this object belongs. Can be `NULL` if it is not in any track. [transfer none]

### ges_track_object_get_timeline_object ()

    GESTimelineObject *  ges_track_object_get_timeline_object
                                                            (GESTrackObject *object);

Get the GESTimelineObject which is controlling this track object

`object` : | a GESTrackObject
Returns : | the GESTimelineObject which is controlling this track object. [transfer none]

### ges_track_object_get_gnlobject ()

    GstElement *        ges_track_object_get_gnlobject      (GESTrackObject *object);

Get the GNonLin object this object is controlling.

`object` : | a GESTrackObject
Returns : | the GNonLin object this object is controlling. [transfer none]

### ges_track_object_get_element ()

    GstElement *        ges_track_object_get_element        (GESTrackObject *object);

Get the GstElement this track object is controlling within GNonLin.

`object` : | a GESTrackObject
Returns : | the GstElement this track object is controlling within GNonLin. [transfer none]

## Property Details

### The `"active"` property

      "active"                   gboolean              : Read / Write

Whether the object should be taken into account in the GESTrack output. If FALSE, then its contents will not be used in the resulting track.

Default value: TRUE

### The `"duration"` property

      "duration"                 guint64               : Read / Write

The duration (in nanoseconds) which will be used in the container GESTrack starting from 'in-point'.

Default value: 1000000000

### The `"in-point"` property

      "in-point"                 guint64               : Read / Write

The in-point at which this GESTrackObject will start outputting data from its contents (in nanoseconds).

Ex : an in-point of 5 seconds means that the first outputted buffer will be the one located 5 seconds in the controlled resource.

Default value: 0

### The `"priority"` property

      "priority"                 guint                 : Read / Write

The priority of the object within the containing GESTrack. If two objects intersect over the same region of time, the `priority` property is used to decide which one takes precedence.

The highest priority (that supercedes everything) is 0, and then lowering priorities go in increasing numerical value (with G_MAXUINT64 being the lowest priority).

Default value: 0

### The `"start"` property

      "start"                    guint64               : Read / Write

The position of the object in the container GESTrack (in nanoseconds).

Default value: 0