diff --git a/Cargo.toml b/Cargo.toml
index 319d09819..f5f5df086 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,4 +16,5 @@ members = [
"gstreamer-rtsp-server-sys",
"gstreamer-webrtc-sys",
"gstreamer-gl-sys",
+ "gstreamer-editing-services-sys",
]
diff --git a/Gir_GstEditingServices.toml b/Gir_GstEditingServices.toml
new file mode 100644
index 000000000..b661ec5e1
--- /dev/null
+++ b/Gir_GstEditingServices.toml
@@ -0,0 +1,19 @@
+[options]
+girs_dir = "gir-files"
+library = "GES"
+version = "1.0"
+min_cfg_version = "1.0"
+target_path = "gstreamer-editing-services-sys"
+work_mode = "sys"
+
+external_libraries = [
+ "GLib",
+ "GObject",
+ "Gio",
+]
+
+[external_libraries]
+gstreamer="Gst"
+gstreamer_base="GstBase"
+gstreamer_pbutils="GstPbutils"
+
diff --git a/gir-files/GES-1.0.gir b/gir-files/GES-1.0.gir
new file mode 100644
index 000000000..82e566537
--- /dev/null
+++ b/gir-files/GES-1.0.gir
@@ -0,0 +1,13157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ The Assets in the GStreamer Editing Services represent the resources
+that can be used. You can create assets for any type that implements the #GESExtractable
+interface, for example #GESClips, #GESFormatter, and #GESTrackElement do implement it.
+This means that assets will represent for example a #GESUriClips, #GESBaseEffect etc,
+and then you can extract objects of those types with the appropriate parameters from the asset
+using the #ges_asset_extract method:
+
+|[
+GESAsset *effect_asset;
+GESEffect *effect;
+
+// You create an asset for an effect
+effect_asset = ges_asset_request (GES_TYPE_EFFECT, "agingtv", NULL);
+
+// And now you can extract an instance of GESEffect from that asset
+effect = GES_EFFECT (ges_asset_extract (effect_asset));
+
+]|
+
+In that example, the advantages of having a #GESAsset are that you can know what effects
+you are working with and let your user know about the avalaible ones, you can add metadata
+to the #GESAsset through the #GESMetaContainer interface and you have a model for your
+custom effects. Note that #GESAsset management is making easier thanks to the #GESProject class.
+
+Each asset is represented by a pair of @extractable_type and @id (string). Actually the @extractable_type
+is the type that implements the #GESExtractable interface, that means that for example for a #GESUriClip,
+the type that implements the #GESExtractable interface is #GESClip.
+The identifier represents different things depending on the @extractable_type and you should check
+the documentation of each type to know what the ID of #GESAsset actually represents for that type. By default,
+we only have one #GESAsset per type, and the @id is the name of the type, but this behaviour is overriden
+to be more useful. For example, for GESTransitionClips, the ID is the vtype of the transition
+you will extract from it (ie crossfade, box-wipe-rc etc..) For #GESEffect the ID is the
+@bin-description property of the extracted objects (ie the gst-launch style description of the bin that
+will be used).
+
+Each and every #GESAsset is cached into GES, and you can query those with the #ges_list_assets function.
+Also the system will automatically register #GESAssets for #GESFormatters and #GESTransitionClips
+and standard effects (actually not implemented yet) and you can simply query those calling:
+|[
+ GList *formatter_assets, *tmp;
+
+ // List all the transitions
+ formatter_assets = ges_list_assets (GES_TYPE_FORMATTER);
+
+ // Print some infos about the formatter GESAsset
+ for (tmp = formatter_assets; tmp; tmp = tmp->next) {
+ g_print ("Name of the formatter: %s, file extension it produces: %s",
+ ges_meta_container_get_string (GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_NAME),
+ ges_meta_container_get_string (GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_EXTENSION));
+ }
+
+ g_list_free (transition_assets);
+
+]|
+
+You can request the creation of #GESAssets using either ges_asset_request() or
+ges_asset_request_async(). All the #GESAssets are cached and thus any asset that has already
+been created can be requested again without overhead.
+
+
+
+
+ Sets an asset from the internal cache as needing reload. An asset needs reload
+in the case where, for example, we were missing a GstPlugin to use it and that
+plugin has been installed, or, that particular asset content as changed
+meanwhile (in the case of the usage of proxies).
+
+Once an asset has been set as "needs reload", requesting that asset again
+will lead to it being re discovered, and reloaded as if it was not in the
+cache before.
+
+ %TRUE if the asset was in the cache and could be set as needing reload,
+%FALSE otherwise.
+
+
+
+
+ The #GType of the object that can be extracted from the
+ asset to be reloaded.
+
+
+
+ The identifier of the asset to mark as needing reload
+
+
+
+
+
+ Create a #GESAsset in the most simple cases, you should look at the @extractable_type
+documentation to see if that constructor can be called for this particular type
+
+As it is recommanded not to instanciate assets for GESUriClip synchronously,
+it will not work with this method, but you can instead use the specific
+#ges_uri_clip_asset_request_sync method if you really want to.
+
+ A reference to the wanted #GESAsset or %NULL
+
+
+
+
+ The #GType of the object that can be extracted from the new asset.
+
+
+
+ The Identifier or %NULL
+
+
+
+
+
+ Request a new #GESAsset asyncronously, @callback will be called when the materail is
+ready to be used or if an error occured.
+
+Example of request of a GESAsset async:
+|[
+// The request callback
+static void
+asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
+{
+ GESAsset *asset;
+ GError *error = NULL;
+
+ asset = ges_asset_request_finish (res, &error);
+ if (asset) {
+ g_print ("The file: %s is usable as a FileSource",
+ ges_asset_get_id (asset));
+ } else {
+ g_print ("The file: %s is *not* usable as a FileSource because: %s",
+ ges_asset_get_id (source), error->message);
+ }
+
+ gst_object_unref (mfs);
+}
+
+// The request:
+ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL,
+ (GAsyncReadyCallback) asset_loaded_cb, user_data);
+]|
+
+
+
+
+
+ The #GType of the object that can be extracted from the
+ new asset. The class must implement the #GESExtractable interface.
+
+
+
+ The Identifier of the asset we want to create. This identifier depends of the extractable,
+type you want. By default it is the name of the class itself (or %NULL), but for example for a
+GESEffect, it will be the pipeline description, for a GESUriClip it
+will be the name of the file, etc... You should refer to the documentation of the #GESExtractable
+type you want to create a #GESAsset for.
+
+
+
+ optional %GCancellable object, %NULL to ignore.
+
+
+
+ a #GAsyncReadyCallback to call when the initialization is finished,
+Note that the @source of the callback will be the #GESAsset, but you need to
+make sure that the asset is properly loaded using the #ges_asset_request_finish
+method. This asset can not be used as is.
+
+
+
+ The user data to pass when @callback is called
+
+
+
+
+
+ Finalize the request of an async #GESAsset
+
+ The #GESAsset previously requested
+
+
+
+
+ The #GAsyncResult from which to get the newly created #GESAsset
+
+
+
+
+
+ Extracts a new #GObject from @asset. The type of the object is
+defined by the extractable-type of @asset, you can check what
+type will be extracted from @asset using
+#ges_asset_get_extractable_type
+
+ A newly created #GESExtractable
+
+
+
+
+ The #GESAsset to get extract an object from
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extracts a new #GObject from @asset. The type of the object is
+defined by the extractable-type of @asset, you can check what
+type will be extracted from @asset using
+#ges_asset_get_extractable_type
+
+ A newly created #GESExtractable
+
+
+
+
+ The #GESAsset to get extract an object from
+
+
+
+
+
+
+ The #GError of the asset or %NULL if
+the asset was loaded without issue
+
+
+
+
+ The asset to retrieve the error from
+
+
+
+
+
+ Gets the type of object that can be extracted from @self
+
+ the type of object that can be extracted from @self
+
+
+
+
+ The #GESAsset
+
+
+
+
+
+ Gets the ID of a #GESAsset
+
+ The ID of @self
+
+
+
+
+ The #GESAsset to get ID from
+
+
+
+
+
+
+ The proxy in use for @asset
+
+
+
+
+ The #GESAsset to get currenlty used proxy
+
+
+
+
+
+
+ The #GESAsset that is proxied by @proxy
+
+
+
+
+ The #GESAsset from which to get the the asset it proxies.
+
+
+
+
+
+
+ The list of proxies @asset has. Note that the default asset to be
+used is always the first in that list.
+
+
+
+
+
+
+ The #GESAsset to get proxies from
+
+
+
+
+
+ A proxying asset is an asset that can substitue the real @asset. For example if you
+have a full HD #GESUriClipAsset you might want to set a lower resolution (HD version
+of the same file) as proxy. Note that when an asset is proxied, calling
+#ges_asset_request will actually return the proxy asset.
+
+ %TRUE if @proxy has been set on @asset, %FALSE otherwise.
+
+
+
+
+ The #GESAsset to set proxy on
+
+
+
+ The #GESAsset that should be used as default proxy for @asset or
+%NULL if you want to use the currently set proxy. Note that an asset can proxy one and only
+one other asset.
+
+
+
+
+
+ Removes @proxy from the list of known proxies for @asset.
+If @proxy was the current proxy for @asset, stop using it.
+
+ %TRUE if @proxy was a known proxy for @asset, %FALSE otherwise.
+
+
+
+
+ The #GESAsset to stop proxying with @proxy
+
+
+
+ The #GESAsset to stop considering as a proxy for @asset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A newly created #GESExtractable
+
+
+
+
+ The #GESAsset to get extract an object from
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ## Children Properties
+
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+
+<informaltable frame="none">
+<tgroup cols="3">
+<colspec colname="properties_type" colwidth="150px"/>
+<colspec colname="properties_name" colwidth="200px"/>
+<colspec colname="properties_flags" colwidth="400px"/>
+<tbody>
+<row>
+ <entry role="property_type"><link linkend="gdouble"><type>double</type></link></entry>
+ <entry role="property_name"><link linkend="GESAudioSource--volume">volume</link></entry>
+ <entry>volume factor, 1.0=100%.</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry>
+ <entry role="property_name"><link linkend="GESAudioSource--mute">mute</link></entry>
+ <entry>mute channel.</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs a test audio stream using audiotestsrc. The default property values
+output silence. Useful for testing pipelines, or to fill gaps in an audio
+track.
+
+
+
+ Get the current frequency of @self.
+
+ The current frequency of @self.
+
+
+
+
+ a #GESAudioTestSource
+
+
+
+
+
+ Get the current volume of @self.
+
+ The current volume of @self
+
+
+
+
+ a #GESAudioTestSource
+
+
+
+
+
+ Lets you set the frequency applied on the track element
+
+
+
+
+
+ a #GESAudioTestSource
+
+
+
+ The frequency you want to apply on @self
+
+
+
+
+
+ Sets the volume of the test audio signal.
+
+
+
+
+
+ a #GESAudioTestSource
+
+
+
+ The volume you want to apply on @self
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sane default properties to specify and fixate the output stream are
+set as restriction-caps.
+It is advised, to modify these properties, to use
+#ges_track_update_restriction_caps, setting them directly is
+possible through #ges_track_set_restriction_caps, but not specifying
+one of them can lead to negotiation issues, only use that function
+if you actually know what you're doing :)
+
+The default properties are:
+- format: S32LE
+- channels: 2
+- rate: 44100
+- layout: interleaved
+
+
+
+ Creates a new #GESAudioTrack of type #GES_TRACK_TYPE_AUDIO and with generic
+raw audio caps ("audio/x-raw");
+
+ A new #GESTrack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new #GESAudioTransition.
+
+ The newly created #GESAudioTransition.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The location of the file/resource to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+ The effect will be applied on the sources that have lower priorities
+(higher number) between the inpoint and the end of it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A #GESClip is a 'natural' object which controls one or more
+#GESTrackElement(s) in one or more #GESTrack(s).
+
+Keeps a reference to the #GESTrackElement(s) it created and
+sets/updates their properties.
+
+
+
+
+ the #GESTrackElement to be used, or %NULL if it can't provide one
+for the given @track.
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrackType
+
+
+
+
+
+
+ %TRUE on success %FALSE on failure.
+
+
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrackType
+
+
+
+
+
+ Extracts a #GESTrackElement from @asset and adds it to the @clip.
+Should only be called in order to add operations to a #GESClip,
+ni other cases TrackElement are added automatically when adding the
+#GESClip/#GESAsset to a layer.
+
+Takes a reference on @track_element.
+
+ Created #GESTrackElement or NULL
+if an error happened
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESAsset with #GES_TYPE_TRACK_ELEMENT as extractable_type
+
+
+
+
+
+ Finds the #GESTrackElement controlled by @clip that is used in @track. You
+may optionally specify a GType to further narrow search criteria.
+
+Note: If many objects match, then the one with the highest priority will be
+returned.
+
+ The #GESTrackElement used by @track,
+else %NULL. Unref after usage
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrack or NULL
+
+
+
+ a #GType indicating the type of track element you are looking
+for or %G_TYPE_NONE if you do not care about the track type.
+
+
+
+
+
+ Finds all the #GESTrackElement controlled by @clip that is used in @track. You
+may optionally specify a GType to further narrow search criteria.
+
+ a #GList of the
+#GESTrackElement contained in @clip.
+The refcount of the objects will be increased. The user will have to
+unref each #GESTrackElement and free the #GList.
+
+
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrack or NULL
+
+
+
+ a #GESTrackType indicating the type of tracks in which elements
+should be searched.
+
+
+
+ a #GType indicating the type of track element you are looking
+for or %G_TYPE_NONE if you do not care about the track type.
+
+
+
+
+
+ Get the #GESLayer to which this clip belongs.
+
+ The #GESLayer where this @clip is being
+used, or %NULL if it is not used on any layer. The caller should unref it
+usage.
+
+
+
+
+ a #GESClip
+
+
+
+
+
+ Get the formats supported by @clip.
+
+ The formats supported by @clip.
+
+
+
+
+ the #GESClip
+
+
+
+
+
+ Gets the index position of an effect.
+
+ The top index of the effect, -1 if something went wrong.
+
+
+
+
+ The origin #GESClip
+
+
+
+ The #GESBaseEffect we want to get the top index from
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get effects applied on @clip
+
+ a #GList of the
+#GESBaseEffect that are applied on @clip order by ascendant priorities.
+The refcount of the objects will be increased. The user will have to
+unref each #GESBaseEffect and free the #GList.
+
+
+
+
+
+
+ The origin #GESClip
+
+
+
+
+
+ Moves @clip to @layer. If @clip is not in any layer, it adds it to
+@layer, else, it removes it from its current layer, and adds it to @layer.
+
+ %TRUE if @clip could be moved %FALSE otherwize
+
+
+
+
+ a #GESClip
+
+
+
+ the new #GESLayer
+
+
+
+
+
+ Sets the formats supported by the file.
+
+
+
+
+
+ the #GESClip to set supported formats on
+
+
+
+ the #GESTrackType defining formats supported by @clip
+
+
+
+
+
+ This is a convenience method that lets you set the index of a top effect.
+
+ %TRUE if @effect was successfuly moved, %FALSE otherwise.
+
+
+
+
+ The origin #GESClip
+
+
+
+ The #GESBaseEffect to move
+
+
+
+ the new index at which to move the @effect inside this
+#GESClip
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The function modifies @clip, and creates another #GESClip so we have two
+clips at the end, splitted at the time specified by @position, as a position
+in the timeline (not in the clip to be split). For example, if
+ges_clip_split is called on a 4-second clip playing from 0:01.00 until
+0:05.00, with a split position of 0:02.00, this will result in one clip of 1
+second and one clip of 3 seconds, not in two clips of 2 seconds.
+
+The newly created clip will be added to the same layer as @clip is in. This
+implies that @clip must be in a #GESLayer for the operation to be possible.
+
+This method supports clips playing at a different tempo than one second per
+second. For example, splitting a clip with a #GESEffect 'pitch tempo=1.5'
+four seconds after it starts, will set the inpoint of the new clip to six
+seconds after that of the clip to split. For this, the rate-changing
+property must be registered using @ges_effect_class_register_rate_property;
+for the 'pitch' plugin, this is already done.
+
+ The newly created #GESClip resulting
+from the splitting or %NULL if the clip can't be split.
+
+
+
+
+ the #GESClip to split
+
+
+
+ a #GstClockTime representing the timeline position at which to split
+
+
+
+
+
+ The GESLayer where this clip is being used. If you want to connect to its
+notify signal you should connect to it with g_signal_connect_after as the
+signal emission can be stop in the first fase.
+
+
+
+ The formats supported by the clip.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GESUriClipAsset is a special #GESAsset specilized in #GESClip.
+it is mostly used to get information about the #GESTrackType-s the objects extracted
+from it can potentialy create #GESTrackElement for.
+
+
+
+
+ Gets track types for which objects extracted from @self can create #GESTrackElement
+
+ The track types on which @self will create TrackElement when added to
+a layer
+
+
+
+
+ a #GESClipAsset
+
+
+
+
+
+ Sets track types for which objects extracted from @self can create #GESTrackElement
+
+
+
+
+
+ a #GESClipAsset
+
+
+
+ The track types supported by the GESClipAsset
+
+
+
+
+
+ The formats supported by the asset.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Subclasses can override the @create_track_element.
+
+
+
+
+ method to create a single #GESTrackElement for a given #GESTrack.
+
+
+
+ method to create multiple #GESTrackElements for a
+#GESTrack.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GESContainer base class.
+
+
+
+ Groups the #GESContainer-s provided in @containers. It creates a subclass
+of #GESContainer, depending on the containers provided in @containers.
+Basically, if all the containers in @containers should be contained in a same
+clip (all the #GESTrackElement they contain have the exact same
+start/inpoint/duration and are in the same layer), it will create a #GESClip
+otherwise a #GESGroup will be created
+
+ The #GESContainer (subclass) resulting of the
+grouping
+
+
+
+
+ The
+#GESContainer to group, they must all be in a same #GESTimeline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit @container in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge
+
+ %TRUE if the container as been edited properly, %FALSE if an error
+occured
+
+
+
+
+ the #GESClip to edit
+
+
+
+ The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.
+
+
+
+
+
+ The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.
+
+
+
+ The #GESEditMode in which the editition will happen.
+
+
+
+ The #GESEdge the edit should happen on.
+
+
+
+ The position at which to edit @container (in nanosecond)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ungroups the #GESTimelineElement contained in this GESContainer,
+creating new #GESContainer containing those #GESTimelineElement
+apropriately.
+
+ The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.
+
+
+
+
+
+
+ The #GESContainer to ungroup
+
+
+
+ Wether to recursively ungroup @container
+
+
+
+
+
+ Add the #GESTimelineElement to the container.
+
+ %TRUE on success, %FALSE on failure.
+
+
+
+
+ a #GESContainer
+
+
+
+ the #GESTimelineElement
+
+
+
+
+
+ Edit @container in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge
+
+ %TRUE if the container as been edited properly, %FALSE if an error
+occured
+
+
+
+
+ the #GESClip to edit
+
+
+
+ The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.
+
+
+
+
+
+ The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.
+
+
+
+ The #GESEditMode in which the editition will happen.
+
+
+
+ The #GESEdge the edit should happen on.
+
+
+
+ The position at which to edit @container (in nanosecond)
+
+
+
+
+
+ Get the list of #GESTimelineElement contained in @container
+The user is responsible for unreffing the contained objects
+and freeing the list.
+
+ The list of
+timeline element contained in @container.
+
+
+
+
+
+
+ a #GESContainer
+
+
+
+ Whether to recursively get children in @container
+
+
+
+
+
+ Release the @child from the control of @container.
+
+ %TRUE if the @child was properly released, else %FALSE.
+
+
+
+
+ a #GESContainer
+
+
+
+ the #GESTimelineElement to release
+
+
+
+
+
+ Ungroups the #GESTimelineElement contained in this GESContainer,
+creating new #GESContainer containing those #GESTimelineElement
+apropriately.
+
+ The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.
+
+
+
+
+
+
+ The #GESContainer to ungroup
+
+
+
+ Wether to recursively ungroup @container
+
+
+
+
+
+ The span of priorities which this container occupies.
+
+
+
+
+
+
+ A list of TimelineElement
+controlled by this Container. NOTE: Do not modify.
+
+
+
+
+
+ The span of priorities this container occupies
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Will be emitted after a child was added to @container.
+Usually you should connect with #g_signal_connect_after
+as in the first emission stage, the signal emission might
+get stopped internally.
+
+
+
+
+
+ the #GESTimelineElement that was added.
+
+
+
+
+
+ Will be emitted after a child was removed from @container.
+
+
+
+
+
+ the #GESTimelineElement that was removed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The list of
+#GESContainer resulting from the ungrouping operation
+The user is responsible for unreffing the contained objects
+and freeing the list.
+
+
+
+
+
+
+ The #GESContainer to ungroup
+
+
+
+ Wether to recursively ungroup @container
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %TRUE if the container as been edited properly, %FALSE if an error
+occured
+
+
+
+
+ the #GESClip to edit
+
+
+
+ The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.
+
+
+
+
+
+ The priority of the layer @container should land in.
+ If the layer you're trying to move the container to doesn't exist, it will
+ be created automatically. -1 means no move.
+
+
+
+ The #GESEditMode in which the editition will happen.
+
+
+
+ The #GESEdge the edit should happen on.
+
+
+
+ The position at which to edit @container (in nanosecond)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A function that will be called to create the #GstElement that will be used
+as a source to fill the gaps in @track.
+
+ A #GstElement (must be a source) that will be used to
+fill the gaps (periods of time in @track that containes no source).
+
+
+
+
+ the #GESTrack
+
+
+
+
+
+ Creates the 'primary' track element for this @clip.
+
+Subclasses should implement this method if they only provide a
+single #GESTrackElement per track.
+
+If the subclass needs to create more than one #GESTrackElement for a
+given track, then it should implement the 'create_track_elements'
+method instead.
+
+The implementer of this function shall return the proper #GESTrackElement
+that should be controlled by @clip for the given @track.
+
+The returned #GESTrackElement will be automatically added to the list
+of objects controlled by the #GESClip.
+
+ the #GESTrackElement to be used, or %NULL if it can't provide one
+for the given @track.
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrackType
+
+
+
+
+
+ Create all track elements this clip handles for this type of track.
+
+Subclasses should implement this method if they potentially need to
+return more than one #GESTrackElement(s) for a given #GESTrack.
+
+ %TRUE on success %FALSE on failure.
+
+
+
+
+
+
+ a #GESClip
+
+
+
+ a #GESTrackType
+
+
+
+
+
+ The edges of an object contain in a #GESTimeline or #GESTrack
+
+ Represents the start of an object.
+
+
+ Represents the end of an object.
+
+
+ Represent the fact we are not workin with any edge of an
+ object.
+
+
+
+ You can also find more explanation about the behaviour of those modes at:
+<ulink url="http://pitivi.org/manual/trimming.html"> trim, ripple and roll</ulink>
+and <ulink url="http://pitivi.org/manual/usingclips.html">clip management</ulink>.
+
+ The object is edited the normal way (default).
+
+
+ The objects are edited in ripple mode.
+ The Ripple mode allows you to modify the beginning/end of a clip
+ and move the neighbours accordingly. This will change the overall
+ timeline duration. In the case of ripple end, the duration of the
+ clip being rippled can't be superior to its max_duration - inpoint
+ otherwise the action won't be executed.
+
+
+ The object is edited in roll mode.
+ The Roll mode allows you to modify the position of an editing point
+ between two clips without modifying the inpoint of the first clip
+ nor the out-point of the second clip. This will not change the
+ overall timeline duration.
+
+
+ The object is edited in trim mode.
+ The Trim mode allows you to modify the in-point/duration of a clip
+ without modifying its position in the timeline.
+
+
+ The object is edited in slide mode.
+ The Slide mode allows you to modify the position of a clip in a
+ timeline without modifying its duration or its in-point, but will
+ modify the duration of the previous clip and in-point of the
+ following clip so does not modify the overall timeline duration.
+ (not implemented yet)
+
+
+
+
+
+
+ Creates a new #GESEffect from the description of the bin. It should be
+possible to determine the type of the effect through the element
+'klass' metadata of the GstElements that will be created.
+In that corner case, you should use:
+#ges_asset_request (GES_TYPE_EFFECT, "audio your ! bin ! description", NULL);
+and extract that asset to be in full control.
+
+ a newly created #GESEffect, or %NULL if something went
+wrong.
+
+
+
+
+ The gst-launch like bin description of the effect
+
+
+
+
+
+ The description of the effect bin with a gst-launch-style
+pipeline description.
+
+Example: "videobalance saturation=1.5 hue=+0.5"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Register an element that can change the rate at which media is playing. The
+property type must be float or double, and must be a factor of the rate,
+i.e. a value of 2.0 must mean that the media plays twice as fast. For
+example, this is true for the properties 'rate' and 'tempo' of the element
+'pitch', which is already registered by default. By registering the element,
+timeline duration can be correctly converted into media duration, allowing
+the right segment seeks to be sent to the sources.
+
+A reference to the GESEffectClass can be obtained as follows:
+ GES_EFFECT_CLASS (g_type_class_ref (GES_TYPE_EFFECT));
+
+ whether the rate property was succesfully registered. When this
+method returns false, a warning is emitted with more information.
+
+
+
+
+ Instance of the GESEffectClass
+
+
+
+ Name of the GstElement that changes the rate
+
+
+
+ Name of the property that changes the rate
+
+
+
+
+
+
+ The effect will be applied on the sources that have lower priorities
+(higher number) between the inpoint and the end of it.
+
+
+
+ Creates a new #GESEffectClip from the description of the bin.
+
+ a newly created #GESEffectClip, or
+%NULL if something went wrong.
+
+
+
+
+ The gst-launch like bin description of the effect
+
+
+
+ The gst-launch like bin description of the effect
+
+
+
+
+
+ The description of the audio track of the effect bin with a gst-launch-style
+pipeline description. This should be used for test purposes.
+
+Example: "audiopanorama panorama=1.0"
+
+
+
+ The description of the video track of the effect bin with a gst-launch-style
+pipeline description. This should be used for test purposes.
+
+Example: "videobalance saturation=1.5 hue=+0.5"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The ID passed is malformed
+
+
+ An error happened while loading the asset
+
+
+ The formatted files was malformed
+
+
+
+ FIXME: Long description needed
+
+
+
+ The #id of the associated #GESAsset, free with #g_free
+
+
+
+
+ The #GESExtractable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Method for getting an asset from a #GESExtractable
+
+ The #GESAsset or %NULL if none has
+been set
+
+
+
+
+ The #GESExtractable from which to retrieve a #GESAsset
+
+
+
+
+
+
+ The #id of the associated #GESAsset, free with #g_free
+
+
+
+
+ The #GESExtractable
+
+
+
+
+
+ Method to set the asset which instantiated the specified object
+
+ %TRUE if @asset could be set %FALSE otherwize
+
+
+
+
+ Target object
+
+
+
+ The #GESAsset to set
+
+
+
+
+
+
+
+ The ID to use for the asset or %NULL if @id is not valid
+
+
+
+
+ The #GType to check @id for:
+
+
+
+ The id to check
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #id of the associated #GESAsset, free with #g_free
+
+
+
+
+ The #GESExtractable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A function that will be called when the GNonLin object of a corresponding
+track element needs to be filled.
+
+The implementer of this function shall add the proper #GstElement to @nleobj
+using gst_bin_add().
+
+ TRUE if the implementer succesfully filled the @nleobj, else #FALSE.
+
+
+
+
+ the #GESClip controlling the track elements
+
+
+
+ the #GESTrackElement
+
+
+
+ the GNonLin object that needs to be filled.
+
+
+
+
+
+ Base class for timeline data serialization and deserialization.
+
+
+ Checks if there is a #GESFormatter available which can load a #GESTimeline
+from the given URI.
+
+ TRUE if there is a #GESFormatter that can support the given uri
+or FALSE if not.
+
+
+
+
+ a #gchar * pointing to the URI
+
+
+
+
+
+ Returns TRUE if there is a #GESFormatter available which can save a
+#GESTimeline to the given URI.
+
+ TRUE if the given @uri is supported, else FALSE.
+
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+
+
+ Get the default #GESAsset to use as formatter. It will return
+the asset for the #GESFormatter that has the highest @rank
+
+ The #GESAsset for the formatter with highest @rank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Load data from the given URI into timeline.
+
+ TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+
+
+ Save data from timeline to the given URI.
+
+ TRUE if the timeline data was successfully saved to the URI
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+ %TRUE to overwrite file if it exists
+
+
+
+
+
+ Load data from the given URI into timeline.
+
+ TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+
+
+ Save data from timeline to the given URI.
+
+ TRUE if the timeline data was successfully saved to the URI
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+ %TRUE to overwrite file if it exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GES Formatter class. Override the vmethods to implement the formatter functionnality.
+
+ the parent class structure
+
+
+
+ Whether the URI can be loaded
+
+
+
+ class method to deserialize data from a URI
+
+
+
+ class method to serialize data to a URI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Virtual method for loading a timeline from a given URI.
+
+Every #GESFormatter subclass needs to implement this method.
+
+ TRUE if the timeline data was successfully loaded from the URI,
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+
+
+
+
+ Virtual method for saving a timeline to a uri.
+
+Every #GESFormatter subclass needs to implement this method.
+
+ TRUE if the timeline data was successfully saved to the URI
+else FALSE.
+
+
+
+
+ a #GESFormatter
+
+
+
+ a #GESTimeline
+
+
+
+ a #gchar * pointing to a URI
+
+
+
+ %TRUE to overwrite file if it exists
+
+
+
+
+
+ A #GESGroup is an object which controls one or more
+#GESClips in one or more #GESLayer(s).
+
+To instanciate a group, you should use the ges_container_group method,
+this will be responsible for deciding what subclass of #GESContainer
+should be instaciated to group the various #GESTimelineElement passed
+in parametter.
+
+
+
+ Created a new empty #GESGroup, if you want to group several container
+together, it is recommanded to use the #ges_container_group method so the
+proper subclass is selected.
+
+ The new empty group.
+
+
+
+
+ The duration (in nanoseconds) which will be used in the container
+
+
+
+ The in-point at which this #GESGroup 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.
+
+
+
+ The maximum duration (in nanoseconds) of the #GESGroup.
+
+
+
+
+
+
+ The position of the object in its container (in nanoseconds).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs the video stream from a given file as a still frame. The frame
+chosen will be determined by the in-point property on the track element. For
+image files, do not set the in-point property.
+
+
+
+ The location of the file/resource to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+ Creates a new #GESLayer.
+
+ A new #GESLayer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates Clip from asset, adds it to layer and
+returns a reference to it.
+
+ Created #GESClip
+
+
+
+
+ a #GESLayer
+
+
+
+ The asset to add to
+
+
+
+ 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
+
+
+
+ The inpoint value to set on the new #GESClip
+
+
+
+ The duration value to set on the new #GESClip
+
+
+
+ The #GESTrackType to set on the the new #GESClip
+
+
+
+
+
+ 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.
+
+ %TRUE if the clip was properly added to the layer, or %FALSE
+if the @layer refuses to add the clip.
+
+
+
+
+ a #GESLayer
+
+
+
+ the #GESClip to add.
+
+
+
+
+
+ Gets whether transitions are automatically added when objects
+overlap or not.
+
+ %TRUE if transitions are automatically added, else %FALSE.
+
+
+
+
+ a #GESLayer
+
+
+
+
+
+ Get the clips this layer contains.
+
+ a #GList of
+clips. The user is responsible for
+unreffing the contained objects and freeing the list.
+
+
+
+
+
+
+ a #GESLayer
+
+
+
+
+
+ Gets the clips which appear between @start and @end on @layer.
+
+ a #GList of clips intersecting [@start, @end) interval on @layer.
+
+
+
+
+
+
+ a #GESLayer
+
+
+
+ start of the interval
+
+
+
+ end of the interval
+
+
+
+
+
+ Lets you retrieve the duration of the layer, which means
+the end time of the last clip inside it
+
+ The duration of a layer
+
+
+
+
+ The #GESLayer to get the duration from
+
+
+
+
+
+ Get the priority of @layer within the timeline.
+
+ The priority of the @layer within the timeline.
+
+
+
+
+ a #GESLayer
+
+
+
+
+
+ Get the #GESTimeline in which #GESLayer currently is.
+
+ the #GESTimeline in which #GESLayer
+currently is or %NULL if not in any timeline yet.
+
+
+
+
+ The #GESLayer to get the parent #GESTimeline from
+
+
+
+
+
+ Convenience method to check if @layer is empty (doesn't contain any clip),
+or not.
+
+ %TRUE if @layer is empty, %FALSE if it already contains at least
+one #GESClip
+
+
+
+
+ The #GESLayer to check
+
+
+
+
+
+ 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.
+
+ %TRUE if the clip could be removed, %FALSE if the layer does
+not want to remove the clip.
+
+
+
+
+ a #GESLayer
+
+
+
+ the #GESClip to remove
+
+
+
+
+
+ Sets the layer to the given @auto_transition. See the documentation of the
+property auto_transition for more information.
+
+
+
+
+
+ a #GESLayer
+
+
+
+ whether the auto_transition is active
+
+
+
+
+
+ Sets the layer to the given @priority. See the documentation of the
+priority property for more information.
+ use #ges_timeline_move_layer instead. This deprecation means
+that you will not need to handle layer priorities at all yourself, GES
+will make sure there is never 'gaps' between layer priorities.
+
+
+
+
+
+ a #GESLayer
+
+
+
+ the priority to set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets whether transitions are added automagically when clips overlap.
+
+
+
+ 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.
+
+Note that the timeline needs to be commited (with #ges_timeline_commit)
+for the change to be taken into account.
+ use #ges_timeline_move_layer instead. This deprecation means
+that you will not need to handle layer priorities at all yourself, GES
+will make sure there is never 'gaps' between layer priorities.
+
+
+
+
+
+
+ the #GESTimeline where this layer is being used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Will be emitted after the clip was added to the layer.
+
+
+
+
+
+ the #GESClip that was added.
+
+
+
+
+
+ Will be emitted after the clip was removed from the layer.
+
+
+
+
+
+ the #GESClip that was removed
+
+
+
+
+
+
+ Subclasses can override the @get_objects if they can provide a more
+efficient way of providing the list of contained #GESClip(s).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The description of an object, can be used in various context (string)
+
+The description
+
+
+
+ The extension of the files produced by a formatter (string)
+
+
+
+ Mimetype used for the file produced by a formatter (string)
+
+The mime type
+
+
+
+ Name of a formatter it is used as ID of Formater assets (string)
+
+The name of the formatter
+
+
+
+ The rank of a formatter (GstRank)
+
+The rank of a formatter
+
+
+
+ The version of a formatter (double)
+
+The formatter version
+
+
+
+ The version of the format in which a project is serialized
+
+
+
+ The volume, can be used for audio track or layers
+
+The volume for a track or a layer, it is register as a float
+
+
+
+ The default volume
+
+The default volume for a track or a layer as a float
+
+
+
+
+
+
+ Interface that allows reading and writing meta
+
+ Deserializes a meta container.
+
+ TRUE on success, FALSE if there was an error.
+
+
+
+
+ Target container
+
+
+
+ a string created with ges_meta_container_metas_to_string()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Calls the given function for each metadata inside the meta container. Note
+that if there is no metadata, the function won't be called at all.
+
+
+
+
+
+ container to iterate over
+
+
+
+ function to be called for each metadata
+
+
+
+ user specified data
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns FALSE if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns %FALSE if @meta_item
+can not be found.
+
+
+
+
+
+ Gets the value of a given meta item, returns NULL if @key
+can not be found.
+
+ the #GValue corresponding to the meta with the given @key.
+
+
+
+
+ Target container
+
+
+
+ The key name of the meta to retrieve
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to get
+
+
+
+ Destination to which value of meta item will be copied
+Gets the value of a given meta item, returns NULL if @meta_item
+can not be found.
+
+
+
+
+
+ Serializes a meta container to a string.
+
+ a newly-allocated string, or NULL in case of an error.
+The string must be freed with g_free() when no longer needed.
+
+
+
+
+ a #GESMetaContainer
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the static meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets a static meta on @container. This method lets you define static
+metadatas, which means that the type of the registered will be the only
+type accepted for this meta on that particular @container.
+
+ %TRUE if the meta could be register, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ The #GESMetaFlag to be used
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+Sets the value of a given meta item
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+ Sets the value of a given meta item
+
+ %TRUE if the meta could be added, %FALSE otherwize
+
+
+
+
+ Target container
+
+
+
+ Name of the meta item to set
+
+
+
+ Value to set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The metadata is readable
+
+
+ The metadata is writable
+
+
+ The metadata is readable and writable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs the video stream from a given image sequence. The start frame
+chosen will be determined by the in-point property on the track element.
+
+
+
+ Creates a new #GESMultiFileSource for the provided @uri.
+
+ A new #GESMultiFileSource.
+
+
+
+
+ the URI the source should control
+
+
+
+
+
+ The uri of the file/resource to use. You can set a start index,
+a stop index and a sequence pattern.
+The format is <multifile://start:stop\@location-pattern>.
+The pattern uses printf string formating.
+
+Example uris:
+
+multifile:///home/you/image\%03d.jpg
+
+multifile://20:50@/home/you/sequence/\%04d.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for overlays, transitions, and effects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Operations are any kind of object that both outputs AND consumes data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Overlays are objects which modify the underlying layer(s).
+
+Examples of overlays include text, image watermarks, or audio dubbing.
+
+Transitions, which change from one source to another over time, are
+not considered overlays.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GESPipeline allows developers to view and render #GESTimeline
+in a simple fashion.
+Its usage is inspired by the 'playbin' element from gst-plugins-base.
+
+
+
+ Creates a new conveninence #GESPipeline.
+
+ the new #GESPipeline.
+
+
+
+
+
+ the #GESPipelineFlags currently in use.
+
+
+
+
+ a #GESPipeline
+
+
+
+
+
+ Returns a #GstSample with the currently playing image in the format specified by
+caps. The caller should free the sample with #gst_sample_unref when finished. If ANY
+caps are specified, the information will be returned in the whatever format
+is currently used by the sink. This information can be retrieve from caps
+associated with the buffer.
+
+ a #GstSample or %NULL
+
+
+
+
+ a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED
+
+
+
+ caps specifying current format. Use %GST_CAPS_ANY
+for native size.
+
+
+
+
+
+ A convenience method for @ges_pipeline_get_thumbnail which
+returns a buffer in 24-bit RGB, optionally scaled to the specified width
+and height. If -1 is specified for either dimension, it will be left at
+native size. You can retreive this information from the caps associated
+with the buffer.
+
+The caller is responsible for unreffing the returned sample with
+#gst_sample_unref.
+
+ a #GstSample or %NULL
+
+
+
+
+ a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED
+
+
+
+ the requested width or -1 for native size
+
+
+
+ the requested height or -1 for native size
+
+
+
+
+
+ Obtains a pointer to playsink's audio sink element that is used for
+displaying audio when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+The caller is responsible for unreffing the returned element with
+#gst_object_unref.
+
+ a pointer to the playsink audio sink #GstElement
+
+
+
+
+ a #GESPipeline
+
+
+
+
+
+ Obtains a pointer to playsink's video sink element that is used for
+displaying video when the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+The caller is responsible for unreffing the returned element with
+#gst_object_unref.
+
+ a pointer to the playsink video sink #GstElement
+
+
+
+
+ a #GESPipeline
+
+
+
+
+
+ Sets playsink's audio sink element that is used for displaying audio when
+the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+
+
+
+
+ a #GESPipeline in %GST_STATE_NULL
+
+
+
+ a audio sink #GstElement
+
+
+
+
+
+ Sets playsink's video sink element that is used for displaying video when
+the #GESPipeline is in %GES_PIPELINE_MODE_PREVIEW
+
+
+
+
+
+ a #GESPipeline in %GST_STATE_NULL
+
+
+
+ a video sink #GstElement
+
+
+
+
+
+ Saves the current frame to the specified @location.
+
+ %TRUE if the thumbnail was properly save, else %FALSE.
+
+
+
+
+ a #GESPipeline in %GST_STATE_PLAYING or %GST_STATE_PAUSED
+
+
+
+ the requested width or -1 for native size
+
+
+
+ the requested height or -1 for native size
+
+
+
+ a string specifying the desired mime type (for example,
+image/jpeg)
+
+
+
+ the path to save the thumbnail
+
+
+
+
+
+ switches the @pipeline to the specified @mode. The default mode when
+creating a #GESPipeline is #GES_PIPELINE_MODE_PREVIEW.
+
+Note: The @pipeline will be set to #GST_STATE_NULL during this call due to
+the internal changes that happen. The caller will therefore have to
+set the @pipeline to the requested state after calling this method.
+
+ %TRUE if the mode was properly set, else %FALSE.
+
+
+
+
+ a #GESPipeline
+
+
+
+ the #GESPipelineFlags to use
+
+
+
+
+
+ Specify where the pipeline shall be rendered and with what settings.
+
+A copy of @profile and @output_uri will be done internally, the caller can
+safely free those values afterwards.
+
+This method must be called before setting the pipeline mode to
+#GES_PIPELINE_MODE_RENDER
+
+ %TRUE if the settings were aknowledged properly, else %FALSE
+
+
+
+
+ a #GESPipeline
+
+
+
+ the URI to which the timeline will be rendered
+
+
+
+ the #GstEncodingProfile to use to render the timeline.
+
+
+
+
+
+ Sets the timeline to use in this pipeline.
+
+The reference to the @timeline will be stolen by the @pipeline.
+
+ %TRUE if the @timeline could be successfully set on the @pipeline,
+else %FALSE.
+
+
+
+
+ a #GESPipeline
+
+
+
+ the #GESTimeline to set on the @pipeline.
+
+
+
+
+
+
+
+
+ Audio sink for the preview.
+
+
+
+ Pipeline mode. See ges_pipeline_set_mode() for more
+info.
+
+
+
+ Timeline to use in this pipeline. See also
+ges_pipeline_set_timeline() for more info.
+
+
+
+
+
+
+ Video sink for the preview.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+ The various modes the #GESPipeline can be configured to.
+
+ output audio to the soundcard
+
+
+ output video to the screen
+
+
+ output audio/video to soundcard/screen (default)
+
+
+ render timeline (forces decoding)
+
+
+ render timeline (tries to avoid decoding/reencoding)
+
+
+
+
+
+ This is a legacy format and you should avoid to use it. The formatter
+is really not in good shape and is deprecated.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GESProject is used to control a set of #GESAsset and is a
+#GESAsset with #GES_TYPE_TIMELINE as @extractable_type itself. That
+means that you can extract #GESTimeline from a project as followed:
+
+|[
+ GESProject *project;
+ GESTimeline *timeline;
+
+ project = ges_project_new ("file:///path/to/a/valid/project/uri");
+
+ // Here you can connect to the various signal to get more infos about
+ // what is happening and recover from errors if possible
+ ...
+
+ timeline = ges_asset_extract (GES_ASSET (project));
+]|
+
+The #GESProject class offers a higher level API to handle #GESAsset-s.
+It lets you request new asset, and it informs you about new assets through
+a set of signals. Also it handles problem such as missing files/missing
+#GstElement and lets you try to recover from those.
+
+
+
+
+ Creates a new #GESProject and sets its uri to @uri if provided. Note that
+if @uri is not valid or %NULL, the uri of the project will then be set
+the first time you save the project. If you then save the project to
+other locations, it will never be updated again and the first valid URI is
+the URI it will keep refering to.
+
+ A newly created #GESProject
+
+
+
+
+ The uri to be set after creating the project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adds a #Asset to @project, the project will keep a reference on
+@asset.
+
+ %TRUE if the asset could be added %FALSE it was already
+in the project
+
+
+
+
+ A #GESProject
+
+
+
+ A #GESAsset to add to @project
+
+
+
+
+
+ Adds @profile to the project. It lets you save in what format
+the project has been renders and keep a reference to those formats.
+Also, those formats will be saves to the project file when possible.
+
+ %TRUE if @profile could be added, %FALSE otherwize
+
+
+
+
+ A #GESProject
+
+
+
+ A #GstEncodingProfile to add to the project. If a profile with
+the same name already exists, it will be replaced
+
+
+
+
+
+ Create and add a #GESAsset to @project. You should connect to the
+"asset-added" signal to get the asset when it finally gets added to
+@project
+
+ %TRUE if the asset started to be added %FALSE it was already
+in the project
+
+
+
+
+ A #GESProject
+
+
+
+ The id of the asset to create and add to @project
+
+
+
+ The #GType of the asset to create
+
+
+
+
+
+ Create and add a #GESAsset to @project. You should connect to the
+"asset-added" signal to get the asset when it finally gets added to
+@project
+
+ The newly created #GESAsset or %NULL.
+
+
+
+
+ A #GESProject
+
+
+
+ The id of the asset to create and add to @project
+
+
+
+ The #GType of the asset to create
+
+
+
+
+
+
+ The #GESAsset with
+@id or %NULL if no asset with @id as an ID
+
+
+
+
+ A #GESProject
+
+
+
+ The id of the asset to retrieve
+
+
+
+ The extractable_type of the asset
+to retrieve from @object
+
+
+
+
+
+ Get the assets that are being loaded
+
+ A set of loading asset
+that will be added to @project. Note that those Asset are *not* loaded yet,
+and thus can not be used
+
+
+
+
+
+
+ A #GESProject
+
+
+
+
+
+ Retrieve the uri that is currently set on @project
+
+ a newly allocated string representing uri.
+
+
+
+
+ A #GESProject
+
+
+
+
+
+ List all @asset contained in @project filtering per extractable_type
+as defined by @filter. It copies the asset and thus will not be updated
+in time.
+
+ The list of
+#GESAsset the object contains
+
+
+
+
+
+
+ A #GESProject
+
+
+
+ Type of assets to list, #GES_TYPE_EXTRACTABLE will list
+all assets
+
+
+
+
+
+ Lists the encoding profile that have been set to @project. The first one
+is the latest added.
+
+ The
+list of #GstEncodingProfile used in @project
+
+
+
+
+
+
+ A #GESProject
+
+
+
+
+
+ Loads @project into @timeline
+
+ %TRUE if the project could be loaded %FALSE otherwize.
+
+
+
+
+ A #GESProject that has an @uri set already
+
+
+
+ A blank timeline to load @project into
+
+
+
+
+
+ remove a @asset to from @project.
+
+ %TRUE if the asset could be removed %FALSE otherwise
+
+
+
+
+ A #GESProject
+
+
+
+ A #GESAsset to remove from @project
+
+
+
+
+
+ Save the timeline of @project to @uri. You should make sure that @timeline
+is one of the timelines that have been extracted from @project
+(using ges_asset_extract (@project);)
+
+ %TRUE if the project could be save, %FALSE otherwize
+
+
+
+
+ A #GESProject to save
+
+
+
+ The #GESTimeline to save, it must have been extracted from @project
+
+
+
+ The uri where to save @project and @timeline
+
+
+
+ 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
+
+
+
+ %TRUE to overwrite file if it exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GESAsset that has been added to @project
+
+
+
+
+
+
+
+
+
+
+ The #GESAsset that started loading
+
+
+
+
+
+
+
+
+
+
+ The #GESAsset that has been removed from @project
+
+
+
+
+
+ Informs you that a #GESAsset could not be created. In case of
+missing GStreamer plugins, the error will be set to #GST_CORE_ERROR
+#GST_CORE_ERROR_MISSING_PLUGIN
+
+
+
+
+
+ The #GError defining the error that accured, might be %NULL
+
+
+
+ The @id of the asset that failed loading
+
+
+
+ The @extractable_type of the asset that
+failed loading
+
+
+
+
+
+
+
+
+
+
+ The #GESTimeline that complete loading
+
+
+
+
+
+ |[
+static gchar
+source_moved_cb (GESProject *project, GError *error, GESAsset *asset_with_error)
+{
+ return g_strdup ("file:///the/new/uri.ogg");
+}
+
+static int
+main (int argc, gchar ** argv)
+{
+ GESTimeline *timeline;
+ GESProject *project = ges_project_new ("file:///some/uri.xges");
+
+ g_signal_connect (project, "missing-uri", source_moved_cb, NULL);
+ timeline = ges_asset_extract (GES_ASSET (project));
+}
+]|
+
+ The new URI of @wrong_asset
+
+
+
+
+ The error that happened
+
+
+
+ The asset with the wrong ID, you should us it and its content
+only to find out what the new location is.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for single-media sources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for sources of a #GESLayer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Useful for testing purposes.
+
+You can use the ges_asset_request_simple API to create an Asset
+capable of extracting GESTestClip-s
+
+
+
+ Creates a new #GESTestClip.
+
+ The newly created #GESTestClip,
+or %NULL if there was an error.
+
+
+
+
+ Creates a new #GESTestClip for the provided @nick.
+
+ The newly created #GESTestClip,
+or %NULL if there was an error.
+
+
+
+
+ the nickname for which to create the #GESTestClip
+
+
+
+
+
+ Get the frequency @self generates.
+
+ The frequency @self generates. See audiotestsrc element.
+
+
+
+
+ a #GESTestClip
+
+
+
+
+
+ Get the volume of the test audio signal applied on @self.
+
+ The volume of the test audio signal applied on @self.
+
+
+
+
+ a #GESTestClip
+
+
+
+
+
+ Get the #GESVideoTestPattern which is applied on @self.
+
+ The #GESVideoTestPattern which is applied on @self.
+
+
+
+
+ a #GESTestClip
+
+
+
+
+
+ Let you know if the audio track of @self is muted or not.
+
+ Whether the audio track of @self is muted or not.
+
+
+
+
+ a #GESTestClip
+
+
+
+
+
+ Sets the frequency to generate. See audiotestsrc element.
+
+
+
+
+
+ the #GESTestClip to set the frequency on
+
+
+
+ the frequency you want to use on @self
+
+
+
+
+
+ Sets whether the audio track of this clip is muted or not.
+
+
+
+
+
+ the #GESTestClip on which to mute or unmute the audio track
+
+
+
+ %TRUE to mute the audio track, %FALSE to unmute it
+
+
+
+
+
+ Sets the volume of the test audio signal.
+
+
+
+
+
+ the #GESTestClip to set the volume on
+
+
+
+ the volume of the audio signal you want to use on @self
+
+
+
+
+
+ Sets which video pattern to display on @self.
+
+
+
+
+
+ the #GESTestClip to set the pattern on
+
+
+
+ the #GESVideoTestPattern to use on @self
+
+
+
+
+
+ The frequency to generate for audio track elements.
+
+
+
+ Whether the sound will be played or not.
+
+
+
+ The volume for the audio track elements.
+
+
+
+ Video pattern to display in video track elements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Horizontal alignment of the text.
+
+ align text left
+
+
+ align text center
+
+
+ align text right
+
+
+ align text on xpos position
+
+
+
+
+
+
+
+
+ Creates a new #GESTextOverlay.
+
+ The newly created #GESTextOverlay or
+%NULL if something went wrong.
+
+
+
+
+ Get the color used by @source.
+
+ The color used by @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the pango font description currently set on @source.
+
+ The pango font description currently set on @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the horizontal aligment used by @source.
+
+ The horizontal aligment used by @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the text currently set on @source.
+
+ The text currently set on @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the vertical aligment used by @source.
+
+ The vertical aligment used by @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the horizontal position used by @source.
+
+ The horizontal position used by @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Get the vertical position used by @source.
+
+ The vertical position used by @source.
+
+
+
+
+ a GESTextOverlay
+
+
+
+
+
+ Sets the color of the text.
+
+
+
+
+
+ the #GESTextOverlay* to set
+
+
+
+ The color @self is being set to
+
+
+
+
+
+ Sets the pango font description of the text this track element
+will render.
+
+
+
+
+
+ the #GESTextOverlay
+
+
+
+ the pango font description
+
+
+
+
+
+ Sets the horizontal aligment of the text.
+
+
+
+
+
+ the #GESTextOverlay* to set text on
+
+
+
+ The #GESTextHAlign defining the horizontal alignment
+of the text render by @self.
+
+
+
+
+
+ Sets the text this track element will render.
+
+
+
+
+
+ the #GESTextOverlay* to set text on
+
+
+
+ the text to render. an internal copy of this text will be
+made.
+
+
+
+
+
+ Sets the vertical aligment of the text.
+
+
+
+
+
+ the #GESTextOverlay* to set text on
+
+
+
+ The #GESTextVAlign defining the vertical alignment
+of the text render by @self.
+
+
+
+
+
+ Sets the horizontal position of the text.
+
+
+
+
+
+ the #GESTextOverlay* to set
+
+
+
+ The horizontal position @self is being set to
+
+
+
+
+
+ Sets the vertical position of the text.
+
+
+
+
+
+ the #GESTextOverlay* to set
+
+
+
+ The vertical position @self is being set to
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Renders text onto the next lower priority stream using textrender.
+
+
+
+ Creates a new #GESTextOverlayClip
+
+ The newly created
+#GESTextOverlayClip, or %NULL if there was an error.
+
+
+
+
+ Get the color used by @source.
+
+ The color used by @source.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the pango font description used by @self.
+
+ The pango font description used by @self.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the horizontal aligment used by @self.
+
+ The horizontal aligment used by @self.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the text currently set on @self.
+
+ The text currently set on @self.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the vertical aligment used by @self.
+
+ The vertical aligment used by @self.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the horizontal position used by @source.
+
+ The horizontal position used by @source.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Get the vertical position used by @source.
+
+ The vertical position used by @source.
+
+
+
+
+ a #GESTextOverlayClip
+
+
+
+
+
+ Sets the color of the text.
+
+
+
+
+
+ the #GESTextOverlayClip* to set
+
+
+
+ The color @self is being set to
+
+
+
+
+
+ Sets the pango font description of the text
+
+
+
+
+
+ the #GESTextOverlayClip*
+
+
+
+ the pango font description
+
+
+
+
+
+ Sets the horizontal aligment of the text.
+
+
+
+
+
+ the #GESTextOverlayClip* to set horizontal alignement of text on
+
+
+
+ #GESTextHAlign
+
+
+
+
+
+ Sets the text this clip will render.
+
+
+
+
+
+ the #GESTextOverlayClip* to set text on
+
+
+
+ the text to render. an internal copy of this text will be
+made.
+
+
+
+
+
+ Sets the vertical aligment of the text.
+
+
+
+
+
+ the #GESTextOverlayClip* to set vertical alignement of text on
+
+
+
+ #GESTextVAlign
+
+
+
+
+
+ Sets the horizontal position of the text.
+
+
+
+
+
+ the #GESTextOverlayClip* to set
+
+
+
+ The horizontal position @self is being set to
+
+
+
+
+
+ Sets the vertical position of the text.
+
+
+
+
+
+ the #GESTextOverlayClip* to set
+
+
+
+ The vertical position @self is being set to
+
+
+
+
+
+ The color of the text
+
+
+
+ Pango font description string
+
+
+
+ Horizontal alignment of the text
+
+
+
+ The text to diplay
+
+
+
+ Vertical alignent of the text
+
+
+
+ The horizontal position of the text
+
+
+
+ The vertical position of the text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vertical alignment of the text.
+
+ draw text on the baseline
+
+
+ draw text on the bottom
+
+
+ draw text on top
+
+
+ draw text on ypos position
+
+
+ draw text on the center
+
+
+
+
+
+ #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.
+
+
+
+
+ Creates a new empty #GESTimeline.
+
+ The new timeline.
+
+
+
+
+ Creates a new #GESTimeline containing a raw audio and a
+raw video track.
+
+ The newly created #GESTimeline.
+
+
+
+
+ Creates a timeline from the given URI.
+
+ A new timeline if the uri was loaded
+successfully, or %NULL if the uri could not be loaded.
+
+
+
+
+ the URI to load from
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add the layer to the timeline. The reference to the @layer will be stolen
+by the @timeline.
+
+ %TRUE if the layer was properly added, else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+ the #GESLayer to add
+
+
+
+
+
+ Add a track to the timeline. The reference to the track will be stolen by the
+pipeline.
+
+ %TRUE if the track was properly added, else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+ the #GESTrack to add
+
+
+
+
+
+ Append a newly created #GESLayer to @timeline
+Note that you do not own any reference to the returned layer.
+
+ The newly created #GESLayer, or the last (empty)
+#GESLayer of @timeline.
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Commit all the pending changes of the clips contained in the
+@timeline.
+
+When changes happen in a timeline, they are not
+directly executed in the non-linear engine. Call this method once you are
+done with a set of changes and want it to be executed.
+
+The #GESTimeline::commited signal will be emitted when the (possibly updated)
+#GstPipeline is ready to output data again, except if the state of the
+timeline was #GST_STATE_READY or #GST_STATE_NULL.
+
+Note that all the pending changes will automatically be executed when the
+timeline goes from #GST_STATE_READY to #GST_STATE_PAUSED, which usually is
+triggered by corresponding state changes in a containing #GESPipeline.
+
+You should not try to change the state of the timeline, seek it or add
+tracks to it during a commit operation, that is between a call to this
+function and after receiving the #GESTimeline::commited signal.
+
+See #ges_timeline_commit_sync if you don't want to bother with waiting
+for the signal.
+
+ %TRUE if pending changes were commited or %FALSE if nothing needed
+to be commited
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Commit all the pending changes of the #GESClips contained in the
+@timeline.
+
+Will return once the update is complete, that is when the
+(possibly updated) #GstPipeline is ready to output data again, or if the
+state of the timeline was #GST_STATE_READY or #GST_STATE_NULL.
+
+This function will wait for any pending state change of the timeline by
+calling #gst_element_get_state with a #GST_CLOCK_TIME_NONE timeout, you
+should not try to change the state from another thread before this function
+has returned.
+
+See #ges_timeline_commit for more information.
+
+ %TRUE if pending changes were commited or %FALSE if nothing needed
+to be commited
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Gets whether transitions are automatically added when objects
+overlap or not.
+
+ %TRUE if transitions are automatically added, else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Get the current duration of @timeline
+
+ The current duration of @timeline
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Gets a #GESTimelineElement contained in the timeline
+
+ The #GESTimelineElement or %NULL if
+not found.
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+
+
+
+ Get the list of #GESGroup present in the Timeline.
+
+ the list of
+#GESGroup that contain clips present in the timeline's layers.
+Must not be changed.
+
+
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Retrieve the layer with @priority as a priority
+
+ A #GESLayer or %NULL if no layer with
+@priority was found
+
+Since 1.6
+
+
+
+
+ The #GESTimeline to retrive a layer from
+
+
+
+ The priority of the layer to find
+
+
+
+
+
+ Get the list of #GESLayer present in the Timeline.
+
+ the list of
+#GESLayer present in the Timeline sorted by priority.
+The caller should unref each Layer once he is done with them.
+
+
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Search the #GstPad corresponding to the given @timeline's @track.
+
+ The corresponding #GstPad if it is
+found, or %NULL if there is an error.
+
+
+
+
+ The #GESTimeline
+
+
+
+ The #GESTrack
+
+
+
+
+
+ Gets the configured snapping distance of the timeline. See
+the documentation of the property snapping_distance for more
+information.
+
+ The @snapping_distance property of the timeline
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Search the #GESTrack corresponding to the given @timeline's @pad.
+
+ The corresponding #GESTrack if it is
+found, or %NULL if there is an error.
+
+
+
+
+ The #GESTimeline
+
+
+
+ The #GstPad
+
+
+
+
+
+ Returns the list of #GESTrack used by the Timeline.
+
+ A list of #GESTrack.
+The caller should unref each track once he is done with them.
+
+
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Check whether a #GESTimeline is empty or not
+
+ %TRUE if the timeline is empty %FALSE otherwize
+
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Loads the contents of URI into the given timeline.
+
+ %TRUE if the timeline was loaded successfully, or %FALSE if the uri
+could not be loaded.
+
+
+
+
+ an empty #GESTimeline into which to load the formatter
+
+
+
+ The URI to load from
+
+
+
+
+
+ Moves @layer at @new_layer_priority meaning that @layer
+we land at that position in the stack of layers inside
+the timeline. If @new_layer_priority is superior than the number
+of layers present in the time, it will move to the end of the
+stack of layers.
+
+
+
+
+
+ The timeline in which @layer must be
+
+
+
+ The layer to move at @new_layer_priority
+
+
+
+ The index at which @layer should land
+
+
+
+
+
+ Paste @element inside the timeline. @element must have been
+created using ges_timeline_element_copy with deep=TRUE set,
+i.e. it must be a deep copy, otherwise it will fail.
+
+ Shallow copy of the @element pasted
+
+
+
+
+ The #GESTimeline onto which the #GESTimelineElement should be pasted
+
+
+
+ The #GESTimelineElement to paste
+
+
+
+ The position in the timeline the element should
+be pasted to, meaning it will become the start of @element
+
+
+
+ The #GESLayer to which the element should be pasted to.
+-1 means paste to the same layer from which the @element has been copied from.
+
+
+
+
+
+ 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.
+
+ %TRUE if the layer was properly removed, else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+ the #GESLayer to remove
+
+
+
+
+
+ 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.
+
+ %TRUE if the @track was properly removed, else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+ the #GESTrack to remove
+
+
+
+
+
+ Saves the timeline to the given location
+
+ %TRUE if the timeline was successfully saved to the given location,
+else %FALSE.
+
+
+
+
+ a #GESTimeline
+
+
+
+ The location to save to
+
+
+
+ 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
+
+
+
+ %TRUE to overwrite file if it exists
+
+
+
+
+
+ Sets the layer to the given @auto_transition. See the documentation of the
+property auto_transition for more information.
+
+
+
+
+
+ a #GESLayer
+
+
+
+ whether the auto_transition is active
+
+
+
+
+
+ Sets the @snapping_distance of the timeline. See the documentation of the
+property snapping_distance for more information.
+
+
+
+
+
+ a #GESLayer
+
+
+
+ whether the snapping_distance is active
+
+
+
+
+
+ Sets whether transitions are added automagically when clips overlap.
+
+
+
+ Current duration (in nanoseconds) of the #GESTimeline
+
+
+
+ Distance (in nanoseconds) from which a moving object will snap
+with it neighboors. 0 means no snapping.
+
+
+
+
+
+
+ A list of #GESLayer sorted by priority NOTE: Do not modify.
+
+
+
+
+
+ A list of #GESTrack sorted by priority NOTE: Do not modify.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This signal will be emitted once the changes initiated by #ges_timeline_commit
+have been executed in the backend. Use #ges_timeline_commit_sync if you
+don't need to do anything in the meantime.
+
+
+
+
+
+ Will be emitted after a new group is added to to the timeline.
+
+
+
+
+
+ the #GESGroup
+
+
+
+
+
+ Will be emitted after a group has been removed from the timeline.
+
+
+
+
+
+ the #GESGroup
+
+
+
+ a list of #GESContainer
+
+
+
+
+
+
+
+ Will be emitted after a new layer is added to the timeline.
+
+
+
+
+
+ the #GESLayer that was added to the timeline
+
+
+
+
+
+ Will be emitted after the layer was removed from the timeline.
+
+
+
+
+
+ the #GESLayer that was removed from the timeline
+
+
+
+
+
+
+ a #GPtrArray of #GESTrack-s where that object should be added
+
+
+
+
+
+
+ The #GESClip on which @track_element will land
+
+
+
+ The #GESTrackElement for which to choose the tracks it should land into
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Will be emitted after the track was added to the timeline.
+
+
+
+
+
+ the #GESTrack that was added to the timeline
+
+
+
+
+
+ Will be emitted after the track was removed from the timeline.
+
+
+
+
+
+ the #GESTrack that was removed from the timeline
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The GESTimelineElement base class implements the notion of timing as well
+as priority. A GESTimelineElement can have a parent object which will be
+responsible for controlling its timing properties.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets all the TrackTypes @self will interact with
+
+
+
+
+
+ A #GESTimelineElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edits @self in ripple mode. It allows you to modify the
+start of @self and move the following neighbours accordingly.
+This will change the overall timeline duration.
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new start of @self in ripple mode.
+
+
+
+
+
+ Edits @self in ripple mode. It allows you to modify the
+duration of a @self and move the following neighbours accordingly.
+This will change the overall timeline duration.
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.
+
+
+
+
+
+ Edits @self in roll mode. It allows you to modify the
+duration of a @self and trim (basicly change the start + inpoint
+in this case) the following neighbours accordingly.
+This will not change the overall timeline duration.
+
+ %TRUE if the self as been rolled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll.
+
+
+
+ The new end (start + duration) of @self in roll mode
+
+
+
+
+
+ Edits @self in roll mode. It allows you to modify the
+start and inpoint of a @self and "resize" (basicly change the duration
+in this case) of the previous neighbours accordingly.
+This will not change the overall timeline duration.
+
+ %TRUE if the self as been roll properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll
+
+
+
+ The new start of @self in roll mode, it will also adapat
+the in-point of @self according
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets the parent of @self to @parent. The parents needs to already
+own a hard reference on @self.
+
+ %TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ new parent of self
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edits @self in trim mode. It allows you to modify the
+inpoint and start of @self.
+This will not change the overall timeline duration.
+
+Note that to trim the end of an self you can just set its duration. The same way
+as this method, it will take into account the snapping-distance property of the
+timeline in which @self is.
+
+ %TRUE if the self as been trimmed properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to trim.
+
+
+
+ The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copies @self
+
+ The newly create #GESTimelineElement, copied from @self
+
+
+
+
+ The #GESTimelineElement to copy
+
+
+
+ whether we want to create the elements @self contains or not
+
+
+
+
+
+ Gets properties of a child of @self.
+
+
+
+
+
+ The origin #GESTimelineElement
+
+
+
+ The name of the first property to get
+
+
+
+ return location for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ In general, a copy is made of the property contents and
+the caller is responsible for freeing the memory by calling
+g_value_unset().
+
+Gets a property of a GstElement contained in @object.
+
+Note that #ges_timeline_element_get_child_property is really
+intended for language bindings, #ges_timeline_element_get_child_properties
+is much more convenient for C programming.
+
+ %TRUE if the property was found, %FALSE otherwize
+
+
+
+
+ The origin #GESTimelineElement
+
+
+
+ The name of the property
+
+
+
+ return location for the property value, it will
+be initialized if it is initialized with 0
+
+
+
+
+
+ Gets a property of a child of @self.
+
+
+
+
+
+ a #GESTrackElement
+
+
+
+ The #GParamSpec that specifies the property you want to get
+
+
+
+ return location for the value
+
+
+
+
+
+ Gets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+
+
+
+
+
+ The #GESTimelineElement parent object
+
+
+
+ The name of the first property to get
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+
+ The @duration of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+
+ The @inpoint of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+
+ The @maxduration of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+ Returns a copy of the name of @self.
+Caller should g_free() the return value after usage.
+
+ The name of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+ Returns the parent of @self. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.
+
+ parent of @self, this can be %NULL if
+@self has no parent. unref after usage.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+
+ The @priority of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+
+ The @start of @self
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+ Returns the timeline of @self. This function increases the refcount
+of the timeline so you should gst_object_unref() it after usage.
+
+ timeline of @self, this can be %NULL if
+@self has no timeline. unref after usage.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+
+
+ Gets the toplevel #GESTimelineElement controlling @self
+
+ The toplevel controlling parent of @self
+
+
+
+
+ The #GESTimelineElement to get the toplevel parent from
+
+
+
+
+
+ Gets all the TrackTypes @self will interact with
+
+
+
+
+
+ A #GESTimelineElement
+
+
+
+
+
+ Gets an array of #GParamSpec* for all configurable properties of the
+children of @self.
+
+ an array of #GParamSpec* which should be freed after use or
+%NULL if something went wrong
+
+
+
+
+
+
+ The #GESTimelineElement to get the list of children properties from
+
+
+
+ return location for the length of the returned array
+
+
+
+
+
+ Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+ Paste @self inside the timeline. @self must have been created
+using ges_timeline_element_copy with recurse=TRUE set,
+otherwise it will fail.
+
+ Paste @self copying the element
+
+
+
+
+ The #GESTimelineElement to paste
+
+
+
+ The position in the timeline the element should
+be copied to, meaning it will become the start of @self
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edits @self in ripple mode. It allows you to modify the
+start of @self and move the following neighbours accordingly.
+This will change the overall timeline duration.
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new start of @self in ripple mode.
+
+
+
+
+
+ Edits @self in ripple mode. It allows you to modify the
+duration of a @self and move the following neighbours accordingly.
+This will change the overall timeline duration.
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.
+
+
+
+
+
+ Edits @self in roll mode. It allows you to modify the
+duration of a @self and trim (basicly change the start + inpoint
+in this case) the following neighbours accordingly.
+This will not change the overall timeline duration.
+
+ %TRUE if the self as been rolled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll.
+
+
+
+ The new end (start + duration) of @self in roll mode
+
+
+
+
+
+ Edits @self in roll mode. It allows you to modify the
+start and inpoint of a @self and "resize" (basicly change the duration
+in this case) of the previous neighbours accordingly.
+This will not change the overall timeline duration.
+
+ %TRUE if the self as been roll properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll
+
+
+
+ The new start of @self in roll mode, it will also adapat
+the in-point of @self according
+
+
+
+
+
+ Sets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+
+
+
+
+
+ The #GESTimelineElement parent object
+
+
+
+ The name of the first property to set
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ Sets a property of a child of @self
+
+Note that #ges_timeline_element_set_child_property is really
+intended for language bindings, #ges_timeline_element_set_child_properties
+is much more convenient for C programming.
+
+ %TRUE if the property was set, %FALSE otherwize
+
+
+
+
+ The origin #GESTimelineElement
+
+
+
+ The name of the property
+
+
+
+ the value
+
+
+
+
+
+ Sets a property of a child of @self.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ The #GParamSpec that specifies the property you want to set
+
+
+
+ the value
+
+
+
+
+
+ Sets a property of a child of @self. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+
+
+
+
+
+ The #GESTimelineElement parent object
+
+
+
+ The name of the first property to set
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ Set the duration of the object
+
+Note that if the timeline snap-distance property of the timeline containing
+@self is set, @self will properly snap to its neighboors.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ the duration in #GstClockTime
+
+
+
+
+
+ Set the in-point, that is the moment at which the @self will start
+outputting data from its contents.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ the in-point in #GstClockTime
+
+
+
+
+
+ Set the maximun duration of the object
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ the maximum duration in #GstClockTime
+
+
+
+
+
+ Sets the name of object, or gives @self a guaranteed unique name (if name is NULL).
+This function makes a copy of the provided name, so the caller retains ownership
+of the name it sent.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ The name @self should take (if avalaible<)
+
+
+
+
+
+ Sets the parent of @self to @parent. The parents needs to already
+own a hard reference on @self.
+
+ %TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ new parent of self
+
+
+
+
+
+ Sets the priority of the object within the containing layer
+ All priority management is done by GES itself now.
+To set #GESEffect priorities #ges_clip_set_top_effect_index should
+be used.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ the priority
+
+
+
+
+
+ Set the position of the object in its containing layer.
+
+Note that if the snapping-distance property of the timeline containing
+@self is set, @self will properly snap to the edges around @start.
+
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ the position in #GstClockTime
+
+
+
+
+
+ Sets the timeline of @self to @timeline.
+
+ %TRUE if @timeline could be set or %FALSE when @timeline
+already had a timeline.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ The #GESTimeline @self is in
+
+
+
+
+
+ Edits @self in trim mode. It allows you to modify the
+inpoint and start of @self.
+This will not change the overall timeline duration.
+
+Note that to trim the end of an self you can just set its duration. The same way
+as this method, it will take into account the snapping-distance property of the
+timeline in which @self is.
+
+ %TRUE if the self as been trimmed properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to trim.
+
+
+
+ The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly
+
+
+
+
+
+ The duration (in nanoseconds) which will be used in the container
+
+
+
+ The in-point at which this #GESTimelineElement 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.
+
+
+
+ The maximum duration (in nanoseconds) of the #GESTimelineElement.
+
+
+
+ The name of the object
+
+
+
+ The parent container of the object
+
+
+
+ The priority of the object.
+
+Setting GESTimelineElement priorities is deprecated
+as all priority management is done by GES itself now.
+
+
+
+ Whether the element should be serialized.
+
+
+
+ The position of the object in its container (in nanoseconds).
+
+
+
+ The timeline in which @element is
+
+
+
+
+
+
+ The #GESTimelineElement that controls the object
+
+
+
+ The #GESAsset from which the object has been extracted
+
+
+
+ position (in time) of the object
+
+
+
+ Position in the media from which the object should be used
+
+
+
+ duration of the object to be used
+
+
+
+ The maximum duration the object can have
+
+
+
+ priority of the object in the layer (0:top priority)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The deep notify signal is used to be notified of property changes of all
+the childs of @timeline_element
+
+
+
+
+
+ the object that originated the signal
+
+
+
+ the property that changed
+
+
+
+
+
+
+ The GESTimelineElement base class. Subclasses should override at least
+@set_start @set_inpoint @set_duration @ripple @ripple_end @roll_start
+@roll_end and @trim.
+
+Vmethods in subclasses should apply all the operation they need to but
+the real method implementation is in charge of setting the proper field,
+and emit the notify signal.
+
+
+
+
+
+
+ %TRUE if @parent could be set or %FALSE when @self
+already had a parent or @self and @parent are the same.
+
+
+
+
+ a #GESTimelineElement
+
+
+
+ new parent of self
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new start of @self in ripple mode.
+
+
+
+
+
+
+
+
+ %TRUE if the self as been rippled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to ripple.
+
+
+
+ The new end (start + duration) of @self in ripple mode. It will
+ basically only change the duration of @self.
+
+
+
+
+
+
+
+
+ %TRUE if the self as been roll properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll
+
+
+
+ The new start of @self in roll mode, it will also adapat
+the in-point of @self according
+
+
+
+
+
+
+
+
+ %TRUE if the self as been rolled properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to roll.
+
+
+
+ The new end (start + duration) of @self in roll mode
+
+
+
+
+
+
+
+
+ %TRUE if the self as been trimmed properly, %FALSE if an error
+occured
+
+
+
+
+ The #GESTimelineElement to trim.
+
+
+
+ The new start of @self in trim mode, will adapt the inpoint
+of @self accordingly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+
+
+
+
+
+
+
+ A #GESTimelineElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Renders the given text in the specified font, at specified position, and
+with the specified background pattern.
+
+
+
+ Creates a new #GESTitleClip
+
+ The newly created #GESTitleClip,
+or %NULL if there was an error.
+
+
+
+
+ Get the background used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The color used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the pango font description used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The pango font description used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the horizontal aligment used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The horizontal aligment used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the text currently set on @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The text currently set on @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the color used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The color used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the vertical aligment used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The vertical aligment used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the horizontal position used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The horizontal position used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Get the vertical position used by @self.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+ The vertical position used by @self.
+
+
+
+
+ a #GESTitleClip
+
+
+
+
+
+ Sets the background of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set
+
+
+
+ The color @self is being set to
+
+
+
+
+
+ Sets the color of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set
+
+
+
+ The color @self is being set to
+
+
+
+
+
+ Sets the pango font description of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip*
+
+
+
+ the pango font description
+
+
+
+
+
+ Sets the horizontal aligment of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set horizontal alignement of text on
+
+
+
+ #GESTextHAlign
+
+
+
+
+
+ Sets the text this clip will render.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set text on
+
+
+
+ the text to render. an internal copy of this text will be
+made.
+
+
+
+
+
+ Sets the vertical aligment of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set vertical alignement of text on
+
+
+
+ #GESTextVAlign
+
+
+
+
+
+ Sets the horizontal position of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set
+
+
+
+ The horizontal position @self is being set to
+
+
+
+
+
+ Sets the vertical position of the text.
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+ the #GESTitleClip* to set
+
+
+
+ The vertical position @self is being set to
+
+
+
+
+
+ The background of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ The color of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ Pango font description string
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ Horizontal alignment of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ The text to diplay
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ Vertical alignent of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ The horizontal position of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+ The vertical position of the text
+ use ges_track_element_get/set_children_properties on the
+underlying GESTrackElement instead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GESTitleSource is a GESTimelineElement that implements the notion
+of titles in GES.
+
+## Children Properties
+
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+<informaltable frame="none">
+<tgroup cols="3">
+<colspec colname="properties_type" colwidth="150px"/>
+<colspec colname="properties_name" colwidth="200px"/>
+<colspec colname="properties_flags" colwidth="400px"/>
+<tbody>
+<row>
+ <entry role="property_type"><link linkend="guint"><type>guint</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--background">background</link></entry>
+ <entry>The color of the background</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="guint"><type>guint</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--color">color</link></entry>
+ <entry>The color of the text</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gchar"><type>gchar</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--font-desc">font-desc</link></entry>
+ <entry>Pango font description string</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="GESTextHAlign"><type>GESTextHAlign</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--halignment">halignment</link></entry>
+ <entry>Horizontal alignment of the text</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gchar"><type>gchar</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--text">text</link></entry>
+ <entry>The text to be rendered</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="GESTextVAlign"><type>GESTextVAlign</type></link>
+ </entry><entry role="property_name"><link linkend="GESTileSource--valignment">valignment</link>
+ </entry><entry>Vertical alignent of the text</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gdouble"><type>gdouble</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--xpos">xpos</link></entry>
+ <entry>The horizontal position of the text</entry>
+</row>
+<row><entry role="property_type"><link linkend="gdouble"><type>gdouble</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--ypos">ypos</link></entry>
+ <entry>The vertical position of the text</entry>
+</row>
+<row><entry role="property_type"><link linkend="gboolean"><type>gboolean</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--shaded-background">shaded-background</link></entry>
+ <entry>Whether to shade the background under the text area</entry>
+</row>
+<row><entry role="property_type"><link linkend="guint"><type>guint</type></link></entry>
+ <entry role="property_name"><link linkend="GESTileSource--outline-color">outline-color</link></entry>
+ <entry>Color to use for outline the text (big-endian ARGB).</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+
+ Get the background used by @source.
+
+ The background used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the pango font description used by @source.
+
+ The pango font description used by this
+@source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the horizontal aligment used by @source.
+
+ The horizontal aligment used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the text currently set on the @source.
+
+ The text currently set on the @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the color used by @source.
+
+ The color used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the vertical aligment used by @source.
+
+ The vertical aligment used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the horizontal position used by @source.
+
+ The horizontal position used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Get the vertical position used by @source.
+
+ The vertical position used by @source.
+
+
+
+
+ a #GESTitleSource
+
+
+
+
+
+ Sets the color of the background
+
+
+
+
+
+ the #GESTitleSource* to set
+
+
+
+ the color @self is being set to
+
+
+
+
+
+ Set the pango font description this source will use to render
+the text.
+
+
+
+
+
+ the #GESTitleSource
+
+
+
+ the pango font description
+
+
+
+
+
+ Sets the vertical aligment of the text.
+
+
+
+
+
+ the #GESTitleSource* to set text on
+
+
+
+ #GESTextHAlign
+
+
+
+
+
+ Sets the text this track element will render.
+ use ges_track_element_get/set_children_properties on the
+GESTrackElement instead
+
+
+
+
+
+ the #GESTitleSource* to set text on
+
+
+
+ the text to render. an internal copy of this text will be
+made.
+
+
+
+
+
+ Sets the color of the text.
+
+
+
+
+
+ the #GESTitleSource* to set
+
+
+
+ the color @self is being set to
+
+
+
+
+
+ Sets the vertical aligment of the text.
+
+
+
+
+
+ the #GESTitleSource* to set text on
+
+
+
+ #GESTextVAlign
+
+
+
+
+
+ Sets the horizontal position of the text.
+
+
+
+
+
+ the #GESTitleSource* to set
+
+
+
+ the horizontal position @self is being set to
+
+
+
+
+
+ Sets the vertical position of the text.
+
+
+
+
+
+ the #GESTitleSource* to set
+
+
+
+ the color @self is being set to
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+
+
+ Corresponds to one output format (i.e. audio OR video).
+
+Contains the compatible TrackElement(s).
+
+
+
+ Creates a new #GESTrack with the given @type and @caps.
+
+The newly created track will steal a reference to the caps. If you wish to
+use those caps elsewhere, you will have to take an extra reference.
+
+ A new #GESTrack.
+
+
+
+
+ The type of track
+
+
+
+ The caps to restrict the output of the track to.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adds the given object to the track. Sets the object's controlling track,
+and thus takes ownership of the @object.
+
+An object can only be added to one track.
+
+ #TRUE if the object was properly added. #FALSE if the track does not
+want to accept the object.
+
+
+
+
+ a #GESTrack
+
+
+
+ the #GESTrackElement to add
+
+
+
+
+
+ Commits all the pending changes of the TrackElement contained in the
+track.
+
+When timing changes happen in a timeline, the changes are not
+directly done inside NLE. This method needs to be called so any changes
+on a clip contained in the timeline actually happen at the media
+processing level.
+
+ %TRUE if something as been commited %FALSE if nothing needed
+to be commited
+
+
+
+
+ a #GESTrack
+
+
+
+
+
+ Get the #GstCaps this track is configured to output.
+
+ The #GstCaps this track is configured to output.
+
+
+
+
+ a #GESTrack
+
+
+
+
+
+ Gets the #GESTrackElement contained in @track
+
+ the list of
+#GESTrackElement present in the Track sorted by priority and start.
+
+
+
+
+
+
+ a #GESTrack
+
+
+
+
+
+ Gets if the underlying #NleComposition contains an expandable mixer.
+
+ #True if there is a mixer, #False otherwise.
+
+
+
+
+ a #GESTrack
+
+
+
+
+
+ Get the #GESTimeline this track belongs to. Can be %NULL.
+
+ The #GESTimeline this track belongs to. Can be %NULL.
+
+
+
+
+ a #GESTrack
+
+
+
+
+
+ Removes the object from the track and unparents it.
+Unparenting it means the reference owned by @track on the @object will be
+removed. If you wish to use the @object after this function, make sure you
+call gst_object_ref() before removing it from the @track.
+
+ #TRUE if the object was removed, else #FALSE if the track
+could not remove the object (like if it didn't belong to the track).
+
+
+
+
+ a #GESTrack
+
+
+
+ the #GESTrackElement to remove
+
+
+
+
+
+ Sets the function that should be used to create the GstElement used to fill gaps.
+To avoid to provide such a function we advice you to use the
+#ges_audio_track_new and #ges_video_track_new constructor when possible.
+
+
+
+
+
+ a #GESTrack
+
+
+
+ The #GESCreateElementForGapFunc that will be used
+to create #GstElement to fill gaps
+
+
+
+
+
+ Sets if the #GESTrack should be mixing.
+
+
+
+
+
+ a #GESTrack
+
+
+
+ TRUE if the track should be mixing, FALSE otherwise.
+
+
+
+
+
+ Sets the given @caps as the caps the track has to output.
+
+
+
+
+
+ a #GESTrack
+
+
+
+ the #GstCaps to set
+
+
+
+
+
+ Sets @timeline as the timeline controlling @track.
+
+
+
+
+
+ a #GESTrack
+
+
+
+ a #GESTimeline
+
+
+
+
+
+ Updates the restriction caps by modifying all the fields present in @caps
+in the original restriction caps. If for example the current restriction caps
+are video/x-raw, format=I420, width=360 and @caps is video/x-raw, format=RGB,
+the restriction caps will be updated to video/x-raw, format=RGB, width=360.
+
+Modification happens for each structure in the new caps, and
+one can add new fields or structures through that function.
+
+
+
+
+
+ a #GESTrack
+
+
+
+ the #GstCaps to update with
+
+
+
+
+
+ Caps used to filter/choose the output stream. This is generally set to
+a generic set of caps like 'video/x-raw' for raw video.
+
+Default value: #GST_CAPS_ANY.
+
+
+
+ Current duration of the track
+
+Default value: O
+
+
+
+ Whether layer mixing is activated or not on the track.
+
+
+
+ Caps used to filter/choose the output stream.
+
+Default value: #GST_CAPS_ANY.
+
+
+
+ Type of stream the track outputs. This is used when creating the #GESTrack
+to specify in generic terms what type of content will be outputted.
+
+It also serves as a 'fast' way to check what type of data will be outputted
+from the #GESTrack without having to actually check the #GESTrack's caps
+property.
+
+
+
+
+
+
+ a #GESTrackType indicting the basic type of the track.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Will be emitted after a track element was added to the track.
+
+
+
+
+
+ the #GESTrackElement that was added.
+
+
+
+
+
+ Will be emitted after a track element was removed from the track.
+
+
+
+
+
+ the #GESTrackElement that was removed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #GESTrackElement 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 inpoint, the duration and the
+priority.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.
+ Use #ges_timeline_element_lookup_child
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+ Looks for the properties defines with the various parametters and add
+them to the hashtable of children properties.
+
+To be used by subclasses only
+
+
+
+
+
+ The #GESTrackElement to set chidlren props on
+
+
+
+ The GstElement to retrieve properties from
+
+
+
+
+An array of categories of GstElement to
+take into account (as defined in the factory meta "klass" field)
+
+
+
+
+
+ A
+blacklist of elements factory names to not take into account
+
+
+
+
+
+ A list
+of propery names to add as children properties
+
+
+
+
+
+
+
+ Edit @object in the different exisiting #GESEditMode modes. In the case of
+slide, and roll, you need to specify a #GESEdge
+
+ %TRUE if the object as been edited properly, %FALSE if an error
+occured
+
+
+
+
+ the #GESTrackElement to edit
+
+
+
+ The layers you want the edit to
+ happen in, %NULL means that the edition is done in all the
+ #GESLayers contained in the current timeline.
+ FIXME: This is not implemented yet.
+
+
+
+
+
+ The #GESEditMode in which the edition will happen.
+
+
+
+ The #GESEdge the edit should happen on.
+
+
+
+ The position at which to edit @object (in nanosecond)
+
+
+
+
+
+
+ A
+#GHashTable containing all property_name: GstControlBinding
+
+
+
+
+
+
+
+ The #TrackElement from which to get all set bindings
+
+
+
+
+
+ Gets properties of a child of @object.
+ Use #ges_timeline_element_get_child_properties
+
+
+
+
+
+ The origin #GESTrackElement
+
+
+
+ The name of the first property to get
+
+
+
+ return location for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ In general, a copy is made of the property contents and
+the caller is responsible for freeing the memory by calling
+g_value_unset().
+
+Gets a property of a GstElement contained in @object.
+
+Note that #ges_track_element_get_child_property is really
+intended for language bindings, #ges_track_element_get_child_properties
+is much more convenient for C programming.
+ Use #ges_timeline_element_get_child_property
+
+ %TRUE if the property was found, %FALSE otherwize
+
+
+
+
+ The origin #GESTrackElement
+
+
+
+ The name of the property
+
+
+
+ return location for the property value, it will
+be initialized if it is initialized with 0
+
+
+
+
+
+ Gets a property of a child of @object.
+ Use #ges_timeline_element_get_child_property_by_pspec
+
+
+
+
+
+ a #GESTrackElement
+
+
+
+ The #GParamSpec that specifies the property you want to get
+
+
+
+ return location for the value
+
+
+
+
+
+ Gets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+ Use #ges_timeline_element_get_child_property_valist
+
+
+
+
+
+ The #GESTrackElement parent object
+
+
+
+ The name of the first property to get
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ Looks up the various controlled properties for that #GESTrackElement,
+and returns the #GstControlBinding which controls @property_name.
+
+ the #GstControlBinding associated with
+@property_name, or %NULL if that property is not controlled.
+
+
+
+
+ the #GESTrackElement in which to lookup the bindings.
+
+
+
+ The property_name to which the binding is associated.
+
+
+
+
+
+ Get the #GstElement this track element is controlling within GNonLin.
+
+ the #GstElement this track element is controlling
+within GNonLin.
+
+
+
+
+ a #GESTrackElement
+
+
+
+
+
+ Get the NleObject object this object is controlling.
+ use #ges_track_element_get_nleobject instead.
+
+ the NleObject object this object is controlling.
+
+
+
+
+ a #GESTrackElement
+
+
+
+
+
+ Get the GNonLin object this object is controlling.
+
+ the GNonLin object this object is controlling.
+
+
+
+
+ a #GESTrackElement
+
+
+
+
+
+ Get the #GESTrack to which this object belongs.
+
+ The #GESTrack to which this object
+belongs. Can be %NULL if it is not in any track
+
+
+
+
+ a #GESTrackElement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lets you know if @object will be used for playback and rendering,
+or not.
+
+ %TRUE if @object is active, %FALSE otherwize
+
+
+
+
+ a #GESTrackElement
+
+
+
+
+
+ Gets an array of #GParamSpec* for all configurable properties of the
+children of @object.
+ Use #ges_timeline_element_list_children_properties
+
+ an array of #GParamSpec* which should be freed after use or
+%NULL if something went wrong
+
+
+
+
+
+
+ The #GESTrackElement to get the list of children properties from
+
+
+
+ return location for the length of the returned array
+
+
+
+
+
+ Looks up which @element and @pspec would be effected by the given @name. If various
+contained elements have this property name you will get the first one, unless you
+specify the class name in @name.
+ Use #ges_timeline_element_lookup_child
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+ Removes a #GstControlBinding from @object.
+
+ %TRUE if the binding could be removed, %FALSE if an error
+occured
+
+
+
+
+ the #GESTrackElement on which to set a control binding
+
+
+
+ The name of the property to control.
+
+
+
+
+
+ Sets the usage of the @object. If @active is %TRUE, the object will be used for
+playback and rendering, else it will be ignored.
+
+ %TRUE if the property was toggled, else %FALSE
+
+
+
+
+ a #GESTrackElement
+
+
+
+ visibility
+
+
+
+
+
+ Sets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+ Use #ges_timeline_element_set_child_properties
+
+
+
+
+
+ The #GESTrackElement parent object
+
+
+
+ The name of the first property to set
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ Sets a property of a GstElement contained in @object.
+
+Note that #ges_track_element_set_child_property is really
+intended for language bindings, #ges_track_element_set_child_properties
+is much more convenient for C programming.
+ use #ges_timeline_element_set_child_property instead
+
+ %TRUE if the property was set, %FALSE otherwize
+
+
+
+
+ The origin #GESTrackElement
+
+
+
+ The name of the property
+
+
+
+ the value
+
+
+
+
+
+ Sets a property of a child of @object.
+ Use #ges_timeline_element_set_child_property_by_spec
+
+
+
+
+
+ a #GESTrackElement
+
+
+
+ The #GParamSpec that specifies the property you want to set
+
+
+
+ the value
+
+
+
+
+
+ Sets a property of a child of @object. If there are various child elements
+that have the same property name, you can distinguish them using the following
+syntax: 'ClasseName::property_name' as property name. If you don't, the
+corresponding property of the first element found will be set.
+ Use #ges_timeline_element_set_child_property_valist
+
+
+
+
+
+ The #GESTrackElement parent object
+
+
+
+ The name of the first property to set
+
+
+
+ value for the first property, followed optionally by more
+name/return location pairs, followed by NULL
+
+
+
+
+
+ Creates a #GstControlBinding and adds it to the #GstElement concerned by the
+property. Use the same syntax as #ges_track_element_lookup_child for
+the property name.
+
+ %TRUE if the binding could be created and added, %FALSE if an error
+occured
+
+
+
+
+ the #GESTrackElement on which to set a control binding
+
+
+
+ the #GstControlSource to set on the binding.
+
+
+
+ The name of the property to control.
+
+
+
+ The type of binding to create. Only "direct" is available for now.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The control-binding-added signal is emitted each time a control binding
+is added for a child property of @track_element
+
+
+
+
+
+ the #GstControlBinding that has been added
+
+
+
+
+
+ The control-binding-removed signal is emitted each time a control binding
+is removed for a child property of @track_element
+
+
+
+
+
+ the #GstControlBinding that has been removed
+
+
+
+
+
+
+
+
+
+
+ Get the GESAssetTrackType the #GESTrackElement extracted from @self
+should get into
+
+ a #GESTrackType
+
+
+
+
+ A #GESAssetObject
+
+
+
+
+
+ Set the #GESAssetTrackType the #GESTrackElement extracted from @self
+should get into
+
+
+
+
+
+ A #GESAssetObject
+
+
+
+ A #GESTrackType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Subclasses can override the @create_gnl_object method to override what type
+of GNonLin object will be created.
+
+
+
+
+ name of the GNonLin GStElementFactory type to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRUE if @element and @pspec could be found. FALSE otherwise. In that
+case the values for @pspec and @element are not modified. Unref @element after
+usage.
+
+
+
+
+ object to lookup the property in
+
+
+
+ name of the property to look up. You can specify the name of the
+ class as such: "ClassName::property-name", to guarantee that you get the
+ proper GParamSpec in case various GstElement-s contain the same property
+ name. If you don't do so, you will get the first element found, having
+ this property and the and the corresponding GParamSpec.
+
+
+
+ pointer to a #GstElement that
+ takes the real object to set property on
+
+
+
+ pointer to take the #GParamSpec
+ describing the property
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Types of content handled by a track. If the content is not one of
+@GES_TRACK_TYPE_AUDIO, @GES_TRACK_TYPE_VIDEO or @GES_TRACK_TYPE_TEXT,
+the user of the #GESTrack must set the type to @GES_TRACK_TYPE_CUSTOM.
+
+@GES_TRACK_TYPE_UNKNOWN is for internal purposes and should not be used
+by users
+
+ A track of unknown type (i.e. invalid)
+
+
+ An audio track
+
+
+ A video track
+
+
+ A text (subtitle) track
+
+
+ A custom-content track
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for media transitions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates an object that mixes together the two underlying objects, A and B.
+The A object is assumed to have a higher prioirity (lower number) than the
+B object. At the transition in point, only A will be visible, and by the
+end only B will be visible.
+
+The shape of the video transition depends on the value of the "vtype"
+property. The default value is "crossfade". For audio, only "crossfade" is
+supported.
+
+The ID of the ExtractableType is the nickname of the vtype property value. Note
+that this value can be changed after creation and the GESExtractable.asset value
+will be updated when needed.
+
+
+
+ Creates a new #GESTransitionClip.
+
+ a newly created #GESTransitionClip,
+or %NULL if something went wrong.
+
+
+
+
+ the type of transition to create
+
+
+
+
+
+ Creates a new #GESTransitionClip for the provided @nick.
+
+ The newly created #GESTransitionClip,
+or %NULL if something went wrong
+
+
+
+
+ a string representing the type of transition to create
+
+
+
+
+
+ a #GESVideoStandardTransitionType representing the wipe to use
+
+
+
+
+
+
+ a #GESVideoStandardTransitionType indicating the type of video transition
+to apply.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents all the output streams from a particular uri. It is assumed that
+the URI points to a file of some type.
+
+
+
+ Creates a new #GESUriClip for the provided @uri.
+
+ The newly created #GESUriClip, or
+%NULL if there was an error.
+
+
+
+
+ the URI the source should control
+
+
+
+
+
+ Get the location of the resource.
+
+ The location of the resource.
+
+
+
+
+ the #GESUriClip
+
+
+
+
+
+ Lets you know if @self is an image or not.
+
+ %TRUE if @self is a still image %FALSE otherwise.
+
+
+
+
+ the #GESUriClip
+
+
+
+
+
+ Lets you know if the audio track of @self is muted or not.
+
+ %TRUE if the audio track of @self is muted, %FALSE otherwise.
+
+
+
+
+ the #GESUriClip
+
+
+
+
+
+ Sets whether the clip is a still image or not.
+
+
+
+
+
+ the #GESUriClip
+
+
+
+ %TRUE if @self is a still image, %FALSE otherwise
+
+
+
+
+
+ Sets whether the audio track of this clip is muted or not.
+
+
+
+
+
+ the #GESUriClip on which to mute or unmute the audio track
+
+
+
+ %TRUE to mute @self audio track, %FALSE to unmute it
+
+
+
+
+
+ Whether this uri clip represents a still image or not. This must be set
+before create_track_elements is called.
+
+
+
+ Whether the sound will be played or not.
+
+
+
+
+
+
+ The location of the file/resource to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The #GESUriClipAsset is a special #GESAsset that lets you handle
+the media file to use inside the GStreamer Editing Services. It has APIs that
+let you get information about the medias. Also, the tags found in the media file are
+set as Metadatas of the Asser.
+
+
+
+
+ Creates a #GESUriClipAsset for @uri
+
+Example of request of a GESUriClipAsset:
+|[
+// The request callback
+static void
+filesource_asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
+{
+ GError *error = NULL;
+ GESUriClipAsset *filesource_asset;
+
+ filesource_asset = GES_URI_CLIP_ASSET (ges_asset_request_finish (res, &error));
+ if (filesource_asset) {
+ g_print ("The file: %s is usable as a FileSource, it is%s an image and lasts %" GST_TIME_FORMAT,
+ ges_asset_get_id (GES_ASSET (filesource_asset))
+ ges_uri_clip_asset_is_image (filesource_asset) ? "" : " not",
+ GST_TIME_ARGS (ges_uri_clip_asset_get_duration (filesource_asset));
+ } else {
+ g_print ("The file: %s is *not* usable as a FileSource because: %s",
+ ges_asset_get_id (source), error->message);
+ }
+
+ gst_object_unref (mfs);
+}
+
+// The request:
+ges_uri_clip_asset_new (uri, (GAsyncReadyCallback) filesource_asset_loaded_cb, user_data);
+]|
+
+
+
+
+
+ The URI of the file for which to create a #GESUriClipAsset
+
+
+
+ optional %GCancellable object, %NULL to ignore.
+
+
+
+ a #GAsyncReadyCallback to call when the initialization is finished
+
+
+
+ The user data to pass when @callback is called
+
+
+
+
+
+ Creates a #GESUriClipAsset for @uri syncronously. You should avoid
+to use it in application, and rather create #GESUriClipAsset asynchronously
+
+ A reference to the requested asset or
+%NULL if an error happened
+
+
+
+
+ The URI of the file for which to create a #GESUriClipAsset.
+You can also use multi file uris for #GESMultiFileSource.
+
+
+
+
+
+ Gets duration of the file represented by @self
+
+ The duration of @self
+
+
+
+
+ a #GESUriClipAsset
+
+
+
+
+
+ Gets #GstDiscovererInfo about the file
+
+ #GstDiscovererInfo of specified asset
+
+
+
+
+ Target asset
+
+
+
+
+
+ Get the GESUriSourceAsset @self containes
+
+ a
+#GList of #GESUriSourceAsset
+
+
+
+
+
+
+ A #GESUriClipAsset
+
+
+
+
+
+ Gets Whether the file represented by @self is an image or not
+
+ Whether the file represented by @self is an image or not
+
+
+
+
+ a #indent: Standard input:311: Error:Unexpected end of file
+GESUriClipAsset
+
+
+
+
+
+ The duration (in nanoseconds) of the media file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets the timeout of #GESUriClipAsset loading
+
+
+
+
+
+ The #GESUriClipAssetClass on which to set the discoverer timeout
+
+
+
+ The timeout to set
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NOTE: You should never request such a #GESAsset as they will be created automatically
+by #GESUriClipAsset-s.
+
+
+
+
+ Get the #GESUriClipAsset @self is contained in
+
+ a #GESUriClipAsset
+
+
+
+
+ A #GESUriClipAsset
+
+
+
+
+
+ Get the #GstDiscovererStreamInfo user by @asset
+
+ a #GESUriClipAsset
+
+
+
+
+ A #GESUriClipAsset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Children Properties:
+You can use the following children properties through the
+#ges_track_element_set_child_property and alike set of methods:
+
+<informaltable frame="none">
+<tgroup cols="3">
+<colspec colname="properties_type" colwidth="150px"/>
+<colspec colname="properties_name" colwidth="200px"/>
+<colspec colname="properties_flags" colwidth="400px"/>
+<tbody>
+<row>
+ <entry role="property_type"><link linkend="gdouble"><type>double</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--alpha">alpha</link></entry>
+ <entry>The desired alpha for the stream.</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--posx">posx</link></entry>
+ <entry>The desired x position for the stream.</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--posy">posy</link></entry>
+ <entry>The desired y position for the stream</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--width">width</link></entry>
+ <entry>The desired width for that source. Set to 0 if size is not mandatory, will be set to width of the current track.</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="gint"><type>gint</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--height">height</link></entry>
+ <entry>The desired height for that source. Set to 0 if size is not mandatory, will be set to height of the current track.</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="GstDeinterlaceModes"><type>GstDeinterlaceModes</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--deinterlace-mode">deinterlace-mode</link></entry>
+ <entry>Deinterlace Mode</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="GstDeinterlaceFields"><type>GstDeinterlaceFields</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--deinterlace-fields">deinterlace-fields</link></entry>
+ <entry>Fields to use for deinterlacing</entry>
+</row>
+<row>
+ <entry role="property_type"><link linkend="GstDeinterlaceFieldLayout"><type>GstDeinterlaceFieldLayout</type></link></entry>
+ <entry role="property_name"><link linkend="GESVideoSource--deinterlace-tff">deinterlace-tff</link></entry>
+ <entry>Deinterlace top field first</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Transition type has not been set,
+
+
+ A bar moves from left to right,
+
+
+ A bar moves from top to bottom,
+
+
+ A box expands from the upper-left corner to the lower-right corner,
+
+
+ A box expands from the upper-right corner to the lower-left corner,
+
+
+ A box expands from the lower-right corner to the upper-left corner,
+
+
+ A box expands from the lower-left corner to the upper-right corner,
+
+
+ A box shape expands from each of the four corners toward the center,
+
+
+ A box shape expands from the center of each quadrant toward the corners of each quadrant,
+
+
+ A central, vertical line splits and expands toward the left and right edges,
+
+
+ A central, horizontal line splits and expands toward the top and bottom edges,
+
+
+ A box expands from the top edge's midpoint to the bottom corners,
+
+
+ A box expands from the right edge's midpoint to the left corners,
+
+
+ A box expands from the bottom edge's midpoint to the top corners,
+
+
+ A box expands from the left edge's midpoint to the right corners,
+
+
+ A diagonal line moves from the upper-left corner to the lower-right corner,
+
+
+ A diagonal line moves from the upper right corner to the lower-left corner,
+
+
+ Two wedge shapes slide in from the top and bottom edges toward the center,
+
+
+ Two wedge shapes slide in from the left and right edges toward the center,
+
+
+ A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners,
+
+
+ A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners,
+
+
+ Four wedge shapes split from the center and retract toward the four edges,
+
+
+ A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges,
+
+
+ A wedge shape moves from top to bottom,
+
+
+ A wedge shape moves from right to left,
+
+
+ A wedge shape moves from bottom to top,
+
+
+ A wedge shape moves from left to right,
+
+
+ A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
+
+
+ A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
+
+
+ A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
+
+
+ A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges,
+
+
+ A rectangle expands from the center.,
+
+
+ A radial hand sweeps clockwise from the twelve o'clock position,
+
+
+ A radial hand sweeps clockwise from the three o'clock position,
+
+
+ A radial hand sweeps clockwise from the six o'clock position,
+
+
+ A radial hand sweeps clockwise from the nine o'clock position,
+
+
+ Two radial hands sweep clockwise from the twelve and six o'clock positions,
+
+
+ Two radial hands sweep clockwise from the nine and three o'clock positions,
+
+
+ Four radial hands sweep clockwise,
+
+
+ A fan unfolds from the top edge, the fan axis at the center,
+
+
+ A fan unfolds from the right edge, the fan axis at the center,
+
+
+ Two fans, their axes at the center, unfold from the top and bottom,
+
+
+ Two fans, their axes at the center, unfold from the left and right,
+
+
+ A radial hand sweeps clockwise from the top edge's midpoint,
+
+
+ A radial hand sweeps clockwise from the right edge's midpoint,
+
+
+ A radial hand sweeps clockwise from the bottom edge's midpoint,
+
+
+ A radial hand sweeps clockwise from the left edge's midpoint,
+
+
+ Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints,
+
+
+ Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints,
+
+
+ Two radial hands attached at the top and bottom edges' midpoints sweep from right to left,
+
+
+ Two radial hands attached at the left and right edges' midpoints sweep from top to bottom,
+
+
+ A fan unfolds from the bottom, the fan axis at the top edge's midpoint,
+
+
+ A fan unfolds from the left, the fan axis at the right edge's midpoint,
+
+
+ A fan unfolds from the top, the fan axis at the bottom edge's midpoint,
+
+
+ A fan unfolds from the right, the fan axis at the left edge's midpoint,
+
+
+ Two fans, their axes at the top and bottom, unfold from the center,
+
+
+ Two fans, their axes at the left and right, unfold from the center,
+
+
+ A radial hand sweeps clockwise from the upper-left corner,
+
+
+ A radial hand sweeps counter-clockwise from the lower-left corner.,
+
+
+ A radial hand sweeps clockwise from the lower-right corner,
+
+
+ A radial hand sweeps counter-clockwise from the upper-right corner,
+
+
+ Two radial hands attached at the upper-left and lower-right corners sweep down and up,
+
+
+ Two radial hands attached at the lower-left and upper-right corners sweep down and up,
+
+
+ Two radial hands attached at the upper-left and upper-right corners sweep down,
+
+
+ Two radial hands attached at the upper-left and lower-left corners sweep to the right,
+
+
+ Two radial hands attached at the lower-left and lower-right corners sweep up,
+
+
+ Two radial hands attached at the upper-right and lower-right corners sweep to the left,
+
+
+ Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left,
+
+
+ Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom,
+
+
+ Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top,
+
+
+ Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left,
+
+
+ Crossfade
+
+
+
+ The test pattern to produce
+
+ A standard SMPTE test pattern
+
+
+ Random noise
+
+
+ A black image
+
+
+ A white image
+
+
+ A red image
+
+
+ A green image
+
+
+ A blue image
+
+
+ Checkers pattern (1px)
+
+
+ Checkers pattern (2px)
+
+
+ Checkers pattern (4px)
+
+
+ Checkers pattern (8px)
+
+
+ Circular pattern
+
+
+ Alternate between black and white
+
+
+ SMPTE test pattern (75% color bars)
+
+
+ Zone plate
+
+
+ Gamut checkers
+
+
+ Chroma zone plate
+
+
+ Solid color
+
+
+
+
+
+
+ Get the video pattern used by the @source.
+
+ The video pattern used by the @source.
+
+
+
+
+ a #GESVideoTestPattern
+
+
+
+
+
+ Sets the source to use the given @pattern.
+
+
+
+
+
+ a #GESVideoTestSource
+
+
+
+ a #GESVideoTestPattern
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new #GESVideoTrack of type #GES_TRACK_TYPE_VIDEO and with generic
+raw video caps ("video/x-raw");
+
+ A new #GESTrack.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new #GESVideoTransition.
+
+ The newly created
+#GESVideoTransition, or %NULL if there was an error.
+
+
+
+
+ Get the border property of @self, this value represents
+the border width of the transition.
+
+ The border values of @self or -1 if not meaningful
+(this will happen when not using a smpte transition).
+
+
+
+
+ The #GESVideoTransition to get the border from
+
+
+
+
+
+ Get the transition type used by @trans.
+
+ The transition type used by @trans.
+
+
+
+
+ a #GESVideoTransition
+
+
+
+
+
+ Get the invert property of @self, this value represents
+the direction of the transition.
+
+ The invert value of @self
+
+
+
+
+ The #GESVideoTransition to get the inversion from
+
+
+
+
+
+ Set the border property of @self, this value represents
+the border width of the transition. In case this value does
+not make sense for the current transition type, it is cached
+for later use.
+
+
+
+
+
+ The #GESVideoTransition to set the border to
+
+
+
+ The value of the border to set on @object
+
+
+
+
+
+ Set the invert property of @self, this value represents
+the direction of the transition. In case this value does
+not make sense for the current transition type, it is cached
+for later use.
+
+
+
+
+
+ The #GESVideoTransition to set invert on
+
+
+
+ %TRUE if the transition should be inverted %FALSE otherwise
+
+
+
+
+
+ Sets the transition being used to @type.
+
+ %TRUE if the transition type was properly changed, else %FALSE.
+
+
+
+
+ a #GESVideoTransition
+
+
+
+ a #GESVideoStandardTransitionType
+
+
+
+
+
+ This value represents the border width of the transition.
+
+
+
+ This value represents the direction of the transition.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ parent class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The location of the file/resource to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Clean up any resources created by GES in ges_init().
+
+It is normally not needed to call this function in a normal application as the
+resources will automatically be freed when the program terminates.
+This function is therefore mostly used by testsuites and other memory profiling tools.
+
+After this call GES (including this method) should not be used anymore.
+
+
+
+
+
+ Initialize the GStreamer Editing Service. Call this before any usage of
+GES. You should take care of initilizing GStreamer before calling this
+function.
+
+
+
+
+
+ Initializes the GStreamer Editing Services library, setting up internal path lists,
+and loading evrything needed.
+
+This function will return %FALSE if GES could not be initialized
+for some reason.
+
+ %TRUE if GES could be initialized.
+
+
+
+
+ pointer to application's argc
+
+
+
+ pointer to application's argv
+
+
+
+
+
+
+
+ Returns a #GOptionGroup with GES's argument specifications. The
+group is set up to use standard GOption callbacks, so when using this
+group in combination with GOption parsing methods, all argument parsing
+and initialization is automated.
+
+This function is useful if you want to integrate GES with other
+libraries that use GOption (see g_option_context_add_group() ).
+
+If you use this function, you should make sure you initialise the GStreamer
+as one of the very first things in your program. That means you need to
+use gst_init_get_option_group() and add it to the option context before
+using the ges_init_get_option_group() result.
+
+ a pointer to GES's option group.
+
+
+
+
+ List all @asset filtering per filter as defined by @filter.
+It copies the asset and thus will not be updated in time.
+
+ The list of
+#GESAsset the object contains
+
+
+
+
+
+
+ Type of assets to list, #GES_TYPE_EXTRACTABLE will list
+all assets
+
+
+
+
+
+ Get the last buffer @playsink showed
+
+ A #GstSample containing the last frame from
+@playsink in the format defined by the @caps
+
+
+
+
+ The playsink to get last frame from
+
+
+
+ The caps defining the format the return value will have
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the version number of the GStreamer Editing Services library.
+
+
+
+
+
+ pointer to a guint to store the major version number
+
+
+
+ pointer to a guint to store the minor version number
+
+
+
+ pointer to a guint to store the micro version number
+
+
+
+ pointer to a guint to store the nano version number
+
+
+
+
+
+
diff --git a/gstreamer-editing-services-sys/Cargo.build b/gstreamer-editing-services-sys/Cargo.build
new file mode 100644
index 000000000..e69de29bb
diff --git a/gstreamer-editing-services-sys/Cargo.toml b/gstreamer-editing-services-sys/Cargo.toml
new file mode 100644
index 000000000..9691d15ac
--- /dev/null
+++ b/gstreamer-editing-services-sys/Cargo.toml
@@ -0,0 +1,56 @@
+[badges.travis-ci]
+branch = "master"
+repository = "sdroege/gstreamer-sys"
+
+[build-dependencies]
+pkg-config = "0.3.7"
+
+[dependencies]
+libc = "0.2"
+
+[dependencies.gio-sys]
+git = "https://github.com/gtk-rs/sys"
+
+[dependencies.glib-sys]
+git = "https://github.com/gtk-rs/sys"
+
+[dependencies.gobject-sys]
+git = "https://github.com/gtk-rs/sys"
+
+[dependencies.gstreamer-base-sys]
+path = "../gstreamer-base-sys"
+
+[dependencies.gstreamer-pbutils-sys]
+path = "../gstreamer-pbutils-sys"
+
+[dependencies.gstreamer-sys]
+path = "../gstreamer-sys"
+
+[dev-dependencies]
+shell-words = "0.1.0"
+tempdir = "0.3"
+
+[features]
+dox = []
+v1_6 = []
+v1_8 = ["v1_6"]
+v1_10 = ["v1_8"]
+v1_12 = ["v1_10"]
+v1_14 = ["v1_12"]
+v1_16 = ["v1_14"]
+
+[lib]
+name = "gstreamer_editing_services_sys"
+
+[package]
+authors = ["Thibault Saunier ", "Sebastian Dröge "]
+build = "build.rs"
+description = "FFI bindings to libges-1.0"
+homepage = "https://gstreamer.freedesktop.org"
+keywords = ["ffi", "gstreamer", "gnome", "multimedia", "nle"]
+license = "MIT"
+links = "ges-1.0"
+name = "gstreamer-editing-services-sys"
+readme = "README.md"
+repository = "https://github.com/sdroege/gstreamer-sys"
+version = "0.7.0"
diff --git a/gstreamer-editing-services-sys/README.md b/gstreamer-editing-services-sys/README.md
new file mode 100644
index 000000000..d7415158b
--- /dev/null
+++ b/gstreamer-editing-services-sys/README.md
@@ -0,0 +1,31 @@
+# gstreamer-editing-services-sys [![crates.io](https://img.shields.io/crates/v/gstreamer-sys.svg)](https://crates.io/crates/gstreamer-sys) [![Build Status](https://travis-ci.org/sdroege/gstreamer-sys.svg?branch=master)](https://travis-ci.org/sdroege/gstreamer-sys)
+
+[GStreamer](https://gstreamer.freedesktop.org/) (Editing Services) FFI bindings for Rust.
+
+These bindings are providing unsafe FFI API that can be used to interface with
+GStreamer. Generally they are meant to be used as the building block for
+higher-level abstractions like:
+
+ * Application-side bindings for GStreamer: https://github.com/sdroege/gstreamer-rs
+ * Crate for writing GStreamer plugins in Rust: https://github.com/sdroege/gst-plugin-rs
+
+The bindings are autogenerated with [gir](https://github.com/gtk-rs/gir/)
+based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/)
+API metadata provided by the GStreamer project.
+
+## LICENSE
+
+gstreamer-sys and all crates contained here are licensed under the MIT
+license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT).
+
+GStreamer itself is licensed under the Lesser General Public License version
+2.1 or (at your option) any later version:
+https://www.gnu.org/licenses/lgpl-2.1.html
+
+## Contribution
+
+Any kinds of contributions are welcome as a pull request.
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in gstreamer-rs by you shall be licensed under the MIT license as above,
+without any additional terms or conditions.
diff --git a/gstreamer-editing-services-sys/build.rs b/gstreamer-editing-services-sys/build.rs
new file mode 100644
index 000000000..7a02cce8a
--- /dev/null
+++ b/gstreamer-editing-services-sys/build.rs
@@ -0,0 +1,72 @@
+extern crate pkg_config;
+
+use pkg_config::{Config, Error};
+use std::env;
+use std::io::prelude::*;
+use std::io;
+use std::process;
+
+fn main() {
+ if let Err(s) = find() {
+ let _ = writeln!(io::stderr(), "{}", s);
+ process::exit(1);
+ }
+}
+
+fn find() -> Result<(), Error> {
+ let package_name = "gst-editing-services-1.0";
+ let shared_libs = ["ges-1.0"];
+ let version = if cfg!(feature = "v1_14") {
+ "1.14"
+ } else if cfg!(feature = "v1_12") {
+ "1.12"
+ } else if cfg!(feature = "v1_10") {
+ "1.10"
+ } else if cfg!(feature = "v1_8") {
+ "1.8"
+ } else if cfg!(feature = "v1_6") {
+ "1.6"
+ } else {
+ "1.0"
+ };
+
+ if let Ok(lib_dir) = env::var("GTK_LIB_DIR") {
+ for lib_ in shared_libs.iter() {
+ println!("cargo:rustc-link-lib=dylib={}", lib_);
+ }
+ println!("cargo:rustc-link-search=native={}", lib_dir);
+ return Ok(())
+ }
+
+ let target = env::var("TARGET").expect("TARGET environment variable doesn't exist");
+ let hardcode_shared_libs = target.contains("windows");
+
+ let mut config = Config::new();
+ config.atleast_version(version);
+ config.print_system_libs(false);
+ if hardcode_shared_libs {
+ config.cargo_metadata(false);
+ }
+ match config.probe(package_name) {
+ Ok(library) => {
+ if hardcode_shared_libs {
+ for lib_ in shared_libs.iter() {
+ println!("cargo:rustc-link-lib=dylib={}", lib_);
+ }
+ for path in library.link_paths.iter() {
+ println!("cargo:rustc-link-search=native={}",
+ path.to_str().expect("library path doesn't exist"));
+ }
+ }
+ Ok(())
+ }
+ Err(Error::EnvNoPkgConfig(_)) | Err(Error::Command { .. }) => {
+ for lib_ in shared_libs.iter() {
+ println!("cargo:rustc-link-lib=dylib={}", lib_);
+ }
+ Ok(())
+ }
+ Err(err) => Err(err),
+ }
+}
+
diff --git a/gstreamer-editing-services-sys/src/lib.rs b/gstreamer-editing-services-sys/src/lib.rs
new file mode 100644
index 000000000..d8fa8a6fd
--- /dev/null
+++ b/gstreamer-editing-services-sys/src/lib.rs
@@ -0,0 +1,3237 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ f5fca82)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
+#![cfg_attr(feature = "cargo-clippy", allow(approx_constant, type_complexity, unreadable_literal))]
+
+extern crate libc;
+extern crate glib_sys as glib;
+extern crate gobject_sys as gobject;
+extern crate gio_sys as gio;
+extern crate gstreamer_sys as gst;
+extern crate gstreamer_base_sys as gst_base;
+extern crate gstreamer_pbutils_sys as gst_pbutils;
+
+#[allow(unused_imports)]
+use libc::{c_int, c_char, c_uchar, c_float, c_uint, c_double,
+ c_short, c_ushort, c_long, c_ulong,
+ c_void, size_t, ssize_t, intptr_t, uintptr_t, time_t, FILE};
+
+#[allow(unused_imports)]
+use glib::{gboolean, gconstpointer, gpointer, GType};
+
+// Enums
+pub type GESAssetLoadingReturn = c_int;
+pub const GES_ASSET_LOADING_ERROR: GESAssetLoadingReturn = 0;
+pub const GES_ASSET_LOADING_ASYNC: GESAssetLoadingReturn = 1;
+pub const GES_ASSET_LOADING_OK: GESAssetLoadingReturn = 2;
+
+pub type GESChildrenControlMode = c_int;
+pub const GES_CHILDREN_UPDATE: GESChildrenControlMode = 0;
+pub const GES_CHILDREN_IGNORE_NOTIFIES: GESChildrenControlMode = 1;
+pub const GES_CHILDREN_UPDATE_OFFSETS: GESChildrenControlMode = 2;
+pub const GES_CHILDREN_UPDATE_ALL_VALUES: GESChildrenControlMode = 3;
+pub const GES_CHILDREN_LAST: GESChildrenControlMode = 4;
+
+pub type GESEdge = c_int;
+pub const GES_EDGE_START: GESEdge = 0;
+pub const GES_EDGE_END: GESEdge = 1;
+pub const GES_EDGE_NONE: GESEdge = 2;
+
+pub type GESEditMode = c_int;
+pub const GES_EDIT_MODE_NORMAL: GESEditMode = 0;
+pub const GES_EDIT_MODE_RIPPLE: GESEditMode = 1;
+pub const GES_EDIT_MODE_ROLL: GESEditMode = 2;
+pub const GES_EDIT_MODE_TRIM: GESEditMode = 3;
+pub const GES_EDIT_MODE_SLIDE: GESEditMode = 4;
+
+pub type GESError = c_int;
+pub const GES_ERROR_ASSET_WRONG_ID: GESError = 0;
+pub const GES_ERROR_ASSET_LOADING: GESError = 1;
+pub const GES_ERROR_FORMATTER_MALFORMED_INPUT_FILE: GESError = 2;
+
+pub type GESTextHAlign = c_int;
+pub const GES_TEXT_HALIGN_LEFT: GESTextHAlign = 0;
+pub const GES_TEXT_HALIGN_CENTER: GESTextHAlign = 1;
+pub const GES_TEXT_HALIGN_RIGHT: GESTextHAlign = 2;
+pub const GES_TEXT_HALIGN_POSITION: GESTextHAlign = 4;
+pub const GES_TEXT_HALIGN_ABSOLUTE: GESTextHAlign = 5;
+
+pub type GESTextVAlign = c_int;
+pub const GES_TEXT_VALIGN_BASELINE: GESTextVAlign = 0;
+pub const GES_TEXT_VALIGN_BOTTOM: GESTextVAlign = 1;
+pub const GES_TEXT_VALIGN_TOP: GESTextVAlign = 2;
+pub const GES_TEXT_VALIGN_POSITION: GESTextVAlign = 3;
+pub const GES_TEXT_VALIGN_CENTER: GESTextVAlign = 4;
+pub const GES_TEXT_VALIGN_ABSOLUTE: GESTextVAlign = 5;
+
+pub type GESVideoStandardTransitionType = c_int;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_NONE: GESVideoStandardTransitionType = 0;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR: GESVideoStandardTransitionType = 1;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_TB: GESVideoStandardTransitionType = 2;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TL: GESVideoStandardTransitionType = 3;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TR: GESVideoStandardTransitionType = 4;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BR: GESVideoStandardTransitionType = 5;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BL: GESVideoStandardTransitionType = 6;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CI: GESVideoStandardTransitionType = 7;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FOUR_BOX_WIPE_CO: GESVideoStandardTransitionType = 8;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_V: GESVideoStandardTransitionType = 21;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_H: GESVideoStandardTransitionType = 22;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_TC: GESVideoStandardTransitionType = 23;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_RC: GESVideoStandardTransitionType = 24;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_BC: GESVideoStandardTransitionType = 25;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOX_WIPE_LC: GESVideoStandardTransitionType = 26;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TL: GESVideoStandardTransitionType = 41;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DIAGONAL_TR: GESVideoStandardTransitionType = 42;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_V: GESVideoStandardTransitionType = 43;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BOWTIE_H: GESVideoStandardTransitionType = 44;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DBL: GESVideoStandardTransitionType = 45;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNDOOR_DTL: GESVideoStandardTransitionType = 46;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DBD: GESVideoStandardTransitionType = 47;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_MISC_DIAGONAL_DD: GESVideoStandardTransitionType = 48;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_D: GESVideoStandardTransitionType = 61;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_L: GESVideoStandardTransitionType = 62;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_U: GESVideoStandardTransitionType = 63;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_VEE_R: GESVideoStandardTransitionType = 64;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_D: GESVideoStandardTransitionType = 65;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_L: GESVideoStandardTransitionType = 66;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_U: GESVideoStandardTransitionType = 67;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_BARNVEE_R: GESVideoStandardTransitionType = 68;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_IRIS_RECT: GESVideoStandardTransitionType = 101;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW12: GESVideoStandardTransitionType = 201;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW3: GESVideoStandardTransitionType = 202;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW6: GESVideoStandardTransitionType = 203;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_CLOCK_CW9: GESVideoStandardTransitionType = 204;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBV: GESVideoStandardTransitionType = 205;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_TBH: GESVideoStandardTransitionType = 206;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_PINWHEEL_FB: GESVideoStandardTransitionType = 207;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CT: GESVideoStandardTransitionType = 211;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_CR: GESVideoStandardTransitionType = 212;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOV: GESVideoStandardTransitionType = 213;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FOH: GESVideoStandardTransitionType = 214;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWT: GESVideoStandardTransitionType = 221;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWR: GESVideoStandardTransitionType = 222;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWB: GESVideoStandardTransitionType = 223;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWL: GESVideoStandardTransitionType = 224;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PV: GESVideoStandardTransitionType = 225;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PD: GESVideoStandardTransitionType = 226;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OV: GESVideoStandardTransitionType = 227;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_OH: GESVideoStandardTransitionType = 228;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_T: GESVideoStandardTransitionType = 231;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_R: GESVideoStandardTransitionType = 232;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_B: GESVideoStandardTransitionType = 233;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_FAN_L: GESVideoStandardTransitionType = 234;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIV: GESVideoStandardTransitionType = 235;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLEFAN_FIH: GESVideoStandardTransitionType = 236;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTL: GESVideoStandardTransitionType = 241;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBL: GESVideoStandardTransitionType = 242;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWBR: GESVideoStandardTransitionType = 243;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SINGLESWEEP_CWTR: GESVideoStandardTransitionType = 244;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDTL: GESVideoStandardTransitionType = 245;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_DOUBLESWEEP_PDBL: GESVideoStandardTransitionType = 246;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_T: GESVideoStandardTransitionType = 251;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_L: GESVideoStandardTransitionType = 252;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_B: GESVideoStandardTransitionType = 253;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_SALOONDOOR_R: GESVideoStandardTransitionType = 254;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_R: GESVideoStandardTransitionType = 261;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_U: GESVideoStandardTransitionType = 262;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_V: GESVideoStandardTransitionType = 263;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_WINDSHIELD_H: GESVideoStandardTransitionType = 264;
+pub const GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE: GESVideoStandardTransitionType = 512;
+
+pub type GESVideoTestPattern = c_int;
+pub const GES_VIDEO_TEST_PATTERN_SMPTE: GESVideoTestPattern = 0;
+pub const GES_VIDEO_TEST_PATTERN_SNOW: GESVideoTestPattern = 1;
+pub const GES_VIDEO_TEST_PATTERN_BLACK: GESVideoTestPattern = 2;
+pub const GES_VIDEO_TEST_PATTERN_WHITE: GESVideoTestPattern = 3;
+pub const GES_VIDEO_TEST_PATTERN_RED: GESVideoTestPattern = 4;
+pub const GES_VIDEO_TEST_PATTERN_GREEN: GESVideoTestPattern = 5;
+pub const GES_VIDEO_TEST_PATTERN_BLUE: GESVideoTestPattern = 6;
+pub const GES_VIDEO_TEST_PATTERN_CHECKERS1: GESVideoTestPattern = 7;
+pub const GES_VIDEO_TEST_PATTERN_CHECKERS2: GESVideoTestPattern = 8;
+pub const GES_VIDEO_TEST_PATTERN_CHECKERS4: GESVideoTestPattern = 9;
+pub const GES_VIDEO_TEST_PATTERN_CHECKERS8: GESVideoTestPattern = 10;
+pub const GES_VIDEO_TEST_PATTERN_CIRCULAR: GESVideoTestPattern = 11;
+pub const GES_VIDEO_TEST_PATTERN_BLINK: GESVideoTestPattern = 12;
+pub const GES_VIDEO_TEST_PATTERN_SMPTE75: GESVideoTestPattern = 13;
+pub const GES_VIDEO_TEST_ZONE_PLATE: GESVideoTestPattern = 14;
+pub const GES_VIDEO_TEST_GAMUT: GESVideoTestPattern = 15;
+pub const GES_VIDEO_TEST_CHROMA_ZONE_PLATE: GESVideoTestPattern = 16;
+pub const GES_VIDEO_TEST_PATTERN_SOLID: GESVideoTestPattern = 17;
+
+// Constants
+pub const GES_META_DESCRIPTION: *const c_char = b"description\0" as *const u8 as *const c_char;
+pub const GES_META_FORMATTER_EXTENSION: *const c_char = b"extension\0" as *const u8 as *const c_char;
+pub const GES_META_FORMATTER_MIMETYPE: *const c_char = b"mimetype\0" as *const u8 as *const c_char;
+pub const GES_META_FORMATTER_NAME: *const c_char = b"name\0" as *const u8 as *const c_char;
+pub const GES_META_FORMATTER_RANK: *const c_char = b"rank\0" as *const u8 as *const c_char;
+pub const GES_META_FORMATTER_VERSION: *const c_char = b"version\0" as *const u8 as *const c_char;
+pub const GES_META_FORMAT_VERSION: *const c_char = b"format-version\0" as *const u8 as *const c_char;
+pub const GES_META_VOLUME: *const c_char = b"volume\0" as *const u8 as *const c_char;
+pub const GES_META_VOLUME_DEFAULT: c_double = 1.000000;
+pub const GES_MULTI_FILE_URI_PREFIX: *const c_char = b"multifile://\0" as *const u8 as *const c_char;
+pub const GES_PADDING: c_int = 4;
+pub const GES_PADDING_LARGE: c_int = 20;
+
+// Flags
+pub type GESMetaFlag = c_uint;
+pub const GES_META_READABLE: GESMetaFlag = 1;
+pub const GES_META_WRITABLE: GESMetaFlag = 2;
+pub const GES_META_READ_WRITE: GESMetaFlag = 3;
+
+pub type GESPipelineFlags = c_uint;
+pub const GES_PIPELINE_MODE_PREVIEW_AUDIO: GESPipelineFlags = 1;
+pub const GES_PIPELINE_MODE_PREVIEW_VIDEO: GESPipelineFlags = 2;
+pub const GES_PIPELINE_MODE_PREVIEW: GESPipelineFlags = 3;
+pub const GES_PIPELINE_MODE_RENDER: GESPipelineFlags = 4;
+pub const GES_PIPELINE_MODE_SMART_RENDER: GESPipelineFlags = 8;
+
+pub type GESTrackType = c_uint;
+pub const GES_TRACK_TYPE_UNKNOWN: GESTrackType = 1;
+pub const GES_TRACK_TYPE_AUDIO: GESTrackType = 2;
+pub const GES_TRACK_TYPE_VIDEO: GESTrackType = 4;
+pub const GES_TRACK_TYPE_TEXT: GESTrackType = 8;
+pub const GES_TRACK_TYPE_CUSTOM: GESTrackType = 16;
+
+// Unions
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union GESVideoSourceClass_ABI {
+ pub _ges_reserved: [gpointer; 4],
+ pub abi: GESVideoSourceClass_ABI_abi,
+}
+
+impl ::std::fmt::Debug for GESVideoSourceClass_ABI {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoSourceClass_ABI @ {:?}", self as *const _))
+ .field("_ges_reserved", unsafe { &self._ges_reserved })
+ .field("abi", unsafe { &self.abi })
+ .finish()
+ }
+}
+
+// Callbacks
+pub type GESCreateElementForGapFunc = Option *mut gst::GstElement>;
+pub type GESCreateTrackElementFunc = Option *mut GESTrackElement>;
+pub type GESCreateTrackElementsFunc = Option *mut glib::GList>;
+pub type GESExtractableCheckId = Option *mut c_char>;
+pub type GESFillTrackElementFunc = Option gboolean>;
+pub type GESFormatterCanLoadURIMethod = Option gboolean>;
+pub type GESFormatterLoadFromURIMethod = Option gboolean>;
+pub type GESFormatterSaveToURIMethod = Option gboolean>;
+pub type GESMetaForeachFunc = Option;
+
+// Records
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAssetClass {
+ pub parent: gobject::GObjectClass,
+ pub start_loading: Option GESAssetLoadingReturn>,
+ pub extract: Option *mut GESExtractable>,
+ pub inform_proxy: Option,
+ pub proxied: Option,
+ pub request_id_update: Option gboolean>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAssetClass @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("start_loading", &self.start_loading)
+ .field("extract", &self.extract)
+ .field("inform_proxy", &self.inform_proxy)
+ .field("proxied", &self.proxied)
+ .field("request_id_update", &self.request_id_update)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioSourceClass {
+ pub parent_class: GESSourceClass,
+ pub create_source: Option *mut gst::GstElement>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioSourceClass @ {:?}", self as *const _))
+ .field("create_source", &self.create_source)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAudioSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESAudioSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTestSourceClass {
+ pub parent_class: GESAudioSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTestSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTestSourceClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAudioTestSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESAudioTestSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTestSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTrackClass {
+ pub parent_class: GESTrackClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTrackClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTrackClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAudioTrackPrivate(c_void);
+
+impl ::std::fmt::Debug for GESAudioTrackPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTrackPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTransitionClass {
+ pub parent_class: GESTransitionClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTransitionClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTransitionClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAudioTransitionPrivate(c_void);
+
+impl ::std::fmt::Debug for GESAudioTransitionPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTransitionPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioUriSourceClass {
+ pub parent_class: GESAudioSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioUriSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioUriSourceClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESAudioUriSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESAudioUriSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioUriSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseEffectClass {
+ pub parent_class: GESOperationClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseEffectClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffectClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseEffectClipClass {
+ pub parent_class: GESOperationClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseEffectClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffectClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESBaseEffectClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESBaseEffectClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffectClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESBaseEffectPrivate(c_void);
+
+impl ::std::fmt::Debug for GESBaseEffectPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffectPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseTransitionClipClass {
+ pub parent_class: GESOperationClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseTransitionClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseTransitionClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESBaseTransitionClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESBaseTransitionClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseTransitionClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseXmlFormatterClass {
+ pub parent: GESFormatterClass,
+ pub content_parser: glib::GMarkupParser,
+ pub save: Option *mut glib::GString>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseXmlFormatterClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseXmlFormatterClass @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("content_parser", &self.content_parser)
+ .field("save", &self.save)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESBaseXmlFormatterPrivate(c_void);
+
+impl ::std::fmt::Debug for GESBaseXmlFormatterPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseXmlFormatterPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESClipAssetClass {
+ pub parent: GESAssetClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESClipAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClipAssetClass @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESClipAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESClipAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClipAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESClipClass {
+ pub parent_class: GESContainerClass,
+ pub create_track_element: GESCreateTrackElementFunc,
+ pub create_track_elements: GESCreateTrackElementsFunc,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClipClass @ {:?}", self as *const _))
+ .field("create_track_element", &self.create_track_element)
+ .field("create_track_elements", &self.create_track_elements)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESCommandLineFormatterClass {
+ pub parent_class: GESFormatterClass,
+}
+
+impl ::std::fmt::Debug for GESCommandLineFormatterClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESCommandLineFormatterClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESCommandLineFormatterPrivate(c_void);
+
+impl ::std::fmt::Debug for GESCommandLineFormatterPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESCommandLineFormatterPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESContainerClass {
+ pub parent_class: GESTimelineElementClass,
+ pub child_added: Option,
+ pub child_removed: Option,
+ pub add_child: Option gboolean>,
+ pub remove_child: Option gboolean>,
+ pub ungroup: Option *mut glib::GList>,
+ pub group: Option *mut GESContainer>,
+ pub edit: Option gboolean>,
+ pub grouping_priority: c_uint,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESContainerClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESContainerClass @ {:?}", self as *const _))
+ .field("child_added", &self.child_added)
+ .field("child_removed", &self.child_removed)
+ .field("add_child", &self.add_child)
+ .field("remove_child", &self.remove_child)
+ .field("ungroup", &self.ungroup)
+ .field("group", &self.group)
+ .field("edit", &self.edit)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESContainerPrivate(c_void);
+
+impl ::std::fmt::Debug for GESContainerPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESContainerPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffectAssetClass {
+ pub parent_class: GESTrackElementAssetClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffectAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectAssetClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESEffectAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESEffectAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffectClass {
+ pub parent_class: GESBaseEffectClass,
+ pub rate_properties: *mut glib::GList,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffectClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffectClipClass {
+ pub parent_class: GESBaseEffectClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffectClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESEffectClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESEffectClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESEffectPrivate(c_void);
+
+impl ::std::fmt::Debug for GESEffectPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESExtractableInterface {
+ pub parent: gobject::GTypeInterface,
+ pub asset_type: GType,
+ pub check_id: GESExtractableCheckId,
+ pub can_update_asset: gboolean,
+ pub set_asset: Option,
+ pub set_asset_full: Option gboolean>,
+ pub get_parameters_from_id: Option *mut gobject::GParameter>,
+ pub get_id: Option *mut c_char>,
+ pub get_real_extractable_type: Option GType>,
+ pub register_metas: Option gboolean>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESExtractableInterface {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESExtractableInterface @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("asset_type", &self.asset_type)
+ .field("check_id", &self.check_id)
+ .field("can_update_asset", &self.can_update_asset)
+ .field("set_asset", &self.set_asset)
+ .field("set_asset_full", &self.set_asset_full)
+ .field("get_parameters_from_id", &self.get_parameters_from_id)
+ .field("get_id", &self.get_id)
+ .field("get_real_extractable_type", &self.get_real_extractable_type)
+ .field("register_metas", &self.register_metas)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESFormatterClass {
+ pub parent_class: gobject::GInitiallyUnownedClass,
+ pub can_load_uri: GESFormatterCanLoadURIMethod,
+ pub load_from_uri: GESFormatterLoadFromURIMethod,
+ pub save_to_uri: GESFormatterSaveToURIMethod,
+ pub name: *const c_char,
+ pub description: *const c_char,
+ pub extension: *const c_char,
+ pub mimetype: *const c_char,
+ pub version: c_double,
+ pub rank: gst::GstRank,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESFormatterClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESFormatterClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("can_load_uri", &self.can_load_uri)
+ .field("load_from_uri", &self.load_from_uri)
+ .field("save_to_uri", &self.save_to_uri)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESFormatterPrivate(c_void);
+
+impl ::std::fmt::Debug for GESFormatterPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESFormatterPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESGroupClass {
+ pub parent_class: GESContainerClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESGroupClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESGroupClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESGroupPrivate(c_void);
+
+impl ::std::fmt::Debug for GESGroupPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESGroupPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESImageSourceClass {
+ pub parent_class: GESVideoSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESImageSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESImageSourceClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESImageSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESImageSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESImageSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESLayerClass {
+ pub parent_class: gobject::GInitiallyUnownedClass,
+ pub get_objects: Option *mut glib::GList>,
+ pub object_added: Option,
+ pub object_removed: Option,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESLayerClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESLayerClass @ {:?}", self as *const _))
+ .field("get_objects", &self.get_objects)
+ .field("object_added", &self.object_added)
+ .field("object_removed", &self.object_removed)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESLayerPrivate(c_void);
+
+impl ::std::fmt::Debug for GESLayerPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESLayerPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESMetaContainerInterface {
+ pub parent_iface: gobject::GTypeInterface,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESMetaContainerInterface {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESMetaContainerInterface @ {:?}", self as *const _))
+ .field("parent_iface", &self.parent_iface)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESMultiFileSourceClass {
+ pub parent_class: GESVideoSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESMultiFileSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESMultiFileSourceClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESMultiFileSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESMultiFileSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESMultiFileSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOperationClass {
+ pub parent_class: GESTrackElementClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOperationClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperationClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOperationClipClass {
+ pub parent_class: GESClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOperationClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperationClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESOperationClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESOperationClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperationClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESOperationPrivate(c_void);
+
+impl ::std::fmt::Debug for GESOperationPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperationPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOverlayClipClass {
+ pub parent_class: GESOperationClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOverlayClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOverlayClipClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESOverlayClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESOverlayClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOverlayClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESPipelineClass {
+ pub parent_class: gst::GstPipelineClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESPipelineClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPipelineClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESPipelinePrivate(c_void);
+
+impl ::std::fmt::Debug for GESPipelinePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPipelinePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESPitiviFormatterClass {
+ pub parent_class: GESFormatterClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESPitiviFormatterClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPitiviFormatterClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESPitiviFormatterPrivate(c_void);
+
+impl ::std::fmt::Debug for GESPitiviFormatterPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPitiviFormatterPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESProjectClass {
+ pub parent_class: GESAssetClass,
+ pub asset_added: Option,
+ pub asset_loading: Option,
+ pub asset_removed: Option,
+ pub missing_uri: Option *mut c_char>,
+ pub loading_error: Option gboolean>,
+ pub loaded: Option gboolean>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESProjectClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESProjectClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("asset_added", &self.asset_added)
+ .field("asset_loading", &self.asset_loading)
+ .field("asset_removed", &self.asset_removed)
+ .field("missing_uri", &self.missing_uri)
+ .field("loading_error", &self.loading_error)
+ .field("loaded", &self.loaded)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESProjectPrivate(c_void);
+
+impl ::std::fmt::Debug for GESProjectPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESProjectPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESSourceClass {
+ pub parent_class: GESTrackElementClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSourceClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESSourceClipClass {
+ pub parent_class: GESClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESSourceClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSourceClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESSourceClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESSourceClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSourceClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTestClipClass {
+ pub parent_class: GESSourceClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTestClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTestClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTestClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTestClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTestClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTextOverlayClass {
+ pub parent_class: GESOperationClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTextOverlayClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlayClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTextOverlayClipClass {
+ pub parent_class: GESOverlayClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTextOverlayClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlayClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTextOverlayClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTextOverlayClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlayClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTextOverlayPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTextOverlayPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlayPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTimelineClass {
+ pub parent_class: gst::GstBinClass,
+ pub track_added: Option,
+ pub track_removed: Option,
+ pub layer_added: Option,
+ pub layer_removed: Option,
+ pub group_added: Option,
+ pub group_removed: Option,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTimelineClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimelineClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("track_added", &self.track_added)
+ .field("track_removed", &self.track_removed)
+ .field("layer_added", &self.layer_added)
+ .field("layer_removed", &self.layer_removed)
+ .field("group_added", &self.group_added)
+ .field("group_removed", &self.group_removed)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTimelineElementClass {
+ pub parent_class: gobject::GInitiallyUnownedClass,
+ pub set_parent: Option gboolean>,
+ pub set_start: Option gboolean>,
+ pub set_inpoint: Option gboolean>,
+ pub set_duration: Option gboolean>,
+ pub set_max_duration: Option gboolean>,
+ pub set_priority: Option gboolean>,
+ pub ripple: Option gboolean>,
+ pub ripple_end: Option gboolean>,
+ pub roll_start: Option gboolean>,
+ pub roll_end: Option gboolean>,
+ pub trim: Option gboolean>,
+ pub deep_copy: Option,
+ pub paste: Option *mut GESTimelineElement>,
+ pub list_children_properties: Option *mut *mut gobject::GParamSpec>,
+ pub lookup_child: Option gboolean>,
+ pub get_track_types: Option GESTrackType>,
+ pub set_child_property: Option,
+ pub _ges_reserved: [gpointer; 17],
+}
+
+impl ::std::fmt::Debug for GESTimelineElementClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimelineElementClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("set_parent", &self.set_parent)
+ .field("set_start", &self.set_start)
+ .field("set_inpoint", &self.set_inpoint)
+ .field("set_duration", &self.set_duration)
+ .field("set_max_duration", &self.set_max_duration)
+ .field("set_priority", &self.set_priority)
+ .field("ripple", &self.ripple)
+ .field("ripple_end", &self.ripple_end)
+ .field("roll_start", &self.roll_start)
+ .field("roll_end", &self.roll_end)
+ .field("trim", &self.trim)
+ .field("deep_copy", &self.deep_copy)
+ .field("paste", &self.paste)
+ .field("list_children_properties", &self.list_children_properties)
+ .field("lookup_child", &self.lookup_child)
+ .field("get_track_types", &self.get_track_types)
+ .field("set_child_property", &self.set_child_property)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTimelineElementPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTimelineElementPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimelineElementPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTimelinePrivate(c_void);
+
+impl ::std::fmt::Debug for GESTimelinePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimelinePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTitleClipClass {
+ pub parent_class: GESSourceClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTitleClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTitleClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTitleClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTitleSourceClass {
+ pub parent_class: GESVideoSourceClass,
+ pub _ges_reserved: [gpointer; 3],
+}
+
+impl ::std::fmt::Debug for GESTitleSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleSourceClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTitleSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESTitleSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrackClass {
+ pub parent_class: gst::GstBinClass,
+ pub get_mixing_element: Option *mut gst::GstElement>,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTrackClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackClass @ {:?}", self as *const _))
+ .field("get_mixing_element", &self.get_mixing_element)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrackElementAssetClass {
+ pub parent_class: GESAssetClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTrackElementAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElementAssetClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTrackElementAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTrackElementAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElementAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrackElementClass {
+ pub parent_class: GESTimelineElementClass,
+ pub nleobject_factorytype: *const c_char,
+ pub create_gnl_object: Option *mut gst::GstElement>,
+ pub create_element: Option *mut gst::GstElement>,
+ pub active_changed: Option,
+ pub changed: Option,
+ pub list_children_properties: Option *mut *mut gobject::GParamSpec>,
+ pub lookup_child: Option gboolean>,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESTrackElementClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElementClass @ {:?}", self as *const _))
+ .field("nleobject_factorytype", &self.nleobject_factorytype)
+ .field("create_gnl_object", &self.create_gnl_object)
+ .field("create_element", &self.create_element)
+ .field("active_changed", &self.active_changed)
+ .field("changed", &self.changed)
+ .field("list_children_properties", &self.list_children_properties)
+ .field("lookup_child", &self.lookup_child)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTrackElementPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTrackElementPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElementPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTrackPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTrackPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTransitionClass {
+ pub parent_class: GESOperationClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTransitionClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransitionClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTransitionClipClass {
+ pub parent_class: GESBaseTransitionClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTransitionClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransitionClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTransitionClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTransitionClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransitionClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESTransitionPrivate(c_void);
+
+impl ::std::fmt::Debug for GESTransitionPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransitionPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriClipAssetClass {
+ pub parent_class: GESClipAssetClass,
+ pub discoverer: *mut gst_pbutils::GstDiscoverer,
+ pub sync_discoverer: *mut gst_pbutils::GstDiscoverer,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriClipAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClipAssetClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESUriClipAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESUriClipAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClipAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriClipClass {
+ pub parent_class: GESSourceClipClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriClipClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClipClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESUriClipPrivate(c_void);
+
+impl ::std::fmt::Debug for GESUriClipPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClipPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriSourceAssetClass {
+ pub parent_class: GESTrackElementAssetClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriSourceAssetClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriSourceAssetClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESUriSourceAssetPrivate(c_void);
+
+impl ::std::fmt::Debug for GESUriSourceAssetPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriSourceAssetPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoSourceClass {
+ pub parent_class: GESSourceClass,
+ pub create_source: Option *mut gst::GstElement>,
+ pub ABI: GESVideoSourceClass_ABI,
+}
+
+impl ::std::fmt::Debug for GESVideoSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoSourceClass @ {:?}", self as *const _))
+ .field("create_source", &self.create_source)
+ .field("ABI", &self.ABI)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoSourceClass_ABI_abi {
+ pub disable_scale_in_compositor: gboolean,
+}
+
+impl ::std::fmt::Debug for GESVideoSourceClass_ABI_abi {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoSourceClass_ABI_abi @ {:?}", self as *const _))
+ .field("disable_scale_in_compositor", &self.disable_scale_in_compositor)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESVideoSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESVideoSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTestSourceClass {
+ pub parent_class: GESVideoSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTestSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTestSourceClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESVideoTestSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESVideoTestSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTestSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTrackClass {
+ pub parent_class: GESTrackClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTrackClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTrackClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESVideoTrackPrivate(c_void);
+
+impl ::std::fmt::Debug for GESVideoTrackPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTrackPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTransitionClass {
+ pub parent_class: GESTransitionClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTransitionClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTransitionClass @ {:?}", self as *const _))
+ .field("parent_class", &self.parent_class)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESVideoTransitionPrivate(c_void);
+
+impl ::std::fmt::Debug for GESVideoTransitionPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTransitionPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoUriSourceClass {
+ pub parent_class: GESVideoSourceClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoUriSourceClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoUriSourceClass @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESVideoUriSourcePrivate(c_void);
+
+impl ::std::fmt::Debug for GESVideoUriSourcePrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoUriSourcePrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESXmlFormatterClass {
+ pub parent: GESBaseXmlFormatterClass,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESXmlFormatterClass {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESXmlFormatterClass @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+pub struct GESXmlFormatterPrivate(c_void);
+
+impl ::std::fmt::Debug for GESXmlFormatterPrivate {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESXmlFormatterPrivate @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+// Classes
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAsset {
+ pub parent: gobject::GObject,
+ pub priv_: *mut GESAssetPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAsset @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioSource {
+ pub parent: GESSource,
+ pub priv_: *mut GESAudioSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTestSource {
+ pub parent: GESAudioSource,
+ pub priv_: *mut GESAudioTestSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTestSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTestSource @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTrack {
+ pub parent_instance: GESTrack,
+ pub priv_: *mut GESAudioTrackPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTrack {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTrack @ {:?}", self as *const _))
+ .field("parent_instance", &self.parent_instance)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioTransition {
+ pub parent: GESTransition,
+ pub priv_: *mut GESAudioTransitionPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioTransition {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioTransition @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESAudioUriSource {
+ pub parent: GESAudioSource,
+ pub uri: *mut c_char,
+ pub priv_: *mut GESAudioUriSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESAudioUriSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESAudioUriSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseEffect {
+ pub parent: GESOperation,
+ pub priv_: *mut GESBaseEffectPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseEffect {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffect @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseEffectClip {
+ pub parent: GESOperationClip,
+ pub priv_: *mut GESBaseEffectClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseEffectClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseEffectClip @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseTransitionClip {
+ pub parent: GESOperationClip,
+ pub priv_: *mut GESBaseTransitionClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseTransitionClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseTransitionClip @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESBaseXmlFormatter {
+ pub parent: GESFormatter,
+ pub priv_: *mut GESBaseXmlFormatterPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESBaseXmlFormatter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESBaseXmlFormatter @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESClip {
+ pub parent: GESContainer,
+ pub priv_: *mut GESClipPrivate,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESClipAsset {
+ pub parent: GESAsset,
+ pub priv_: *mut GESClipAssetPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESClipAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESClipAsset @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESCommandLineFormatter {
+ pub parent_instance: GESFormatter,
+ pub priv_: *mut GESCommandLineFormatterPrivate,
+}
+
+impl ::std::fmt::Debug for GESCommandLineFormatter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESCommandLineFormatter @ {:?}", self as *const _))
+ .field("parent_instance", &self.parent_instance)
+ .field("priv_", &self.priv_)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESContainer {
+ pub parent: GESTimelineElement,
+ pub children: *mut glib::GList,
+ pub height: u32,
+ pub children_control_mode: GESChildrenControlMode,
+ pub initiated_move: *mut GESTimelineElement,
+ pub priv_: *mut GESContainerPrivate,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESContainer {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESContainer @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("children", &self.children)
+ .field("height", &self.height)
+ .field("children_control_mode", &self.children_control_mode)
+ .field("initiated_move", &self.initiated_move)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffect {
+ pub parent: GESBaseEffect,
+ pub priv_: *mut GESEffectPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffect {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffect @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffectAsset {
+ pub parent_instance: GESTrackElementAsset,
+ pub priv_: *mut GESEffectAssetPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffectAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectAsset @ {:?}", self as *const _))
+ .field("parent_instance", &self.parent_instance)
+ .field("priv_", &self.priv_)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESEffectClip {
+ pub parent: GESBaseEffectClip,
+ pub priv_: *mut GESEffectClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESEffectClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESEffectClip @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESFormatter {
+ pub parent: gobject::GInitiallyUnowned,
+ pub priv_: *mut GESFormatterPrivate,
+ pub project: *mut GESProject,
+ pub timeline: *mut GESTimeline,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESFormatter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESFormatter @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESGroup {
+ pub parent: GESContainer,
+ pub priv_: *mut GESGroupPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESGroup {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESGroup @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESImageSource {
+ pub parent: GESVideoSource,
+ pub uri: *mut c_char,
+ pub priv_: *mut GESImageSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESImageSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESImageSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESLayer {
+ pub parent: gobject::GInitiallyUnowned,
+ pub timeline: *mut GESTimeline,
+ pub min_nle_priority: u32,
+ pub max_nle_priority: u32,
+ pub priv_: *mut GESLayerPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESLayer {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESLayer @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("timeline", &self.timeline)
+ .field("min_nle_priority", &self.min_nle_priority)
+ .field("max_nle_priority", &self.max_nle_priority)
+ .field("priv_", &self.priv_)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESMultiFileSource {
+ pub parent: GESVideoSource,
+ pub uri: *mut c_char,
+ pub priv_: *mut GESMultiFileSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESMultiFileSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESMultiFileSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOperation {
+ pub parent: GESTrackElement,
+ pub priv_: *mut GESOperationPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOperation {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperation @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOperationClip {
+ pub parent: GESClip,
+ pub priv_: *mut GESOperationClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOperationClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOperationClip @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESOverlayClip {
+ pub parent: GESOperationClip,
+ pub priv_: *mut GESOverlayClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESOverlayClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESOverlayClip @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESPipeline {
+ pub parent: gst::GstPipeline,
+ pub priv_: *mut GESPipelinePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESPipeline {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPipeline @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESPitiviFormatter {
+ pub parent: GESFormatter,
+ pub priv_: *mut GESPitiviFormatterPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESPitiviFormatter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESPitiviFormatter @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESProject {
+ pub parent: GESAsset,
+ pub priv_: *mut GESProjectPrivate,
+ pub __ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESProject {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESProject @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESSource {
+ pub parent: GESTrackElement,
+ pub priv_: *mut GESSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESSourceClip {
+ pub parent: GESClip,
+ pub priv_: *mut GESSourceClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESSourceClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESSourceClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTestClip {
+ pub parent: GESSourceClip,
+ pub priv_: *mut GESTestClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTestClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTestClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTextOverlay {
+ pub parent: GESOperation,
+ pub priv_: *mut GESTextOverlayPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTextOverlay {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlay @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTextOverlayClip {
+ pub parent: GESOverlayClip,
+ pub priv_: *mut GESTextOverlayClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTextOverlayClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTextOverlayClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTimeline {
+ pub parent: gst::GstBin,
+ pub layers: *mut glib::GList,
+ pub tracks: *mut glib::GList,
+ pub priv_: *mut GESTimelinePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTimeline {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimeline @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("layers", &self.layers)
+ .field("tracks", &self.tracks)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTimelineElement {
+ pub parent_instance: gobject::GInitiallyUnowned,
+ pub parent: *mut GESTimelineElement,
+ pub asset: *mut GESAsset,
+ pub start: gst::GstClockTime,
+ pub inpoint: gst::GstClockTime,
+ pub duration: gst::GstClockTime,
+ pub maxduration: gst::GstClockTime,
+ pub priority: u32,
+ pub timeline: *mut GESTimeline,
+ pub name: *mut c_char,
+ pub priv_: *mut GESTimelineElementPrivate,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESTimelineElement {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTimelineElement @ {:?}", self as *const _))
+ .field("parent_instance", &self.parent_instance)
+ .field("parent", &self.parent)
+ .field("asset", &self.asset)
+ .field("start", &self.start)
+ .field("inpoint", &self.inpoint)
+ .field("duration", &self.duration)
+ .field("maxduration", &self.maxduration)
+ .field("priority", &self.priority)
+ .field("timeline", &self.timeline)
+ .field("name", &self.name)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTitleClip {
+ pub parent: GESSourceClip,
+ pub priv_: *mut GESTitleClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTitleClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTitleSource {
+ pub parent: GESVideoSource,
+ pub priv_: *mut GESTitleSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTitleSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTitleSource @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrack {
+ pub parent: gst::GstBin,
+ pub type_: GESTrackType,
+ pub priv_: *mut GESTrackPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTrack {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrack @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("type_", &self.type_)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrackElement {
+ pub parent: GESTimelineElement,
+ pub active: gboolean,
+ pub priv_: *mut GESTrackElementPrivate,
+ pub asset: *mut GESAsset,
+ pub _ges_reserved: [gpointer; 20],
+}
+
+impl ::std::fmt::Debug for GESTrackElement {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElement @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTrackElementAsset {
+ pub parent: GESAsset,
+ pub priv_: *mut GESTrackElementAssetPrivate,
+ pub __ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTrackElementAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTrackElementAsset @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTransition {
+ pub parent: GESOperation,
+ pub priv_: *mut GESTransitionPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTransition {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransition @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESTransitionClip {
+ pub parent: GESBaseTransitionClip,
+ pub vtype: GESVideoStandardTransitionType,
+ pub priv_: *mut GESTransitionClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESTransitionClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESTransitionClip @ {:?}", self as *const _))
+ .field("vtype", &self.vtype)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriClip {
+ pub parent: GESSourceClip,
+ pub priv_: *mut GESUriClipPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriClip {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClip @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriClipAsset {
+ pub parent: GESClipAsset,
+ pub priv_: *mut GESUriClipAssetPrivate,
+ pub __ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriClipAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriClipAsset @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESUriSourceAsset {
+ pub parent: GESTrackElementAsset,
+ pub priv_: *mut GESUriSourceAssetPrivate,
+ pub __ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESUriSourceAsset {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESUriSourceAsset @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoSource {
+ pub parent: GESSource,
+ pub priv_: *mut GESVideoSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTestSource {
+ pub parent: GESVideoSource,
+ pub priv_: *mut GESVideoTestSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTestSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTestSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTrack {
+ pub parent_instance: GESTrack,
+ pub priv_: *mut GESVideoTrackPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTrack {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTrack @ {:?}", self as *const _))
+ .field("parent_instance", &self.parent_instance)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoTransition {
+ pub parent: GESTransition,
+ pub priv_: *mut GESVideoTransitionPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoTransition {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoTransition @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESVideoUriSource {
+ pub parent: GESVideoSource,
+ pub uri: *mut c_char,
+ pub priv_: *mut GESVideoUriSourcePrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESVideoUriSource {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESVideoUriSource @ {:?}", self as *const _))
+ .finish()
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct GESXmlFormatter {
+ pub parent: GESBaseXmlFormatter,
+ pub priv_: *mut GESXmlFormatterPrivate,
+ pub _ges_reserved: [gpointer; 4],
+}
+
+impl ::std::fmt::Debug for GESXmlFormatter {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(&format!("GESXmlFormatter @ {:?}", self as *const _))
+ .field("parent", &self.parent)
+ .field("priv_", &self.priv_)
+ .field("_ges_reserved", &self._ges_reserved)
+ .finish()
+ }
+}
+
+// Interfaces
+#[repr(C)]
+pub struct GESExtractable(c_void);
+
+impl ::std::fmt::Debug for GESExtractable {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ write!(f, "GESExtractable @ {:?}", self as *const _)
+ }
+}
+
+#[repr(C)]
+pub struct GESMetaContainer(c_void);
+
+impl ::std::fmt::Debug for GESMetaContainer {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ write!(f, "GESMetaContainer @ {:?}", self as *const _)
+ }
+}
+
+
+extern "C" {
+
+ //=========================================================================
+ // GESEdge
+ //=========================================================================
+ pub fn ges_edge_get_type() -> GType;
+
+ //=========================================================================
+ // GESEditMode
+ //=========================================================================
+ pub fn ges_edit_mode_get_type() -> GType;
+
+ //=========================================================================
+ // GESTextHAlign
+ //=========================================================================
+ pub fn ges_text_halign_get_type() -> GType;
+
+ //=========================================================================
+ // GESTextVAlign
+ //=========================================================================
+ pub fn ges_text_valign_get_type() -> GType;
+
+ //=========================================================================
+ // GESVideoStandardTransitionType
+ //=========================================================================
+ pub fn ges_video_standard_transition_type_get_type() -> GType;
+
+ //=========================================================================
+ // GESVideoTestPattern
+ //=========================================================================
+ pub fn ges_video_test_pattern_get_type() -> GType;
+
+ //=========================================================================
+ // GESMetaFlag
+ //=========================================================================
+ pub fn ges_meta_flag_get_type() -> GType;
+
+ //=========================================================================
+ // GESPipelineFlags
+ //=========================================================================
+ pub fn ges_pipeline_flags_get_type() -> GType;
+
+ //=========================================================================
+ // GESTrackType
+ //=========================================================================
+ pub fn ges_track_type_get_type() -> GType;
+ pub fn ges_track_type_name(type_: GESTrackType) -> *const c_char;
+
+ //=========================================================================
+ // GESEffectClass
+ //=========================================================================
+ pub fn ges_effect_class_register_rate_property(klass: *mut GESEffectClass, element_name: *const c_char, property_name: *const c_char) -> gboolean;
+
+ //=========================================================================
+ // GESFormatterClass
+ //=========================================================================
+ pub fn ges_formatter_class_register_metas(klass: *mut GESFormatterClass, name: *const c_char, description: *const c_char, extension: *const c_char, mimetype: *const c_char, version: c_double, rank: gst::GstRank);
+
+ //=========================================================================
+ // GESUriClipAssetClass
+ //=========================================================================
+ pub fn ges_uri_clip_asset_class_set_timeout(klass: *mut GESUriClipAssetClass, timeout: gst::GstClockTime);
+
+ //=========================================================================
+ // GESAsset
+ //=========================================================================
+ pub fn ges_asset_get_type() -> GType;
+ pub fn ges_asset_needs_reload(extractable_type: GType, id: *const c_char) -> gboolean;
+ pub fn ges_asset_request(extractable_type: GType, id: *const c_char, error: *mut *mut glib::GError) -> *mut GESAsset;
+ pub fn ges_asset_request_async(extractable_type: GType, id: *const c_char, cancellable: *mut gio::GCancellable, callback: gio::GAsyncReadyCallback, user_data: gpointer);
+ pub fn ges_asset_request_finish(res: *mut gio::GAsyncResult, error: *mut *mut glib::GError) -> *mut GESAsset;
+ pub fn ges_asset_extract(self_: *mut GESAsset, error: *mut *mut glib::GError) -> *mut GESExtractable;
+ #[cfg(any(feature = "v1_8", feature = "dox"))]
+ pub fn ges_asset_get_error(self_: *mut GESAsset) -> *mut glib::GError;
+ pub fn ges_asset_get_extractable_type(self_: *mut GESAsset) -> GType;
+ pub fn ges_asset_get_id(self_: *mut GESAsset) -> *const c_char;
+ pub fn ges_asset_get_proxy(asset: *mut GESAsset) -> *mut GESAsset;
+ pub fn ges_asset_get_proxy_target(proxy: *mut GESAsset) -> *mut GESAsset;
+ pub fn ges_asset_list_proxies(asset: *mut GESAsset) -> *mut glib::GList;
+ pub fn ges_asset_set_proxy(asset: *mut GESAsset, proxy: *mut GESAsset) -> gboolean;
+ pub fn ges_asset_unproxy(asset: *mut GESAsset, proxy: *mut GESAsset) -> gboolean;
+
+ //=========================================================================
+ // GESAudioSource
+ //=========================================================================
+ pub fn ges_audio_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESAudioTestSource
+ //=========================================================================
+ pub fn ges_audio_test_source_get_type() -> GType;
+ pub fn ges_audio_test_source_get_freq(self_: *mut GESAudioTestSource) -> c_double;
+ pub fn ges_audio_test_source_get_volume(self_: *mut GESAudioTestSource) -> c_double;
+ pub fn ges_audio_test_source_set_freq(self_: *mut GESAudioTestSource, freq: c_double);
+ pub fn ges_audio_test_source_set_volume(self_: *mut GESAudioTestSource, volume: c_double);
+
+ //=========================================================================
+ // GESAudioTrack
+ //=========================================================================
+ pub fn ges_audio_track_get_type() -> GType;
+ pub fn ges_audio_track_new() -> *mut GESAudioTrack;
+
+ //=========================================================================
+ // GESAudioTransition
+ //=========================================================================
+ pub fn ges_audio_transition_get_type() -> GType;
+ pub fn ges_audio_transition_new() -> *mut GESAudioTransition;
+
+ //=========================================================================
+ // GESAudioUriSource
+ //=========================================================================
+ pub fn ges_audio_uri_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESBaseEffect
+ //=========================================================================
+ pub fn ges_base_effect_get_type() -> GType;
+
+ //=========================================================================
+ // GESBaseEffectClip
+ //=========================================================================
+ pub fn ges_base_effect_clip_get_type() -> GType;
+
+ //=========================================================================
+ // GESBaseTransitionClip
+ //=========================================================================
+ pub fn ges_base_transition_clip_get_type() -> GType;
+
+ //=========================================================================
+ // GESBaseXmlFormatter
+ //=========================================================================
+ pub fn ges_base_xml_formatter_get_type() -> GType;
+
+ //=========================================================================
+ // GESClip
+ //=========================================================================
+ pub fn ges_clip_get_type() -> GType;
+ pub fn ges_clip_add_asset(clip: *mut GESClip, asset: *mut GESAsset) -> *mut GESTrackElement;
+ pub fn ges_clip_find_track_element(clip: *mut GESClip, track: *mut GESTrack, type_: GType) -> *mut GESTrackElement;
+ pub fn ges_clip_find_track_elements(clip: *mut GESClip, track: *mut GESTrack, track_type: GESTrackType, type_: GType) -> *mut glib::GList;
+ pub fn ges_clip_get_layer(clip: *mut GESClip) -> *mut GESLayer;
+ pub fn ges_clip_get_supported_formats(clip: *mut GESClip) -> GESTrackType;
+ pub fn ges_clip_get_top_effect_index(clip: *mut GESClip, effect: *mut GESBaseEffect) -> c_int;
+ pub fn ges_clip_get_top_effect_position(clip: *mut GESClip, effect: *mut GESBaseEffect) -> c_int;
+ pub fn ges_clip_get_top_effects(clip: *mut GESClip) -> *mut glib::GList;
+ pub fn ges_clip_move_to_layer(clip: *mut GESClip, layer: *mut GESLayer) -> gboolean;
+ pub fn ges_clip_set_supported_formats(clip: *mut GESClip, supportedformats: GESTrackType);
+ pub fn ges_clip_set_top_effect_index(clip: *mut GESClip, effect: *mut GESBaseEffect, newindex: c_uint) -> gboolean;
+ pub fn ges_clip_set_top_effect_priority(clip: *mut GESClip, effect: *mut GESBaseEffect, newpriority: c_uint) -> gboolean;
+ pub fn ges_clip_split(clip: *mut GESClip, position: u64) -> *mut GESClip;
+
+ //=========================================================================
+ // GESClipAsset
+ //=========================================================================
+ pub fn ges_clip_asset_get_type() -> GType;
+ pub fn ges_clip_asset_get_supported_formats(self_: *mut GESClipAsset) -> GESTrackType;
+ pub fn ges_clip_asset_set_supported_formats(self_: *mut GESClipAsset, supportedformats: GESTrackType);
+
+ //=========================================================================
+ // GESCommandLineFormatter
+ //=========================================================================
+ pub fn ges_command_line_formatter_get_type() -> GType;
+ pub fn ges_command_line_formatter_get_help(nargs: c_int, commands: *mut *mut c_char) -> *mut c_char;
+
+ //=========================================================================
+ // GESContainer
+ //=========================================================================
+ pub fn ges_container_get_type() -> GType;
+ pub fn ges_container_group(containers: *mut glib::GList) -> *mut GESContainer;
+ pub fn ges_container_add(container: *mut GESContainer, child: *mut GESTimelineElement) -> gboolean;
+ pub fn ges_container_edit(container: *mut GESContainer, layers: *mut glib::GList, new_layer_priority: c_int, mode: GESEditMode, edge: GESEdge, position: u64) -> gboolean;
+ pub fn ges_container_get_children(container: *mut GESContainer, recursive: gboolean) -> *mut glib::GList;
+ pub fn ges_container_remove(container: *mut GESContainer, child: *mut GESTimelineElement) -> gboolean;
+ pub fn ges_container_ungroup(container: *mut GESContainer, recursive: gboolean) -> *mut glib::GList;
+
+ //=========================================================================
+ // GESEffect
+ //=========================================================================
+ pub fn ges_effect_get_type() -> GType;
+ pub fn ges_effect_new(bin_description: *const c_char) -> *mut GESEffect;
+
+ //=========================================================================
+ // GESEffectAsset
+ //=========================================================================
+ pub fn ges_effect_asset_get_type() -> GType;
+
+ //=========================================================================
+ // GESEffectClip
+ //=========================================================================
+ pub fn ges_effect_clip_get_type() -> GType;
+ pub fn ges_effect_clip_new(video_bin_description: *const c_char, audio_bin_description: *const c_char) -> *mut GESEffectClip;
+
+ //=========================================================================
+ // GESFormatter
+ //=========================================================================
+ pub fn ges_formatter_get_type() -> GType;
+ pub fn ges_formatter_can_load_uri(uri: *const c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_formatter_can_save_uri(uri: *const c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_formatter_get_default() -> *mut GESAsset;
+ pub fn ges_formatter_load_from_uri(formatter: *mut GESFormatter, timeline: *mut GESTimeline, uri: *const c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_formatter_save_to_uri(formatter: *mut GESFormatter, timeline: *mut GESTimeline, uri: *const c_char, overwrite: gboolean, error: *mut *mut glib::GError) -> gboolean;
+
+ //=========================================================================
+ // GESGroup
+ //=========================================================================
+ pub fn ges_group_get_type() -> GType;
+ pub fn ges_group_new() -> *mut GESGroup;
+
+ //=========================================================================
+ // GESImageSource
+ //=========================================================================
+ pub fn ges_image_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESLayer
+ //=========================================================================
+ pub fn ges_layer_get_type() -> GType;
+ pub fn ges_layer_new() -> *mut GESLayer;
+ pub fn ges_layer_add_asset(layer: *mut GESLayer, asset: *mut GESAsset, start: gst::GstClockTime, inpoint: gst::GstClockTime, duration: gst::GstClockTime, track_types: GESTrackType) -> *mut GESClip;
+ pub fn ges_layer_add_clip(layer: *mut GESLayer, clip: *mut GESClip) -> gboolean;
+ pub fn ges_layer_get_auto_transition(layer: *mut GESLayer) -> gboolean;
+ pub fn ges_layer_get_clips(layer: *mut GESLayer) -> *mut glib::GList;
+ pub fn ges_layer_get_clips_in_interval(layer: *mut GESLayer, start: gst::GstClockTime, end: gst::GstClockTime) -> *mut glib::GList;
+ pub fn ges_layer_get_duration(layer: *mut GESLayer) -> gst::GstClockTime;
+ pub fn ges_layer_get_priority(layer: *mut GESLayer) -> c_uint;
+ pub fn ges_layer_get_timeline(layer: *mut GESLayer) -> *mut GESTimeline;
+ pub fn ges_layer_is_empty(layer: *mut GESLayer) -> gboolean;
+ pub fn ges_layer_remove_clip(layer: *mut GESLayer, clip: *mut GESClip) -> gboolean;
+ pub fn ges_layer_set_auto_transition(layer: *mut GESLayer, auto_transition: gboolean);
+ pub fn ges_layer_set_priority(layer: *mut GESLayer, priority: c_uint);
+ pub fn ges_layer_set_timeline(layer: *mut GESLayer, timeline: *mut GESTimeline);
+
+ //=========================================================================
+ // GESMultiFileSource
+ //=========================================================================
+ pub fn ges_multi_file_source_get_type() -> GType;
+ pub fn ges_multi_file_source_new(uri: *mut c_char) -> *mut GESMultiFileSource;
+
+ //=========================================================================
+ // GESOperation
+ //=========================================================================
+ pub fn ges_operation_get_type() -> GType;
+
+ //=========================================================================
+ // GESOperationClip
+ //=========================================================================
+ pub fn ges_operation_clip_get_type() -> GType;
+
+ //=========================================================================
+ // GESOverlayClip
+ //=========================================================================
+ pub fn ges_overlay_clip_get_type() -> GType;
+
+ //=========================================================================
+ // GESPipeline
+ //=========================================================================
+ pub fn ges_pipeline_get_type() -> GType;
+ pub fn ges_pipeline_new() -> *mut GESPipeline;
+ pub fn ges_pipeline_get_mode(pipeline: *mut GESPipeline) -> GESPipelineFlags;
+ pub fn ges_pipeline_get_thumbnail(self_: *mut GESPipeline, caps: *mut gst::GstCaps) -> *mut gst::GstSample;
+ pub fn ges_pipeline_get_thumbnail_rgb24(self_: *mut GESPipeline, width: c_int, height: c_int) -> *mut gst::GstSample;
+ pub fn ges_pipeline_preview_get_audio_sink(self_: *mut GESPipeline) -> *mut gst::GstElement;
+ pub fn ges_pipeline_preview_get_video_sink(self_: *mut GESPipeline) -> *mut gst::GstElement;
+ pub fn ges_pipeline_preview_set_audio_sink(self_: *mut GESPipeline, sink: *mut gst::GstElement);
+ pub fn ges_pipeline_preview_set_video_sink(self_: *mut GESPipeline, sink: *mut gst::GstElement);
+ pub fn ges_pipeline_save_thumbnail(self_: *mut GESPipeline, width: c_int, height: c_int, format: *const c_char, location: *const c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_pipeline_set_mode(pipeline: *mut GESPipeline, mode: GESPipelineFlags) -> gboolean;
+ pub fn ges_pipeline_set_render_settings(pipeline: *mut GESPipeline, output_uri: *const c_char, profile: *mut gst_pbutils::GstEncodingProfile) -> gboolean;
+ pub fn ges_pipeline_set_timeline(pipeline: *mut GESPipeline, timeline: *mut GESTimeline) -> gboolean;
+
+ //=========================================================================
+ // GESPitiviFormatter
+ //=========================================================================
+ pub fn ges_pitivi_formatter_get_type() -> GType;
+ pub fn ges_pitivi_formatter_new() -> *mut GESPitiviFormatter;
+
+ //=========================================================================
+ // GESProject
+ //=========================================================================
+ pub fn ges_project_get_type() -> GType;
+ pub fn ges_project_new(uri: *const c_char) -> *mut GESProject;
+ pub fn ges_project_add_asset(project: *mut GESProject, asset: *mut GESAsset) -> gboolean;
+ pub fn ges_project_add_encoding_profile(project: *mut GESProject, profile: *mut gst_pbutils::GstEncodingProfile) -> gboolean;
+ pub fn ges_project_create_asset(project: *mut GESProject, id: *const c_char, extractable_type: GType) -> gboolean;
+ pub fn ges_project_create_asset_sync(project: *mut GESProject, id: *const c_char, extractable_type: GType, error: *mut *mut glib::GError) -> *mut GESAsset;
+ pub fn ges_project_get_asset(project: *mut GESProject, id: *const c_char, extractable_type: GType) -> *mut GESAsset;
+ pub fn ges_project_get_loading_assets(project: *mut GESProject) -> *mut glib::GList;
+ pub fn ges_project_get_uri(project: *mut GESProject) -> *mut c_char;
+ pub fn ges_project_list_assets(project: *mut GESProject, filter: GType) -> *mut glib::GList;
+ pub fn ges_project_list_encoding_profiles(project: *mut GESProject) -> *const glib::GList;
+ pub fn ges_project_load(project: *mut GESProject, timeline: *mut GESTimeline, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_project_remove_asset(project: *mut GESProject, asset: *mut GESAsset) -> gboolean;
+ pub fn ges_project_save(project: *mut GESProject, timeline: *mut GESTimeline, uri: *const c_char, formatter_asset: *mut GESAsset, overwrite: gboolean, error: *mut *mut glib::GError) -> gboolean;
+
+ //=========================================================================
+ // GESSource
+ //=========================================================================
+ pub fn ges_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESSourceClip
+ //=========================================================================
+ pub fn ges_source_clip_get_type() -> GType;
+
+ //=========================================================================
+ // GESTestClip
+ //=========================================================================
+ pub fn ges_test_clip_get_type() -> GType;
+ pub fn ges_test_clip_new() -> *mut GESTestClip;
+ pub fn ges_test_clip_new_for_nick(nick: *mut c_char) -> *mut GESTestClip;
+ pub fn ges_test_clip_get_frequency(self_: *mut GESTestClip) -> c_double;
+ pub fn ges_test_clip_get_volume(self_: *mut GESTestClip) -> c_double;
+ pub fn ges_test_clip_get_vpattern(self_: *mut GESTestClip) -> GESVideoTestPattern;
+ pub fn ges_test_clip_is_muted(self_: *mut GESTestClip) -> gboolean;
+ pub fn ges_test_clip_set_frequency(self_: *mut GESTestClip, freq: c_double);
+ pub fn ges_test_clip_set_mute(self_: *mut GESTestClip, mute: gboolean);
+ pub fn ges_test_clip_set_volume(self_: *mut GESTestClip, volume: c_double);
+ pub fn ges_test_clip_set_vpattern(self_: *mut GESTestClip, vpattern: GESVideoTestPattern);
+
+ //=========================================================================
+ // GESTextOverlay
+ //=========================================================================
+ pub fn ges_text_overlay_get_type() -> GType;
+ pub fn ges_text_overlay_new() -> *mut GESTextOverlay;
+ pub fn ges_text_overlay_get_color(self_: *mut GESTextOverlay) -> u32;
+ pub fn ges_text_overlay_get_font_desc(self_: *mut GESTextOverlay) -> *const c_char;
+ pub fn ges_text_overlay_get_halignment(self_: *mut GESTextOverlay) -> GESTextHAlign;
+ pub fn ges_text_overlay_get_text(self_: *mut GESTextOverlay) -> *const c_char;
+ pub fn ges_text_overlay_get_valignment(self_: *mut GESTextOverlay) -> GESTextVAlign;
+ pub fn ges_text_overlay_get_xpos(self_: *mut GESTextOverlay) -> c_double;
+ pub fn ges_text_overlay_get_ypos(self_: *mut GESTextOverlay) -> c_double;
+ pub fn ges_text_overlay_set_color(self_: *mut GESTextOverlay, color: u32);
+ pub fn ges_text_overlay_set_font_desc(self_: *mut GESTextOverlay, font_desc: *const c_char);
+ pub fn ges_text_overlay_set_halignment(self_: *mut GESTextOverlay, halign: GESTextHAlign);
+ pub fn ges_text_overlay_set_text(self_: *mut GESTextOverlay, text: *const c_char);
+ pub fn ges_text_overlay_set_valignment(self_: *mut GESTextOverlay, valign: GESTextVAlign);
+ pub fn ges_text_overlay_set_xpos(self_: *mut GESTextOverlay, position: c_double);
+ pub fn ges_text_overlay_set_ypos(self_: *mut GESTextOverlay, position: c_double);
+
+ //=========================================================================
+ // GESTextOverlayClip
+ //=========================================================================
+ pub fn ges_text_overlay_clip_get_type() -> GType;
+ pub fn ges_text_overlay_clip_new() -> *mut GESTextOverlayClip;
+ pub fn ges_text_overlay_clip_get_color(self_: *mut GESTextOverlayClip) -> u32;
+ pub fn ges_text_overlay_clip_get_font_desc(self_: *mut GESTextOverlayClip) -> *const c_char;
+ pub fn ges_text_overlay_clip_get_halignment(self_: *mut GESTextOverlayClip) -> GESTextHAlign;
+ pub fn ges_text_overlay_clip_get_text(self_: *mut GESTextOverlayClip) -> *const c_char;
+ pub fn ges_text_overlay_clip_get_valignment(self_: *mut GESTextOverlayClip) -> GESTextVAlign;
+ pub fn ges_text_overlay_clip_get_xpos(self_: *mut GESTextOverlayClip) -> c_double;
+ pub fn ges_text_overlay_clip_get_ypos(self_: *mut GESTextOverlayClip) -> c_double;
+ pub fn ges_text_overlay_clip_set_color(self_: *mut GESTextOverlayClip, color: u32);
+ pub fn ges_text_overlay_clip_set_font_desc(self_: *mut GESTextOverlayClip, font_desc: *const c_char);
+ pub fn ges_text_overlay_clip_set_halign(self_: *mut GESTextOverlayClip, halign: GESTextHAlign);
+ pub fn ges_text_overlay_clip_set_text(self_: *mut GESTextOverlayClip, text: *const c_char);
+ pub fn ges_text_overlay_clip_set_valign(self_: *mut GESTextOverlayClip, valign: GESTextVAlign);
+ pub fn ges_text_overlay_clip_set_xpos(self_: *mut GESTextOverlayClip, position: c_double);
+ pub fn ges_text_overlay_clip_set_ypos(self_: *mut GESTextOverlayClip, position: c_double);
+
+ //=========================================================================
+ // GESTimeline
+ //=========================================================================
+ pub fn ges_timeline_get_type() -> GType;
+ pub fn ges_timeline_new() -> *mut GESTimeline;
+ pub fn ges_timeline_new_audio_video() -> *mut GESTimeline;
+ pub fn ges_timeline_new_from_uri(uri: *const c_char, error: *mut *mut glib::GError) -> *mut GESTimeline;
+ pub fn ges_timeline_add_layer(timeline: *mut GESTimeline, layer: *mut GESLayer) -> gboolean;
+ pub fn ges_timeline_add_track(timeline: *mut GESTimeline, track: *mut GESTrack) -> gboolean;
+ pub fn ges_timeline_append_layer(timeline: *mut GESTimeline) -> *mut GESLayer;
+ pub fn ges_timeline_commit(timeline: *mut GESTimeline) -> gboolean;
+ pub fn ges_timeline_commit_sync(timeline: *mut GESTimeline) -> gboolean;
+ pub fn ges_timeline_get_auto_transition(timeline: *mut GESTimeline) -> gboolean;
+ pub fn ges_timeline_get_duration(timeline: *mut GESTimeline) -> gst::GstClockTime;
+ pub fn ges_timeline_get_element(timeline: *mut GESTimeline, name: *const c_char) -> *mut GESTimelineElement;
+ pub fn ges_timeline_get_groups(timeline: *mut GESTimeline) -> *mut glib::GList;
+ pub fn ges_timeline_get_layer(timeline: *mut GESTimeline, priority: c_uint) -> *mut GESLayer;
+ pub fn ges_timeline_get_layers(timeline: *mut GESTimeline) -> *mut glib::GList;
+ pub fn ges_timeline_get_pad_for_track(timeline: *mut GESTimeline, track: *mut GESTrack) -> *mut gst::GstPad;
+ pub fn ges_timeline_get_snapping_distance(timeline: *mut GESTimeline) -> gst::GstClockTime;
+ pub fn ges_timeline_get_track_for_pad(timeline: *mut GESTimeline, pad: *mut gst::GstPad) -> *mut GESTrack;
+ pub fn ges_timeline_get_tracks(timeline: *mut GESTimeline) -> *mut glib::GList;
+ pub fn ges_timeline_is_empty(timeline: *mut GESTimeline) -> gboolean;
+ pub fn ges_timeline_load_from_uri(timeline: *mut GESTimeline, uri: *const c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_timeline_move_layer(timeline: *mut GESTimeline, layer: *mut GESLayer, new_layer_priority: c_uint) -> gboolean;
+ pub fn ges_timeline_paste_element(timeline: *mut GESTimeline, element: *mut GESTimelineElement, position: gst::GstClockTime, layer_priority: c_int) -> *mut GESTimelineElement;
+ pub fn ges_timeline_remove_layer(timeline: *mut GESTimeline, layer: *mut GESLayer) -> gboolean;
+ pub fn ges_timeline_remove_track(timeline: *mut GESTimeline, track: *mut GESTrack) -> gboolean;
+ pub fn ges_timeline_save_to_uri(timeline: *mut GESTimeline, uri: *const c_char, formatter_asset: *mut GESAsset, overwrite: gboolean, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_timeline_set_auto_transition(timeline: *mut GESTimeline, auto_transition: gboolean);
+ pub fn ges_timeline_set_snapping_distance(timeline: *mut GESTimeline, snapping_distance: gst::GstClockTime);
+
+ //=========================================================================
+ // GESTimelineElement
+ //=========================================================================
+ pub fn ges_timeline_element_get_type() -> GType;
+ pub fn ges_timeline_element_add_child_property(self_: *mut GESTimelineElement, pspec: *mut gobject::GParamSpec, child: *mut gobject::GObject) -> gboolean;
+ pub fn ges_timeline_element_copy(self_: *mut GESTimelineElement, deep: gboolean) -> *mut GESTimelineElement;
+ pub fn ges_timeline_element_get_child_properties(self_: *mut GESTimelineElement, first_property_name: *const c_char, ...);
+ pub fn ges_timeline_element_get_child_property(self_: *mut GESTimelineElement, property_name: *const c_char, value: *mut gobject::GValue) -> gboolean;
+ pub fn ges_timeline_element_get_child_property_by_pspec(self_: *mut GESTimelineElement, pspec: *mut gobject::GParamSpec, value: *mut gobject::GValue);
+ //pub fn ges_timeline_element_get_child_property_valist(self_: *mut GESTimelineElement, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
+ pub fn ges_timeline_element_get_duration(self_: *mut GESTimelineElement) -> gst::GstClockTime;
+ pub fn ges_timeline_element_get_inpoint(self_: *mut GESTimelineElement) -> gst::GstClockTime;
+ pub fn ges_timeline_element_get_max_duration(self_: *mut GESTimelineElement) -> gst::GstClockTime;
+ pub fn ges_timeline_element_get_name(self_: *mut GESTimelineElement) -> *mut c_char;
+ pub fn ges_timeline_element_get_parent(self_: *mut GESTimelineElement) -> *mut GESTimelineElement;
+ pub fn ges_timeline_element_get_priority(self_: *mut GESTimelineElement) -> u32;
+ pub fn ges_timeline_element_get_start(self_: *mut GESTimelineElement) -> gst::GstClockTime;
+ pub fn ges_timeline_element_get_timeline(self_: *mut GESTimelineElement) -> *mut GESTimeline;
+ pub fn ges_timeline_element_get_toplevel_parent(self_: *mut GESTimelineElement) -> *mut GESTimelineElement;
+ #[cfg(any(feature = "v1_6", feature = "dox"))]
+ pub fn ges_timeline_element_get_track_types(self_: *mut GESTimelineElement) -> GESTrackType;
+ pub fn ges_timeline_element_list_children_properties(self_: *mut GESTimelineElement, n_properties: *mut c_uint) -> *mut *mut gobject::GParamSpec;
+ pub fn ges_timeline_element_lookup_child(self_: *mut GESTimelineElement, prop_name: *const c_char, child: *mut *mut gobject::GObject, pspec: *mut *mut gobject::GParamSpec) -> gboolean;
+ #[cfg(any(feature = "v1_6", feature = "dox"))]
+ pub fn ges_timeline_element_paste(self_: *mut GESTimelineElement, paste_position: gst::GstClockTime) -> *mut GESTimelineElement;
+ pub fn ges_timeline_element_remove_child_property(self_: *mut GESTimelineElement, pspec: *mut gobject::GParamSpec) -> gboolean;
+ pub fn ges_timeline_element_ripple(self_: *mut GESTimelineElement, start: gst::GstClockTime) -> gboolean;
+ pub fn ges_timeline_element_ripple_end(self_: *mut GESTimelineElement, end: gst::GstClockTime) -> gboolean;
+ pub fn ges_timeline_element_roll_end(self_: *mut GESTimelineElement, end: gst::GstClockTime) -> gboolean;
+ pub fn ges_timeline_element_roll_start(self_: *mut GESTimelineElement, start: gst::GstClockTime) -> gboolean;
+ pub fn ges_timeline_element_set_child_properties(self_: *mut GESTimelineElement, first_property_name: *const c_char, ...);
+ pub fn ges_timeline_element_set_child_property(self_: *mut GESTimelineElement, property_name: *const c_char, value: *mut gobject::GValue) -> gboolean;
+ pub fn ges_timeline_element_set_child_property_by_pspec(self_: *mut GESTimelineElement, pspec: *mut gobject::GParamSpec, value: *mut gobject::GValue);
+ //pub fn ges_timeline_element_set_child_property_valist(self_: *mut GESTimelineElement, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
+ pub fn ges_timeline_element_set_duration(self_: *mut GESTimelineElement, duration: gst::GstClockTime);
+ pub fn ges_timeline_element_set_inpoint(self_: *mut GESTimelineElement, inpoint: gst::GstClockTime);
+ pub fn ges_timeline_element_set_max_duration(self_: *mut GESTimelineElement, maxduration: gst::GstClockTime);
+ pub fn ges_timeline_element_set_name(self_: *mut GESTimelineElement, name: *const c_char) -> gboolean;
+ pub fn ges_timeline_element_set_parent(self_: *mut GESTimelineElement, parent: *mut GESTimelineElement) -> gboolean;
+ pub fn ges_timeline_element_set_priority(self_: *mut GESTimelineElement, priority: u32);
+ pub fn ges_timeline_element_set_start(self_: *mut GESTimelineElement, start: gst::GstClockTime);
+ pub fn ges_timeline_element_set_timeline(self_: *mut GESTimelineElement, timeline: *mut GESTimeline) -> gboolean;
+ pub fn ges_timeline_element_trim(self_: *mut GESTimelineElement, start: gst::GstClockTime) -> gboolean;
+
+ //=========================================================================
+ // GESTitleClip
+ //=========================================================================
+ pub fn ges_title_clip_get_type() -> GType;
+ pub fn ges_title_clip_new() -> *mut GESTitleClip;
+ pub fn ges_title_clip_get_background_color(self_: *mut GESTitleClip) -> u32;
+ pub fn ges_title_clip_get_font_desc(self_: *mut GESTitleClip) -> *const c_char;
+ pub fn ges_title_clip_get_halignment(self_: *mut GESTitleClip) -> GESTextHAlign;
+ pub fn ges_title_clip_get_text(self_: *mut GESTitleClip) -> *const c_char;
+ pub fn ges_title_clip_get_text_color(self_: *mut GESTitleClip) -> u32;
+ pub fn ges_title_clip_get_valignment(self_: *mut GESTitleClip) -> GESTextVAlign;
+ pub fn ges_title_clip_get_xpos(self_: *mut GESTitleClip) -> c_double;
+ pub fn ges_title_clip_get_ypos(self_: *mut GESTitleClip) -> c_double;
+ pub fn ges_title_clip_set_background(self_: *mut GESTitleClip, background: u32);
+ pub fn ges_title_clip_set_color(self_: *mut GESTitleClip, color: u32);
+ pub fn ges_title_clip_set_font_desc(self_: *mut GESTitleClip, font_desc: *const c_char);
+ pub fn ges_title_clip_set_halignment(self_: *mut GESTitleClip, halign: GESTextHAlign);
+ pub fn ges_title_clip_set_text(self_: *mut GESTitleClip, text: *const c_char);
+ pub fn ges_title_clip_set_valignment(self_: *mut GESTitleClip, valign: GESTextVAlign);
+ pub fn ges_title_clip_set_xpos(self_: *mut GESTitleClip, position: c_double);
+ pub fn ges_title_clip_set_ypos(self_: *mut GESTitleClip, position: c_double);
+
+ //=========================================================================
+ // GESTitleSource
+ //=========================================================================
+ pub fn ges_title_source_get_type() -> GType;
+ pub fn ges_title_source_get_background_color(source: *mut GESTitleSource) -> u32;
+ pub fn ges_title_source_get_font_desc(source: *mut GESTitleSource) -> *const c_char;
+ pub fn ges_title_source_get_halignment(source: *mut GESTitleSource) -> GESTextHAlign;
+ pub fn ges_title_source_get_text(source: *mut GESTitleSource) -> *const c_char;
+ pub fn ges_title_source_get_text_color(source: *mut GESTitleSource) -> u32;
+ pub fn ges_title_source_get_valignment(source: *mut GESTitleSource) -> GESTextVAlign;
+ pub fn ges_title_source_get_xpos(source: *mut GESTitleSource) -> c_double;
+ pub fn ges_title_source_get_ypos(source: *mut GESTitleSource) -> c_double;
+ pub fn ges_title_source_set_background_color(self_: *mut GESTitleSource, color: u32);
+ pub fn ges_title_source_set_font_desc(self_: *mut GESTitleSource, font_desc: *const c_char);
+ pub fn ges_title_source_set_halignment(self_: *mut GESTitleSource, halign: GESTextHAlign);
+ pub fn ges_title_source_set_text(self_: *mut GESTitleSource, text: *const c_char);
+ pub fn ges_title_source_set_text_color(self_: *mut GESTitleSource, color: u32);
+ pub fn ges_title_source_set_valignment(self_: *mut GESTitleSource, valign: GESTextVAlign);
+ pub fn ges_title_source_set_xpos(self_: *mut GESTitleSource, position: c_double);
+ pub fn ges_title_source_set_ypos(self_: *mut GESTitleSource, position: c_double);
+
+ //=========================================================================
+ // GESTrack
+ //=========================================================================
+ pub fn ges_track_get_type() -> GType;
+ pub fn ges_track_new(type_: GESTrackType, caps: *mut gst::GstCaps) -> *mut GESTrack;
+ pub fn ges_track_add_element(track: *mut GESTrack, object: *mut GESTrackElement) -> gboolean;
+ pub fn ges_track_commit(track: *mut GESTrack) -> gboolean;
+ pub fn ges_track_get_caps(track: *mut GESTrack) -> *const gst::GstCaps;
+ pub fn ges_track_get_elements(track: *mut GESTrack) -> *mut glib::GList;
+ pub fn ges_track_get_mixing(track: *mut GESTrack) -> gboolean;
+ pub fn ges_track_get_timeline(track: *mut GESTrack) -> *const GESTimeline;
+ pub fn ges_track_remove_element(track: *mut GESTrack, object: *mut GESTrackElement) -> gboolean;
+ pub fn ges_track_set_create_element_for_gap_func(track: *mut GESTrack, func: GESCreateElementForGapFunc);
+ pub fn ges_track_set_mixing(track: *mut GESTrack, mixing: gboolean);
+ pub fn ges_track_set_restriction_caps(track: *mut GESTrack, caps: *const gst::GstCaps);
+ pub fn ges_track_set_timeline(track: *mut GESTrack, timeline: *mut GESTimeline);
+ pub fn ges_track_update_restriction_caps(track: *mut GESTrack, caps: *const gst::GstCaps);
+
+ //=========================================================================
+ // GESTrackElement
+ //=========================================================================
+ pub fn ges_track_element_get_type() -> GType;
+ pub fn ges_track_element_add_children_props(self_: *mut GESTrackElement, element: *mut gst::GstElement, wanted_categories: *mut *mut c_char, blacklist: *mut *mut c_char, whitelist: *mut *mut c_char);
+ pub fn ges_track_element_edit(object: *mut GESTrackElement, layers: *mut glib::GList, mode: GESEditMode, edge: GESEdge, position: u64) -> gboolean;
+ pub fn ges_track_element_get_all_control_bindings(trackelement: *mut GESTrackElement) -> *mut glib::GHashTable;
+ pub fn ges_track_element_get_child_properties(object: *mut GESTrackElement, first_property_name: *const c_char, ...);
+ pub fn ges_track_element_get_child_property(object: *mut GESTrackElement, property_name: *const c_char, value: *mut gobject::GValue) -> gboolean;
+ pub fn ges_track_element_get_child_property_by_pspec(object: *mut GESTrackElement, pspec: *mut gobject::GParamSpec, value: *mut gobject::GValue);
+ //pub fn ges_track_element_get_child_property_valist(object: *mut GESTrackElement, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
+ pub fn ges_track_element_get_control_binding(object: *mut GESTrackElement, property_name: *const c_char) -> *mut gst::GstControlBinding;
+ pub fn ges_track_element_get_element(object: *mut GESTrackElement) -> *mut gst::GstElement;
+ pub fn ges_track_element_get_gnlobject(object: *mut GESTrackElement) -> *mut gst::GstElement;
+ #[cfg(any(feature = "v1_6", feature = "dox"))]
+ pub fn ges_track_element_get_nleobject(object: *mut GESTrackElement) -> *mut gst::GstElement;
+ pub fn ges_track_element_get_track(object: *mut GESTrackElement) -> *mut GESTrack;
+ pub fn ges_track_element_get_track_type(object: *mut GESTrackElement) -> GESTrackType;
+ pub fn ges_track_element_is_active(object: *mut GESTrackElement) -> gboolean;
+ pub fn ges_track_element_list_children_properties(object: *mut GESTrackElement, n_properties: *mut c_uint) -> *mut *mut gobject::GParamSpec;
+ pub fn ges_track_element_lookup_child(object: *mut GESTrackElement, prop_name: *const c_char, element: *mut *mut gst::GstElement, pspec: *mut *mut gobject::GParamSpec) -> gboolean;
+ pub fn ges_track_element_remove_control_binding(object: *mut GESTrackElement, property_name: *const c_char) -> gboolean;
+ pub fn ges_track_element_set_active(object: *mut GESTrackElement, active: gboolean) -> gboolean;
+ pub fn ges_track_element_set_child_properties(object: *mut GESTrackElement, first_property_name: *const c_char, ...);
+ pub fn ges_track_element_set_child_property(object: *mut GESTrackElement, property_name: *const c_char, value: *mut gobject::GValue) -> gboolean;
+ pub fn ges_track_element_set_child_property_by_pspec(object: *mut GESTrackElement, pspec: *mut gobject::GParamSpec, value: *mut gobject::GValue);
+ //pub fn ges_track_element_set_child_property_valist(object: *mut GESTrackElement, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
+ pub fn ges_track_element_set_control_source(object: *mut GESTrackElement, source: *mut gst::GstControlSource, property_name: *const c_char, binding_type: *const c_char) -> gboolean;
+ pub fn ges_track_element_set_track_type(object: *mut GESTrackElement, type_: GESTrackType);
+
+ //=========================================================================
+ // GESTrackElementAsset
+ //=========================================================================
+ pub fn ges_track_element_asset_get_type() -> GType;
+ pub fn ges_track_element_asset_get_track_type(asset: *mut GESTrackElementAsset) -> GESTrackType;
+ pub fn ges_track_element_asset_set_track_type(asset: *mut GESTrackElementAsset, type_: GESTrackType);
+
+ //=========================================================================
+ // GESTransition
+ //=========================================================================
+ pub fn ges_transition_get_type() -> GType;
+
+ //=========================================================================
+ // GESTransitionClip
+ //=========================================================================
+ pub fn ges_transition_clip_get_type() -> GType;
+ pub fn ges_transition_clip_new(vtype: GESVideoStandardTransitionType) -> *mut GESTransitionClip;
+ pub fn ges_transition_clip_new_for_nick(nick: *mut c_char) -> *mut GESTransitionClip;
+
+ //=========================================================================
+ // GESUriClip
+ //=========================================================================
+ pub fn ges_uri_clip_get_type() -> GType;
+ pub fn ges_uri_clip_new(uri: *const c_char) -> *mut GESUriClip;
+ pub fn ges_uri_clip_get_uri(self_: *mut GESUriClip) -> *const c_char;
+ pub fn ges_uri_clip_is_image(self_: *mut GESUriClip) -> gboolean;
+ pub fn ges_uri_clip_is_muted(self_: *mut GESUriClip) -> gboolean;
+ pub fn ges_uri_clip_set_is_image(self_: *mut GESUriClip, is_image: gboolean);
+ pub fn ges_uri_clip_set_mute(self_: *mut GESUriClip, mute: gboolean);
+
+ //=========================================================================
+ // GESUriClipAsset
+ //=========================================================================
+ pub fn ges_uri_clip_asset_get_type() -> GType;
+ pub fn ges_uri_clip_asset_new(uri: *const c_char, cancellable: *mut gio::GCancellable, callback: gio::GAsyncReadyCallback, user_data: gpointer);
+ pub fn ges_uri_clip_asset_request_sync(uri: *const c_char, error: *mut *mut glib::GError) -> *mut GESUriClipAsset;
+ pub fn ges_uri_clip_asset_get_duration(self_: *mut GESUriClipAsset) -> gst::GstClockTime;
+ pub fn ges_uri_clip_asset_get_info(self_: *const GESUriClipAsset) -> *mut gst_pbutils::GstDiscovererInfo;
+ pub fn ges_uri_clip_asset_get_stream_assets(self_: *mut GESUriClipAsset) -> *const glib::GList;
+ pub fn ges_uri_clip_asset_is_image(self_: *mut GESUriClipAsset) -> gboolean;
+
+ //=========================================================================
+ // GESUriSourceAsset
+ //=========================================================================
+ pub fn ges_uri_source_asset_get_type() -> GType;
+ pub fn ges_uri_source_asset_get_filesource_asset(asset: *mut GESUriSourceAsset) -> *const GESUriClipAsset;
+ pub fn ges_uri_source_asset_get_stream_info(asset: *mut GESUriSourceAsset) -> *mut gst_pbutils::GstDiscovererStreamInfo;
+ pub fn ges_uri_source_asset_get_stream_uri(asset: *mut GESUriSourceAsset) -> *const c_char;
+
+ //=========================================================================
+ // GESVideoSource
+ //=========================================================================
+ pub fn ges_video_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESVideoTestSource
+ //=========================================================================
+ pub fn ges_video_test_source_get_type() -> GType;
+ pub fn ges_video_test_source_get_pattern(source: *mut GESVideoTestSource) -> GESVideoTestPattern;
+ pub fn ges_video_test_source_set_pattern(self_: *mut GESVideoTestSource, pattern: GESVideoTestPattern);
+
+ //=========================================================================
+ // GESVideoTrack
+ //=========================================================================
+ pub fn ges_video_track_get_type() -> GType;
+ pub fn ges_video_track_new() -> *mut GESVideoTrack;
+
+ //=========================================================================
+ // GESVideoTransition
+ //=========================================================================
+ pub fn ges_video_transition_get_type() -> GType;
+ pub fn ges_video_transition_new() -> *mut GESVideoTransition;
+ pub fn ges_video_transition_get_border(self_: *mut GESVideoTransition) -> c_int;
+ pub fn ges_video_transition_get_transition_type(trans: *mut GESVideoTransition) -> GESVideoStandardTransitionType;
+ pub fn ges_video_transition_is_inverted(self_: *mut GESVideoTransition) -> gboolean;
+ pub fn ges_video_transition_set_border(self_: *mut GESVideoTransition, value: c_uint);
+ pub fn ges_video_transition_set_inverted(self_: *mut GESVideoTransition, inverted: gboolean);
+ pub fn ges_video_transition_set_transition_type(self_: *mut GESVideoTransition, type_: GESVideoStandardTransitionType) -> gboolean;
+
+ //=========================================================================
+ // GESVideoUriSource
+ //=========================================================================
+ pub fn ges_video_uri_source_get_type() -> GType;
+
+ //=========================================================================
+ // GESXmlFormatter
+ //=========================================================================
+ pub fn ges_xml_formatter_get_type() -> GType;
+
+ //=========================================================================
+ // GESExtractable
+ //=========================================================================
+ pub fn ges_extractable_get_type() -> GType;
+ pub fn ges_extractable_get_asset(self_: *mut GESExtractable) -> *mut GESAsset;
+ pub fn ges_extractable_get_id(self_: *mut GESExtractable) -> *mut c_char;
+ pub fn ges_extractable_set_asset(self_: *mut GESExtractable, asset: *mut GESAsset) -> gboolean;
+
+ //=========================================================================
+ // GESMetaContainer
+ //=========================================================================
+ pub fn ges_meta_container_get_type() -> GType;
+ pub fn ges_meta_container_add_metas_from_string(container: *mut GESMetaContainer, str: *const c_char) -> gboolean;
+ pub fn ges_meta_container_check_meta_registered(container: *mut GESMetaContainer, meta_item: *const c_char, flags: *mut GESMetaFlag, type_: *mut GType) -> gboolean;
+ pub fn ges_meta_container_foreach(container: *mut GESMetaContainer, func: GESMetaForeachFunc, user_data: gpointer);
+ pub fn ges_meta_container_get_boolean(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut gboolean) -> gboolean;
+ pub fn ges_meta_container_get_date(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut *mut glib::GDate) -> gboolean;
+ pub fn ges_meta_container_get_date_time(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut *mut gst::GstDateTime) -> gboolean;
+ pub fn ges_meta_container_get_double(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut c_double) -> gboolean;
+ pub fn ges_meta_container_get_float(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut c_float) -> gboolean;
+ pub fn ges_meta_container_get_int(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut c_int) -> gboolean;
+ pub fn ges_meta_container_get_int64(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut i64) -> gboolean;
+ pub fn ges_meta_container_get_meta(container: *mut GESMetaContainer, key: *const c_char) -> *const gobject::GValue;
+ pub fn ges_meta_container_get_string(container: *mut GESMetaContainer, meta_item: *const c_char) -> *const c_char;
+ pub fn ges_meta_container_get_uint(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut c_uint) -> gboolean;
+ pub fn ges_meta_container_get_uint64(container: *mut GESMetaContainer, meta_item: *const c_char, dest: *mut u64) -> gboolean;
+ pub fn ges_meta_container_metas_to_string(container: *mut GESMetaContainer) -> *mut c_char;
+ pub fn ges_meta_container_register_meta(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: *const gobject::GValue) -> gboolean;
+ pub fn ges_meta_container_register_meta_boolean(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: gboolean) -> gboolean;
+ pub fn ges_meta_container_register_meta_date(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: *const glib::GDate) -> gboolean;
+ pub fn ges_meta_container_register_meta_date_time(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: *const gst::GstDateTime) -> gboolean;
+ pub fn ges_meta_container_register_meta_double(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: c_double) -> gboolean;
+ pub fn ges_meta_container_register_meta_float(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: c_float) -> gboolean;
+ pub fn ges_meta_container_register_meta_int(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: c_int) -> gboolean;
+ pub fn ges_meta_container_register_meta_int64(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: i64) -> gboolean;
+ pub fn ges_meta_container_register_meta_string(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: *const c_char) -> gboolean;
+ pub fn ges_meta_container_register_meta_uint(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: c_uint) -> gboolean;
+ pub fn ges_meta_container_register_meta_uint64(container: *mut GESMetaContainer, flags: GESMetaFlag, meta_item: *const c_char, value: u64) -> gboolean;
+ pub fn ges_meta_container_set_boolean(container: *mut GESMetaContainer, meta_item: *const c_char, value: gboolean) -> gboolean;
+ pub fn ges_meta_container_set_date(container: *mut GESMetaContainer, meta_item: *const c_char, value: *const glib::GDate) -> gboolean;
+ pub fn ges_meta_container_set_date_time(container: *mut GESMetaContainer, meta_item: *const c_char, value: *const gst::GstDateTime) -> gboolean;
+ pub fn ges_meta_container_set_double(container: *mut GESMetaContainer, meta_item: *const c_char, value: c_double) -> gboolean;
+ pub fn ges_meta_container_set_float(container: *mut GESMetaContainer, meta_item: *const c_char, value: c_float) -> gboolean;
+ pub fn ges_meta_container_set_int(container: *mut GESMetaContainer, meta_item: *const c_char, value: c_int) -> gboolean;
+ pub fn ges_meta_container_set_int64(container: *mut GESMetaContainer, meta_item: *const c_char, value: i64) -> gboolean;
+ pub fn ges_meta_container_set_meta(container: *mut GESMetaContainer, meta_item: *const c_char, value: *const gobject::GValue) -> gboolean;
+ pub fn ges_meta_container_set_string(container: *mut GESMetaContainer, meta_item: *const c_char, value: *const c_char) -> gboolean;
+ pub fn ges_meta_container_set_uint(container: *mut GESMetaContainer, meta_item: *const c_char, value: c_uint) -> gboolean;
+ pub fn ges_meta_container_set_uint64(container: *mut GESMetaContainer, meta_item: *const c_char, value: u64) -> gboolean;
+
+ //=========================================================================
+ // Other functions
+ //=========================================================================
+ pub fn ges_add_missing_uri_relocation_uri(uri: *const c_char, recurse: gboolean) -> gboolean;
+ pub fn ges_deinit();
+ pub fn ges_init() -> gboolean;
+ pub fn ges_init_check(argc: *mut c_int, argv: *mut *mut c_char, error: *mut *mut glib::GError) -> gboolean;
+ pub fn ges_init_get_option_group() -> *mut glib::GOptionGroup;
+ pub fn ges_list_assets(filter: GType) -> *mut glib::GList;
+ pub fn ges_play_sink_convert_frame(playsink: *mut gst::GstElement, caps: *mut gst::GstCaps) -> *mut gst::GstSample;
+ pub fn ges_pspec_equal(key_spec_1: gconstpointer, key_spec_2: gconstpointer) -> gboolean;
+ pub fn ges_pspec_hash(key_spec: gconstpointer) -> c_uint;
+ pub fn ges_validate_register_action_types() -> gboolean;
+ pub fn ges_version(major: *mut c_uint, minor: *mut c_uint, micro: *mut c_uint, nano: *mut c_uint);
+
+}
diff --git a/gstreamer-editing-services-sys/tests/abi.rs b/gstreamer-editing-services-sys/tests/abi.rs
new file mode 100644
index 000000000..58a8089e3
--- /dev/null
+++ b/gstreamer-editing-services-sys/tests/abi.rs
@@ -0,0 +1,500 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ f5fca82)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+extern crate gstreamer_editing_services_sys;
+extern crate shell_words;
+extern crate tempdir;
+use std::env;
+use std::error::Error;
+use std::path::Path;
+use std::mem::{align_of, size_of};
+use std::process::Command;
+use std::str;
+use gstreamer_editing_services_sys::*;
+
+static PACKAGES: &[&str] = &["gst-editing-services-1.0"];
+
+#[derive(Clone, Debug)]
+struct Compiler {
+ pub args: Vec,
+}
+
+impl Compiler {
+ pub fn new() -> Result> {
+ let mut args = get_var("CC", "cc")?;
+ args.push("-Wno-deprecated-declarations".to_owned());
+ // For %z support in printf when using MinGW.
+ args.push("-D__USE_MINGW_ANSI_STDIO".to_owned());
+ args.extend(get_var("CFLAGS", "")?);
+ args.extend(get_var("CPPFLAGS", "")?);
+ args.extend(pkg_config_cflags(PACKAGES)?);
+ Ok(Compiler { args })
+ }
+
+ pub fn define<'a, V: Into