GESTimeline

GESTimeline — Multimedia timeline

Synopsis

#include <ges/ges.h>

                    GESTimeline;
GESTimeline *       ges_timeline_new                    (void);
GESTimeline *       ges_timeline_new_audio_video        (void);
GESTimeline *       ges_timeline_new_from_uri           (const gchar *uri,
                                                         GError **error);
gboolean            ges_timeline_add_layer              (GESTimeline *timeline,
                                                         GESLayer *layer);
GESLayer *          ges_timeline_append_layer           (GESTimeline *timeline);
gboolean            ges_timeline_remove_layer           (GESTimeline *timeline,
                                                         GESLayer *layer);
gboolean            ges_timeline_add_track              (GESTimeline *timeline,
                                                         GESTrack *track);
gboolean            ges_timeline_remove_track           (GESTimeline *timeline,
                                                         GESTrack *track);
gboolean            ges_timeline_load_from_uri          (GESTimeline *timeline,
                                                         const gchar *uri,
                                                         GError **error);
gboolean            ges_timeline_save_to_uri            (GESTimeline *timeline,
                                                         const gchar *uri,
                                                         GESAsset *formatter_asset,
                                                         gboolean overwrite,
                                                         GError **error);

GList *             ges_timeline_get_tracks             (GESTimeline *timeline);
GList *             ges_timeline_get_layers             (GESTimeline *timeline);
GESTrack *          ges_timeline_get_track_for_pad      (GESTimeline *timeline,
                                                         GstPad *pad);
GstClockTime        ges_timeline_get_duration           (GESTimeline *timeline);
#define             ges_timeline_get_project            (obj)
gboolean            ges_timeline_get_auto_transition    (GESTimeline *timeline);
void                ges_timeline_set_auto_transition    (GESTimeline *timeline,
                                                         gboolean auto_transition);
GstClockTime        ges_timeline_get_snapping_distance  (GESTimeline *timeline);
void                ges_timeline_set_snapping_distance  (GESTimeline *timeline,
                                                         GstClockTime snapping_distance);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GstObject
               +----GstElement
                     +----GstBin
                           +----GESTimeline

Implemented Interfaces

GESTimeline implements GstChildProxy, GESExtractable and GESMetaContainer.

Properties

  "auto-transition"          gboolean              : Read / Write
  "duration"                 guint64               : Read
  "snapping-distance"        guint64               : Read / Write

Signals

  "commited"                                       : Run Last
  "layer-added"                                    : Run First
  "layer-removed"                                  : Run First
  "select-tracks-for-object"                       : Run Last
  "snapping-ended"                                 : Run Last
  "snapping-started"                               : Run Last
  "track-added"                                    : Run First
  "track-removed"                                  : Run First

Description

GESTimeline is the central object for any multimedia timeline.

Contains a list of GESLayer which users should use to arrange the various clips through time.

The output type is determined by the GESTrack that are set on the GESTimeline.

To save/load a timeline, you can use the ges_timeline_load_from_uri() and ges_timeline_save_to_uri() methods to use the default format. If you wish

Note that any change you make in the timeline will not actually be taken into account until you call the ges_timeline_commit method.

Details

GESTimeline

typedef struct {
  /* <readonly> */
  GList *layers;
  GList *tracks;
} GESTimeline;

GList *layers;

A list of GESLayer sorted by priority NOTE: Do not modify. [element-type GES.Layer]

GList *tracks;

A list of GESTrack sorted by priority NOTE: Do not modify. [element-type GES.Track]

ges_timeline_new ()

GESTimeline *       ges_timeline_new                    (void);

Creates a new empty GESTimeline.

Returns :

The new timeline.

ges_timeline_new_audio_video ()

GESTimeline *       ges_timeline_new_audio_video        (void);

Creates a new GESTimeline containing a raw audio and a raw video track.

Returns :

The newly created GESTimeline.

ges_timeline_new_from_uri ()

GESTimeline *       ges_timeline_new_from_uri           (const gchar *uri,
                                                         GError **error);

Creates a timeline from the given URI.

uri :

the URI to load from

error :

An error to be set in case something wrong happens or NULL. [out][allow-none]

Returns :

A new timeline if the uri was loaded successfully, or NULL if the uri could not be loaded

ges_timeline_add_layer ()

gboolean            ges_timeline_add_layer              (GESTimeline *timeline,
                                                         GESLayer *layer);

Add the layer to the timeline. The reference to the layer will be stolen by the timeline.

timeline :

a GESTimeline

layer :

the GESLayer to add

Returns :

TRUE if the layer was properly added, else FALSE.

ges_timeline_append_layer ()

GESLayer *          ges_timeline_append_layer           (GESTimeline *timeline);

Append a newly created GESLayer to timeline Note that you do not own any reference to the returned layer.

timeline :

a GESTimeline

Returns :

The newly created GESLayer, or the last (empty) GESLayer of timeline. [transfer none]

ges_timeline_remove_layer ()

gboolean            ges_timeline_remove_layer           (GESTimeline *timeline,
                                                         GESLayer *layer);

Removes the layer from the timeline. The reference that the timeline holds on the layer will be dropped. If you wish to use the layer after calling this method, you need to take a reference before calling.

timeline :

a GESTimeline

layer :

the GESLayer to remove

Returns :

TRUE if the layer was properly removed, else FALSE.

ges_timeline_add_track ()

gboolean            ges_timeline_add_track              (GESTimeline *timeline,
                                                         GESTrack *track);

Add a track to the timeline. The reference to the track will be stolen by the pipeline.

timeline :

a GESTimeline

track :

the GESTrack to add

Returns :

TRUE if the track was properly added, else FALSE.

ges_timeline_remove_track ()

gboolean            ges_timeline_remove_track           (GESTimeline *timeline,
                                                         GESTrack *track);

Remove the track from the timeline. The reference stolen when adding the track will be removed. If you wish to use the track after calling this function you must ensure that you have a reference to it.

timeline :

a GESTimeline

track :

the GESTrack to remove

Returns :

TRUE if the track was properly removed, else FALSE.

ges_timeline_load_from_uri ()

gboolean            ges_timeline_load_from_uri          (GESTimeline *timeline,
                                                         const gchar *uri,
                                                         GError **error);

Loads the contents of URI into the given timeline.

timeline :

an empty GESTimeline into which to load the formatter

uri :

The URI to load from

error :

An error to be set in case something wrong happens or NULL. [out][allow-none]

Returns :

TRUE if the timeline was loaded successfully, or FALSE if the uri could not be loaded.

ges_timeline_save_to_uri ()

gboolean            ges_timeline_save_to_uri            (GESTimeline *timeline,
                                                         const gchar *uri,
                                                         GESAsset *formatter_asset,
                                                         gboolean overwrite,
                                                         GError **error);

Saves the timeline to the given location

timeline :

a GESTimeline

uri :

The location to save to

formatter_asset :

The formatter asset to use or NULL. If NULL, will try to save in the same format as the one from which the timeline as been loaded or default to the formatter with highest rank. [allow-none]

overwrite :

TRUE to overwrite file if it exists

error :

An error to be set in case something wrong happens or NULL. [out][allow-none]

Returns :

TRUE if the timeline was successfully saved to the given location, else FALSE.

ges_timeline_get_tracks ()

GList *             ges_timeline_get_tracks             (GESTimeline *timeline);

Returns the list of GESTrack used by the Timeline.

timeline :

a GESTimeline

Returns :

A list of GESTrack. The caller should unref each track once he is done with them. [transfer full][element-type GESTrack]

ges_timeline_get_layers ()

GList *             ges_timeline_get_layers             (GESTimeline *timeline);

Get the list of GESLayer present in the Timeline.

timeline :

a GESTimeline

Returns :

the list of GESLayer present in the Timeline sorted by priority. The caller should unref each Layer once he is done with them. [transfer full][element-type GESLayer]

ges_timeline_get_track_for_pad ()

GESTrack *          ges_timeline_get_track_for_pad      (GESTimeline *timeline,
                                                         GstPad *pad);

Search the GESTrack corresponding to the given timeline's pad.

timeline :

The GESTimeline

pad :

The GstPad

Returns :

The corresponding GESTrack if it is found, or NULL if there is an error. [transfer none]

ges_timeline_get_duration ()

GstClockTime        ges_timeline_get_duration           (GESTimeline *timeline);

Get the current duration of timeline

timeline :

a GESTimeline

Returns :

The current duration of timeline

ges_timeline_get_project()

#define ges_timeline_get_project(obj) (GES_TIMELINE (ges_extractable_get_asset (obj))

Helper macro to retrieve the project from which a GESTimeline as been extracted

obj :

The GESClip from which to retrieve the project

ges_timeline_get_auto_transition ()

gboolean            ges_timeline_get_auto_transition    (GESTimeline *timeline);

Gets whether transitions are automatically added when objects overlap or not.

timeline :

a GESTimeline

Returns :

TRUE if transitions are automatically added, else FALSE.

ges_timeline_set_auto_transition ()

void                ges_timeline_set_auto_transition    (GESTimeline *timeline,
                                                         gboolean auto_transition);

Sets the layer to the given auto_transition. See the documentation of the property auto_transition for more information.

timeline :

a GESLayer

auto_transition :

whether the auto_transition is active

ges_timeline_get_snapping_distance ()

GstClockTime        ges_timeline_get_snapping_distance  (GESTimeline *timeline);

Gets the configured snapping distance of the timeline. See the documentation of the property snapping_distance for more information.

timeline :

a GESTimeline

Returns :

The snapping_distance property of the timeline

ges_timeline_set_snapping_distance ()

void                ges_timeline_set_snapping_distance  (GESTimeline *timeline,
                                                         GstClockTime snapping_distance);

Sets the snapping_distance of the timeline. See the documentation of the property snapping_distance for more information.

timeline :

a GESLayer

snapping_distance :

whether the snapping_distance is active

Property Details

The "auto-transition" property

  "auto-transition"          gboolean              : Read / Write

Sets whether transitions are added automagically when clips overlap.

Default value: FALSE


The "duration" property

  "duration"                 guint64               : Read

Current duration (in nanoseconds) of the GESTimeline

Default value: 18446744073709551615


The "snapping-distance" property

  "snapping-distance"        guint64               : Read / Write

Distance (in nanoseconds) from which a moving object will snap with it neighboors. 0 means no snapping.

Default value: 0

Signal Details

The "commited" signal

void                user_function                      (GESTimeline *timeline,
                                                        gpointer     user_data)      : Run Last

timeline :

the GESTimeline

user_data :

user data set when the signal handler was connected.

The "layer-added" signal

void                user_function                      (GESTimeline *timeline,
                                                        GESLayer    *layer,
                                                        gpointer     user_data)      : Run First

Will be emitted after the layer was added to the timeline.

timeline :

the GESTimeline

layer :

the GESLayer that was added to the timeline

user_data :

user data set when the signal handler was connected.

The "layer-removed" signal

void                user_function                      (GESTimeline *timeline,
                                                        GESLayer    *layer,
                                                        gpointer     user_data)      : Run First

Will be emitted after the layer was removed from the timeline.

timeline :

the GESTimeline

layer :

the GESLayer that was removed from the timeline

user_data :

user data set when the signal handler was connected.

The "select-tracks-for-object" signal

GPtrArray*          user_function                      (GESTimeline     *timeline,
                                                        GESClip         *clip,
                                                        GESTrackElement *track-element,
                                                        gpointer         user_data)          : Run Last

timeline :

the GESTimeline

clip :

The GESClip on which track-element will land

track-element :

The GESTrackElement for which to choose the tracks it should land into

user_data :

user data set when the signal handler was connected.

Returns :

a GPtrArray of GESTrack-s where that object should be added. [transfer full][element-type GESTrack]

The "snapping-ended" signal

void                user_function                      (GESTimeline     *gestimeline,
                                                        GESTrackElement *arg1,
                                                        GESTrackElement *arg2,
                                                        guint64          arg3,
                                                        gpointer         user_data)        : Run Last

The "snapping-started" signal

void                user_function                      (GESTimeline     *gestimeline,
                                                        GESTrackElement *arg1,
                                                        GESTrackElement *arg2,
                                                        guint64          arg3,
                                                        gpointer         user_data)        : Run Last

The "track-added" signal

void                user_function                      (GESTimeline *timeline,
                                                        GESTrack    *track,
                                                        gpointer     user_data)      : Run First

Will be emitted after the track was added to the timeline.

timeline :

the GESTimeline

track :

the GESTrack that was added to the timeline

user_data :

user data set when the signal handler was connected.

The "track-removed" signal

void                user_function                      (GESTimeline *timeline,
                                                        GESTrack    *track,
                                                        gpointer     user_data)      : Run First

Will be emitted after the track was removed from the timeline.

timeline :

the GESTimeline

track :

the GESTrack that was removed from the timeline

user_data :

user data set when the signal handler was connected.