GESLayer

GESLayer — Non-overlapping sequence of GESClip

Synopsis

#include <ges/ges.h>

                    GESLayer;
                    GESLayerClass;
gboolean            ges_layer_add_clip                  (GESLayer *layer,
                                                         GESClip *clip);
GESClip *           ges_layer_add_asset                 (GESLayer *layer,
                                                         GESAsset *asset,
                                                         GstClockTime start,
                                                         GstClockTime inpoint,
                                                         GstClockTime duration,
                                                         GESTrackType track_types);
GESLayer *          ges_layer_new                       (void);
gboolean            ges_layer_remove_clip               (GESLayer *layer,
                                                         GESClip *clip);
void                ges_layer_set_priority              (GESLayer *layer,
                                                         guint priority);
guint               ges_layer_get_priority              (GESLayer *layer);
GList *             ges_layer_get_clips                 (GESLayer *layer);
GESTimeline *       ges_layer_get_timeline              (GESLayer *layer);
gboolean            ges_layer_get_auto_transition       (GESLayer *layer);
void                ges_layer_set_auto_transition       (GESLayer *layer,
                                                         gboolean auto_transition);
gboolean            ges_layer_is_empty                  (GESLayer *layer);
GstClockTime        ges_layer_get_duration              (GESLayer *layer);
#define             GES_TIMELINE_GET_LAYERS             (obj)
#define             GES_TIMELINE_GET_TRACKS             (obj)

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GESLayer

Implemented Interfaces

GESLayer 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

GESLayer

typedef struct {
  GESTimeline *timeline;
} GESLayer;

GESTimeline *timeline;

the GESTimeline where this layer is being used.

GESLayerClass

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

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_layer_add_clip ()

gboolean            ges_layer_add_clip                  (GESLayer *layer,
                                                         GESClip *clip);

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 container::child-added signal which is emited right after those elements are ready to be used.

layer :

a GESLayer

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_layer_add_asset ()

GESClip *           ges_layer_add_asset                 (GESLayer *layer,
                                                         GESAsset *asset,
                                                         GstClockTime start,
                                                         GstClockTime inpoint,
                                                         GstClockTime duration,
                                                         GESTrackType track_types);

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

layer :

a GESLayer

asset :

The asset to add to

start :

The start value to set on the new GESClip, if start == GST_CLOCK_TIME_NONE, it will be set to the current duration of layer

inpoint :

The inpoint value to set on the new GESClip

duration :

The duration value to set on the new GESClip

track_types :

The GESTrackType to set on the the new GESClip

Returns :

Created GESClip. [transfer none]

ges_layer_new ()

GESLayer *          ges_layer_new                       (void);

Creates a new GESLayer.

Returns :

A new GESLayer

ges_layer_remove_clip ()

gboolean            ges_layer_remove_clip               (GESLayer *layer,
                                                         GESClip *clip);

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 gst_object_ref() before removing it from the layer.

layer :

a GESLayer

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_layer_set_priority ()

void                ges_layer_set_priority              (GESLayer *layer,
                                                         guint priority);

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

layer :

a GESLayer

priority :

the priority to set

ges_layer_get_priority ()

guint               ges_layer_get_priority              (GESLayer *layer);

Get the priority of layer within the timeline.

layer :

a GESLayer

Returns :

The priority of the layer within the timeline.

ges_layer_get_clips ()

GList *             ges_layer_get_clips                 (GESLayer *layer);

Get the clips this layer contains.

layer :

a GESLayer

Returns :

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

ges_layer_get_timeline ()

GESTimeline *       ges_layer_get_timeline              (GESLayer *layer);

Get the GESTimeline in which GESLayer currently is.

layer :

The GESLayer to get the parent GESTimeline from

Returns :

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

ges_layer_get_auto_transition ()

gboolean            ges_layer_get_auto_transition       (GESLayer *layer);

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

layer :

a GESLayer

Returns :

TRUE if transitions are automatically added, else FALSE.

ges_layer_set_auto_transition ()

void                ges_layer_set_auto_transition       (GESLayer *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 GESLayer

auto_transition :

whether the auto_transition is active

ges_layer_is_empty ()

gboolean            ges_layer_is_empty                  (GESLayer *layer);

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

layer :

The GESLayer to check

Returns :

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

ges_layer_get_duration ()

GstClockTime        ges_layer_get_duration              (GESLayer *layer);

Lets you retrieve the duration of the layer, which means the end time of the last clip inside it

layer :

The GESLayer to get the duration from

Returns :

The duration of a layer

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 GESLayers, 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                      (GESLayer *layer,
                                                        GESClip  *clip,
                                                        gpointer  user_data)      : Run First

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

layer :

the GESLayer

clip :

the GESClip that was added.

user_data :

user data set when the signal handler was connected.

The "clip-removed" signal

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

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

layer :

the GESLayer

clip :

the GESClip that was removed

user_data :

user data set when the signal handler was connected.