## GESMetaContainer GESMetaContainer — An interface for storing meta |

## Synopsis

    #include <ges/ges.h>

                        GESMetaContainer;
    void                (*GESMetaForeachFunc)               (const GESMetaContainer *container,
                                                             const gchar *key,
                                                             const GValue *value,
                                                             gpointer user_data);
    void                ges_meta_container_foreach          (GESMetaContainer *container,
                                                             GESMetaForeachFunc func,
                                                             gpointer user_data);
    const GValue *      ges_meta_container_get_meta         (GESMetaContainer *container,
                                                             const gchar *key);
    gboolean            ges_meta_container_get_boolean      (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gboolean *dest);
    gboolean            ges_meta_container_get_date         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GDate **dest);
    gboolean            ges_meta_container_get_date_time    (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GstDateTime **dest);
    gboolean            ges_meta_container_get_double       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gdouble *dest);
    gboolean            ges_meta_container_get_float        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gfloat *dest);
    gboolean            ges_meta_container_get_int          (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint *dest);
    gboolean            ges_meta_container_get_int64        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint64 *dest);
    const gchar *       ges_meta_container_get_string       (GESMetaContainer *container,
                                                             const gchar *meta_item);
    gboolean            ges_meta_container_get_uint         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint *dest);
    gboolean            ges_meta_container_get_uint64       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint64 *dest);
    gboolean            ges_meta_container_set_boolean      (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gboolean value);
    gboolean            ges_meta_container_set_date         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GDate *value);
    gboolean            ges_meta_container_set_date_time    (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GstDateTime *value);
    gboolean            ges_meta_container_set_double       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gdouble value);
    gboolean            ges_meta_container_set_float        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gfloat value);
    gboolean            ges_meta_container_set_int          (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint value);
    gboolean            ges_meta_container_set_int64        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint64 value);
    gboolean            ges_meta_container_set_string       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const gchar *value);
    gboolean            ges_meta_container_set_uint         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint value);
    gboolean            ges_meta_container_set_uint64       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint64 value);
    gboolean            ges_meta_container_set_meta         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GValue *value);
    gboolean            ges_meta_container_register_meta_boolean
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gboolean value);
    gboolean            ges_meta_container_register_meta_int
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gint value);
    gboolean            ges_meta_container_register_meta_uint
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             guint value);
    gboolean            ges_meta_container_register_meta_int64
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gint64 value);
    gboolean            ges_meta_container_register_meta_uint64
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             guint64 value);
    gboolean            ges_meta_container_register_meta_float
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gfloat value);
    gboolean            ges_meta_container_register_meta_double
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gdouble value);
    gboolean            ges_meta_container_register_meta_date
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GDate *value);
    gboolean            ges_meta_container_register_meta_date_time
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GstDateTime *value);
    gboolean            ges_meta_container_register_meta_string
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const gchar *value);
    gboolean            ges_meta_container_register_meta    (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GValue *value);
    gchar *             ges_meta_container_metas_to_string  (GESMetaContainer *container);
    gboolean            ges_meta_container_add_metas_from_string
                                                            (GESMetaContainer *container,
                                                             const gchar *str);
    GType               ges_meta_container_get_type         (void);
    gboolean            ges_meta_container_check_meta_registered
                                                            (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GESMetaFlag *flags,
                                                             GType *type);
    #define             GES_META_FORMATTER_NAME
    #define             GES_META_FORMATTER_MIMETYPE
    #define             GES_META_FORMATTER_EXTENSION
    #define             GES_META_FORMATTER_VERSION
    #define             GES_META_FORMATTER_RANK
    #define             GES_META_DESCRIPTION

## Object Hierarchy

      GInterface
       +----GESMetaContainer

## Prerequisites

GESMetaContainer requires GObject.

## Known Implementations

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

## Signals

      "notify-meta"                                    : No Hooks

## Description

Interface that allows reading and writing meta

## Details

### GESMetaContainer

    typedef struct _GESMetaContainer GESMetaContainer;

### GESMetaForeachFunc ()

    void                (*GESMetaForeachFunc)               (const GESMetaContainer *container,
                                                             const gchar *key,
                                                             const GValue *value,
                                                             gpointer user_data);

### ges_meta_container_foreach ()

    void                ges_meta_container_foreach          (GESMetaContainer *container,
                                                             GESMetaForeachFunc func,
                                                             gpointer user_data);

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` : | container to iterate over
`func` : | function to be called for each metadata. [scope call]
`user_data` : | user specified data. [closure]

### ges_meta_container_get_meta ()

    const GValue *      ges_meta_container_get_meta         (GESMetaContainer *container,
                                                             const gchar *key);

Gets the value of a given meta item, returns NULL if `meta_item` can not be found.

`container` : | Target container
`key` : | Get the key name of the meta to retrieve
Returns : | `TRUE` if the vale could be optained `FALSE` otherwize

### ges_meta_container_get_boolean ()

    gboolean            ges_meta_container_get_boolean      (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gboolean *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_date ()

    gboolean            ges_meta_container_get_date         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GDate **dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_date_time ()

    gboolean            ges_meta_container_get_date_time    (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GstDateTime **dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_double ()

    gboolean            ges_meta_container_get_double       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gdouble *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_float ()

    gboolean            ges_meta_container_get_float        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gfloat *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_int ()

    gboolean            ges_meta_container_get_int          (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_int64 ()

    gboolean            ges_meta_container_get_int64        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint64 *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_string ()

    const gchar *       ges_meta_container_get_string       (GESMetaContainer *container,
                                                             const gchar *meta_item);

`container` : | Target container
`meta_item` : | Name of the meta item to get Gets the value of a given meta item, returns NULL if `meta_item` can not be found.

### ges_meta_container_get_uint ()

    gboolean            ges_meta_container_get_uint         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_get_uint64 ()

    gboolean            ges_meta_container_get_uint64       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint64 *dest);

`container` : | Target container
`meta_item` : | Name of the meta item to get
`dest` : | 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. [out]

### ges_meta_container_set_boolean ()

    gboolean            ges_meta_container_set_boolean      (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gboolean value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_set_date ()

    gboolean            ges_meta_container_set_date         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GDate *value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_date_time ()

    gboolean            ges_meta_container_set_date_time    (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GstDateTime *value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_double ()

    gboolean            ges_meta_container_set_double       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gdouble value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_float ()

    gboolean            ges_meta_container_set_float        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gfloat value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_int ()

    gboolean            ges_meta_container_set_int          (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_int64 ()

    gboolean            ges_meta_container_set_int64        (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             gint64 value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_string ()

    gboolean            ges_meta_container_set_string       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const gchar *value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_uint ()

    gboolean            ges_meta_container_set_uint         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_uint64 ()

    gboolean            ges_meta_container_set_uint64       (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             guint64 value);

Sets the value of a given meta item

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_set_meta ()

    gboolean            ges_meta_container_set_meta         (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             const GValue *value);

Return: `TRUE` if the meta could be added, `FALSE` otherwize

`container` : | Target container
`meta_item` : | Name of the meta item to set
`value` : | Value to set Sets the value of a given meta item

### ges_meta_container_register_meta_boolean ()

    gboolean            ges_meta_container_register_meta_boolean
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gboolean value);

### ges_meta_container_register_meta_int ()

    gboolean            ges_meta_container_register_meta_int
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gint value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_uint ()

    gboolean            ges_meta_container_register_meta_uint
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             guint value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_int64 ()

    gboolean            ges_meta_container_register_meta_int64
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gint64 value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_uint64 ()

    gboolean            ges_meta_container_register_meta_uint64
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             guint64 value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_float ()

    gboolean            ges_meta_container_register_meta_float
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gfloat value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_double ()

    gboolean            ges_meta_container_register_meta_double
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             gdouble value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_date ()

    gboolean            ges_meta_container_register_meta_date
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GDate *value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_date_time ()

    gboolean            ges_meta_container_register_meta_date_time
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GstDateTime *value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta_string ()

    gboolean            ges_meta_container_register_meta_string
                                                            (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const gchar *value);

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`.

Return: `TRUE` if the meta could be register, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set. [allow-none]

### ges_meta_container_register_meta ()

    gboolean            ges_meta_container_register_meta    (GESMetaContainer *container,
                                                             GESMetaFlag flags,
                                                             const gchar *meta_item,
                                                             const GValue *value);

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`.

Return: `TRUE` if the static meta could be added, `FALSE` otherwize

`container` : | Target container
`flags` : | The GESMetaFlag to be used
`meta_item` : | Name of the meta item to set
`value` : | Value to set

### ges_meta_container_metas_to_string ()

    gchar *             ges_meta_container_metas_to_string  (GESMetaContainer *container);

Serializes a meta container to a string.

`container` : | a GESMetaContainer
Returns : | a newly-allocated string, or NULL in case of an error. The string must be freed with `g_free()` when no longer needed.

### ges_meta_container_add_metas_from_string ()

    gboolean            ges_meta_container_add_metas_from_string
                                                            (GESMetaContainer *container,
                                                             const gchar *str);

Deserializes a meta container.

`str` : | a string created with `ges_meta_container_metas_to_string()`
`container` : | Target container
Returns : | a new GESMetaContainer, or NULL in case of an error. [transfer full]

### ges_meta_container_get_type ()

    GType               ges_meta_container_get_type         (void);

### ges_meta_container_check_meta_registered ()

    gboolean            ges_meta_container_check_meta_registered
                                                            (GESMetaContainer *container,
                                                             const gchar *meta_item,
                                                             GESMetaFlag *flags,
                                                             GType *type);

### GES_META_FORMATTER_NAME

    #define GES_META_FORMATTER_NAME                       "name"

Name of a formatter it is used as ID of Formater assets (string)

The name of the formatter

### GES_META_FORMATTER_MIMETYPE

    #define GES_META_FORMATTER_MIMETYPE                   "mimetype"

Mimetype used for the file produced by a formatter (string)

The mime type

### GES_META_FORMATTER_EXTENSION

    #define GES_META_FORMATTER_EXTENSION                  "extension"

The extension of the files produced by a formatter (string)

### GES_META_FORMATTER_VERSION

    #define GES_META_FORMATTER_VERSION                    "version"

The version of a formatter (double)

The formatter version

### GES_META_FORMATTER_RANK

    #define GES_META_FORMATTER_RANK                       "rank"

The rank of a formatter (GstRank)

The rank of a formatter

### GES_META_DESCRIPTION

    #define GES_META_DESCRIPTION                         "description"

The description of an object, can be used in various context (string)

The description

## Signal Details

### The `"notify-meta"` signal

    void                user_function                      (GESMetaContainer *gesmetacontainer,
                                                            gchar            *arg1,
                                                            GValue           *arg2,
                                                            gpointer          user_data)             : No Hooks