## GESExtractableInterface GESExtractableInterface — An interface letting an object be extracted from a GESAsset |

## Synopsis

    #include <ges/ges.h>

                        GESExtractable;
                        GESExtractableInterface;
    gchar *             (*GESExtractableCheckId)            (GType type,
                                                             const gchar *id,
                                                             GError **error);
    GESAsset *          ges_extractable_get_asset           (GESExtractable *self);
    void                ges_extractable_set_asset           (GESExtractable *self,
                                                             GESAsset *asset);
    gchar *             ges_extractable_get_id              (GESExtractable *self);

## Object Hierarchy

      GInterface
       +----GESExtractable

## Prerequisites

GESExtractable requires GInitiallyUnowned.

## Known Implementations

GESExtractable is implemented by GESAudioSource, GESAudioTestSource, GESAudioTransition, GESAudioUriSource, GESBaseEffect, GESBaseEffectClip, GESBaseTransitionClip, GESClip, GESContainer, GESEffect, GESEffectClip, GESFormatter, GESImageSource, GESLayer, GESOperation, GESOperationClip, GESOverlayClip, GESSimpleLayer, GESSource, GESSourceClip, GESTestClip, GESTextOverlay, GESTextOverlayClip, GESTimeline, GESTimelineElement, GESTitleClip, GESTitleSource, GESTrackElement, GESTransition, GESTransitionClip, GESUriClip, GESVideoSource, GESVideoTestSource, GESVideoTransition and GESVideoUriSource.

## Description

FIXME: Long description needed

## Details

### GESExtractable

    typedef struct _GESExtractable GESExtractable;

### GESExtractableInterface

    typedef struct {
      GTypeInterface parent;

      GType asset_type;

      GESExtractableCheckId check_id;
      gboolean can_update_asset;

      void (*set_asset)                  (GESExtractable *self,
                                             GESAsset *asset);

      GParameter *(*get_parameters_from_id) (const gchar *id,
                                             guint *n_params);

      gchar * (*get_id)                     (GESExtractable *self);

      GType (*get_real_extractable_type)    (GType wanted_type,
                                             const gchar *id);

      gboolean (*register_metas)            (GESExtractableInterface *self,
                                             GObjectClass *class,
                                             GESAsset *asset);

      gpointer _ges_reserved[GES_PADDING];
    } GESExtractableInterface;

### GESExtractableCheckId ()

    gchar *             (*GESExtractableCheckId)            (GType type,
                                                             const gchar *id,
                                                             GError **error);

`type` : | The GType to check `id` for:
`id` : | The id to check
`error` : | An error that can be set if needed
Returns : | The ID to use for the asset or `NULL` if `id` is not valid

### ges_extractable_get_asset ()

    GESAsset *          ges_extractable_get_asset           (GESExtractable *self);

Method to get a asset from a GESExtractable

`self` : | The GESExtractable from which to retrieve a GESAsset from
Returns : | the GESAsset or `NULL` if none have been set. [transfer none]

### ges_extractable_set_asset ()

    void                ges_extractable_set_asset           (GESExtractable *self,
                                                             GESAsset *asset);

Method to set asset which was used to instaniate specified object

`self` : | Target object
`asset` : | The GESAsset to set. [transfer none]

### ges_extractable_get_id ()

    gchar *             ges_extractable_get_id              (GESExtractable *self);

`self` : | The GESExtractable
Returns : | The id of the associated GESAsset, free with g_free