## GESUriClipAsset GESUriClipAsset — A GESAsset subclass specialized in GESUriClip extraction |

## Synopsis

    #include <ges/ges.h>

                        GESUriClipAsset;
    GType               ges_uri_clip_asset_get_type         (void);
    GstClockTime        ges_uri_clip_asset_get_duration     (GESUriClipAsset *self);
    gboolean            ges_uri_clip_asset_is_image         (GESUriClipAsset *self);
    GstDiscovererInfo * ges_uri_clip_asset_get_info         (const GESUriClipAsset *self);
    void                ges_uri_clip_asset_new              (const gchar *uri,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    GESUriClipAsset *   ges_uri_clip_asset_request_sync     (const gchar *uri,
                                                             GError **error);
    const GList *       ges_uri_clip_asset_get_stream_assets
                                                            (GESUriClipAsset *self);
    void                ges_uri_clip_asset_class_set_timeout
                                                            (GESUriClipAssetClass *class,
                                                             GstClockTime timeout);

## Object Hierarchy

      GObject
       +----GESAsset
             +----GESClipAsset
                   +----GESUriClipAsset

## Implemented Interfaces

GESUriClipAsset implements GAsyncInitable, GInitable and GESMetaContainer.

## Description

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.

## Details

### GESUriClipAsset

    typedef struct _GESUriClipAsset GESUriClipAsset;

### ges_uri_clip_asset_get_type ()

    GType               ges_uri_clip_asset_get_type         (void);

### ges_uri_clip_asset_get_duration ()

    GstClockTime        ges_uri_clip_asset_get_duration     (GESUriClipAsset *self);

Gets duration of the file represented by `self`

`self` : | a GESUriClipAsset
Returns : | The duration of `self`

### ges_uri_clip_asset_is_image ()

    gboolean            ges_uri_clip_asset_is_image         (GESUriClipAsset *self);

Gets Whether the file represented by `self` is an image or not

`self` : | a indent: Standard input:311: Error:Unexpected end of file GESUriClipAsset
Returns : | Whether the file represented by `self` is an image or not

### ges_uri_clip_asset_get_info ()

    GstDiscovererInfo * ges_uri_clip_asset_get_info         (const GESUriClipAsset *self);

Gets GstDiscovererInfo about the file

`self` : | Target asset
Returns : | GstDiscovererInfo of specified asset. [transfer none]

### ges_uri_clip_asset_new ()

    void                ges_uri_clip_asset_new              (const gchar *uri,
                                                             GCancellable *cancellable,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Creates a GESUriClipAsset for `uri`

Example of request of a GESUriClipAsset:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // 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);

`uri` : | The URI of the file for which to create a GESUriClipAsset
`cancellable` : | optional `GCancellable` object, `NULL` to ignore.
`callback` : | a GAsyncReadyCallback to call when the initialization is finished. [scope async]
`user_data` : | The user data to pass when `callback` is called

### ges_uri_clip_asset_request_sync ()

    GESUriClipAsset *   ges_uri_clip_asset_request_sync     (const gchar *uri,
                                                             GError **error);

Creates a GESUriClipAsset for `uri` syncronously. You should avoid to use it in application, and rather create GESUriClipAsset asynchronously

`uri` : | The URI of the file for which to create a GESUriClipAsset
`error` : | An error to be set in case something wrong happens or `NULL`. [allow-none]
Returns : | A reference to the requested asset or `NULL` if an error happend. [transfer none]

### ges_uri_clip_asset_get_stream_assets ()

    const GList *       ges_uri_clip_asset_get_stream_assets
                                                            (GESUriClipAsset *self);

Get the GESUriSourceAsset `self` containes

`self` : | A GESUriClipAsset
Returns : | a GList of GESUriSourceAsset. [transfer none][element-type GESUriSourceAsset]

### ges_uri_clip_asset_class_set_timeout ()

    void                ges_uri_clip_asset_class_set_timeout
                                                            (GESUriClipAssetClass *class,
                                                             GstClockTime timeout);

Sets the timeout of GESUriClipAsset loading

`class` : | The GESUriClipAssetClass on which to set the discoverer timeout
`timeout` : | The timeout to set