GESTimelineLayer

GESTimelineLayer — Non-overlapping sequence of GESClip

Synopsis

#include <ges/ges.h>

                    GESTimelineLayer;
                    GESTimelineLayerClass;
gboolean            ges_timeline_layer_add_clip         (GESTimelineLayer *layer,
                                                         GESClip *object);
GESClip *           ges_timeline_layer_add_asset        (GESTimelineLayer *layer,
                                                         GESAsset *asset,
                                                         GstClockTime start,
                                                         GstClockTime inpoint,
                                                         GstClockTime duration,
                                                         gdouble rate,
                                                         GESTrackType track_types);
GESTimelineLayer *  ges_timeline_layer_new              (void);
gboolean            ges_timeline_layer_remove_clip      (GESTimelineLayer *layer,
                                                         GESClip *object);
void                ges_timeline_layer_set_priority     (GESTimelineLayer *layer,
                                                         guint priority);
guint               ges_timeline_layer_get_priority     (GESTimelineLayer *layer);
GList *             ges_timeline_layer_get_clips        (GESTimelineLayer *layer);
GESTimeline *       ges_timeline_layer_get_timeline     (GESTimelineLayer *layer);
gboolean            ges_timeline_layer_get_auto_transition
                                                        (GESTimelineLayer *layer);
void                ges_timeline_layer_set_auto_transition
                                                        (GESTimelineLayer *layer,
                                                         gboolean auto_transition);
gboolean            ges_timeline_layer_is_empty         (GESTimelineLayer *layer);
#define             GES_TIMELINE_GET_LAYERS             (obj)
#define             GES_TIMELINE_GET_TRACKS             (obj)

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GESTimelineLayer
               +----GESSimpleTimelineLayer

Implemented Interfaces

GESTimelineLayer implements GESExtractable and GESMetaContainer.

Properties

  "auto-transition"          gboolean              : Read / Write
  "priority"                 guint                 : Read / Write

Signals

  "clip-added"                                     : Run First
  "clip-removed"                                   : Run First

Description

Responsible for the ordering of the various contained Clip(s). A timeline layer has a "priority" property, which is used to manage the priorities of individual Clips. Two layers should not have the same priority within a given timeline.

Details

GESTimelineLayer

typedef struct {
  GESTimeline *timeline;
} GESTimelineLayer;

GESTimeline *timeline;

the GESTimeline where this layer is being used.

GESTimelineLayerClass

typedef struct {
  /* virtual methods for subclasses */
  GList *(*get_objects) (GESTimelineLayer * layer);
} GESTimelineLayerClass;

Subclasses can override the get_objects if they can provide a more efficient way of providing the list of contained GESClip(s).

get_objects ()

method to get the objects contained in the layer

ges_timeline_layer_add_clip ()

gboolean            ges_timeline_layer_add_clip         (GESTimelineLayer *layer,
                                                         GESClip *object);

Adds the given clip to the layer. Sets the clip's parent, and thus takes ownership of the clip.

An clip can only be added to one layer.

Calling this method will construct and properly set all the media related elements on clip. If you need to know when those objects (actually GESTrackElement) are constructed, you should connect to the clip::track-element-added signal which is emited right after those elements are ready to be used.

layer :

a GESTimelineLayer

clip :

the GESClip to add. [transfer full]

Returns :

TRUE if the clip was properly added to the layer, or FALSE if the layer refuses to add the clip.

ges_timeline_layer_add_asset ()

GESClip *           ges_timeline_layer_add_asset        (GESTimelineLayer *layer,
                                                         GESAsset *asset,
                                                         GstClockTime start,
                                                         GstClockTime inpoint,
                                                         GstClockTime duration,
                                                         gdouble rate,
                                                         GESTrackType track_types);

Creates Clip from asset, adds it to layer and returns a reference to it.

layer :

a GESTimelineLayer

asset :

The asset to add to

start :

The start value to set on the new GESClip

inpoint :

The inpoint value to set on the new GESClip

duration :

The duration value to set on the new GESClip

rate :

The rate value to set on the new GESClip

track_types :

The GESTrackType to set on the the new GESClip

Returns :

Created GESClip. [transfer none]

ges_timeline_layer_new ()

GESTimelineLayer *  ges_timeline_layer_new              (void);

Creates a new GESTimelineLayer.

Returns :

A new GESTimelineLayer

ges_timeline_layer_remove_clip ()

gboolean            ges_timeline_layer_remove_clip      (GESTimelineLayer *layer,
                                                         GESClip *object);

Removes the given clip from the layer and unparents it. Unparenting it means the reference owned by layer on the clip will be removed. If you wish to use the clip after this function, make sure you call g_object_ref() before removing it from the layer.

layer :

a GESTimelineLayer

clip :

the GESClip to remove

Returns :

TRUE if the clip could be removed, FALSE if the layer does not want to remove the clip.

ges_timeline_layer_set_priority ()

void                ges_timeline_layer_set_priority     (GESTimelineLayer *layer,
                                                         guint priority);

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

layer :

a GESTimelineLayer

priority :

the priority to set

ges_timeline_layer_get_priority ()

guint               ges_timeline_layer_get_priority     (GESTimelineLayer *layer);

Get the priority of layer within the timeline.

layer :

a GESTimelineLayer

Returns :

The priority of the layer within the timeline.

ges_timeline_layer_get_clips ()

GList *             ges_timeline_layer_get_clips        (GESTimelineLayer *layer);

Get the clips this layer contains.

layer :

a GESTimelineLayer

Returns :

a GList of clips. The user is responsible for unreffing the contained objects and freeing the list. [transfer full][element-type GESClip]

ges_timeline_layer_get_timeline ()

GESTimeline *       ges_timeline_layer_get_timeline     (GESTimelineLayer *layer);

Get the GESTimeline in which GESTimelineLayer currently is.

layer :

The GESTimelineLayer to get the parent GESTimeline from

Returns :

the GESTimeline in which GESTimelineLayer currently is or NULL if not in any timeline yet. [transfer none]

ges_timeline_layer_get_auto_transition ()

gboolean            ges_timeline_layer_get_auto_transition
                                                        (GESTimelineLayer *layer);

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

layer :

a GESTimelineLayer

Returns :

TRUE if transitions are automatically added, else FALSE.

ges_timeline_layer_set_auto_transition ()

void                ges_timeline_layer_set_auto_transition
                                                        (GESTimelineLayer *layer,
                                                         gboolean auto_transition);

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

layer :

a GESTimelineLayer

auto_transition :

whether the auto_transition is active

ges_timeline_layer_is_empty ()

gboolean            ges_timeline_layer_is_empty         (GESTimelineLayer *layer);

Convenience method to check if layer is empty (doesn't contain any clip), or not.

layer :

The GESTimelineLayer to check

Returns :

TRUE if layer is empty, FALSE if it already contains at least one GESClip

GES_TIMELINE_GET_LAYERS()

#define GES_TIMELINE_GET_LAYERS(obj) (GES_TIMELINE (obj)->layers)

GES_TIMELINE_GET_TRACKS()

#define GES_TIMELINE_GET_TRACKS(obj) (GES_TIMELINE (obj)->tracks)

Property Details

The "auto-transition" property

  "auto-transition"          gboolean              : Read / Write

Sets whether transitions are added automagically when clips overlap.

Default value: FALSE


The "priority" property

  "priority"                 guint                 : Read / Write

The priority of the layer in the GESTimeline. 0 is the highest priority. Conceptually, a GESTimeline is a stack of GESTimelineLayers, and the priority of the layer represents its position in the stack. Two layers should not have the same priority within a given GESTimeline.

Default value: 0

Signal Details

The "clip-added" signal

void                user_function                      (GESTimelineLayer *layer,
                                                        GESClip          *clip,
                                                        gpointer          user_data)      : Run First

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

layer :

the GESTimelineLayer

clip :

the GESClip that was added.

user_data :

user data set when the signal handler was connected.

The "clip-removed" signal

void                user_function                      (GESTimelineLayer *layer,
                                                        GESClip          *clip,
                                                        gpointer          user_data)      : Run First

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

layer :

the GESTimelineLayer

clip :

the GESClip that was removed

user_data :

user data set when the signal handler was connected.