## GstTagList

GstTagList — List of tags and values used to describe media metadata

## Functions

void | (*GstTagForeachFunc) ()
void | (*GstTagMergeFunc) ()
void | gst_tag_register ()
void | gst_tag_register_static ()
void | gst_tag_merge_use_first ()
void | gst_tag_merge_strings_with_comma ()
gboolean | gst_tag_exists ()
GType | gst_tag_get_type ()
const gchar * | gst_tag_get_nick ()
const gchar * | gst_tag_get_description ()
GstTagFlag | gst_tag_get_flag ()
gboolean | gst_tag_is_fixed ()
GstTagList * | gst_tag_list_new ()
GstTagList * | gst_tag_list_new_empty ()
GstTagList * | gst_tag_list_new_valist ()
GstTagList * | gst_tag_list_new_from_string ()
#define | gst_tag_list_free()
GstTagScope | gst_tag_list_get_scope ()
void | gst_tag_list_set_scope ()
gchar * | gst_tag_list_to_string ()
gboolean | gst_tag_list_is_empty ()
gboolean | gst_tag_list_is_equal ()
GstTagList * | gst_tag_list_copy ()
GstTagList * | gst_tag_list_ref ()
void | gst_tag_list_unref ()
void | gst_clear_tag_list ()
#define | gst_tag_list_is_writable()
#define | gst_tag_list_make_writable()
gboolean | gst_tag_list_replace ()
gboolean | gst_tag_list_take ()
void | gst_tag_list_insert ()
GstTagList * | gst_tag_list_merge ()
guint | gst_tag_list_get_tag_size ()
gint | gst_tag_list_n_tags ()
const gchar * | gst_tag_list_nth_tag_name ()
void | gst_tag_list_add ()
void | gst_tag_list_add_value ()
void | gst_tag_list_add_values ()
void | gst_tag_list_add_valist ()
void | gst_tag_list_add_valist_values ()
void | gst_tag_list_remove_tag ()
void | gst_tag_list_foreach ()
const GValue * | gst_tag_list_get_value_index ()
gboolean | gst_tag_list_copy_value ()
gboolean | gst_tag_list_get_boolean ()
gboolean | gst_tag_list_get_boolean_index ()
gboolean | gst_tag_list_get_int ()
gboolean | gst_tag_list_get_int_index ()
gboolean | gst_tag_list_get_uint ()
gboolean | gst_tag_list_get_uint_index ()
gboolean | gst_tag_list_get_int64 ()
gboolean | gst_tag_list_get_int64_index ()
gboolean | gst_tag_list_get_uint64 ()
gboolean | gst_tag_list_get_uint64_index ()
gboolean | gst_tag_list_get_float ()
gboolean | gst_tag_list_get_float_index ()
gboolean | gst_tag_list_get_double ()
gboolean | gst_tag_list_get_double_index ()
gboolean | gst_tag_list_get_string ()
gboolean | gst_tag_list_get_string_index ()
gboolean | gst_tag_list_peek_string_index ()
gboolean | gst_tag_list_get_pointer ()
gboolean | gst_tag_list_get_pointer_index ()
gboolean | gst_tag_list_get_date ()
gboolean | gst_tag_list_get_date_index ()
gboolean | gst_tag_list_get_date_time ()
gboolean | gst_tag_list_get_date_time_index ()
gboolean | gst_tag_list_get_sample ()
gboolean | gst_tag_list_get_sample_index ()

## Types and Values

struct | GstTagList
enum | GstTagMergeMode
enum | GstTagFlag
enum | GstTagScope
#define | GST_TAG_TITLE
#define | GST_TAG_TITLE_SORTNAME
#define | GST_TAG_ARTIST
#define | GST_TAG_ARTIST_SORTNAME
#define | GST_TAG_ALBUM
#define | GST_TAG_ALBUM_SORTNAME
#define | GST_TAG_ALBUM_ARTIST
#define | GST_TAG_ALBUM_ARTIST_SORTNAME
#define | GST_TAG_DATE
#define | GST_TAG_DATE_TIME
#define | GST_TAG_GENRE
#define | GST_TAG_COMMENT
#define | GST_TAG_EXTENDED_COMMENT
#define | GST_TAG_TRACK_NUMBER
#define | GST_TAG_TRACK_COUNT
#define | GST_TAG_ALBUM_VOLUME_NUMBER
#define | GST_TAG_ALBUM_VOLUME_COUNT
#define | GST_TAG_LOCATION
#define | GST_TAG_HOMEPAGE
#define | GST_TAG_DESCRIPTION
#define | GST_TAG_VERSION
#define | GST_TAG_ISRC
#define | GST_TAG_ORGANIZATION
#define | GST_TAG_COPYRIGHT
#define | GST_TAG_COPYRIGHT_URI
#define | GST_TAG_ENCODED_BY
#define | GST_TAG_COMPOSER
#define | GST_TAG_CONDUCTOR
#define | GST_TAG_CONTACT
#define | GST_TAG_LICENSE
#define | GST_TAG_LICENSE_URI
#define | GST_TAG_PERFORMER
#define | GST_TAG_DURATION
#define | GST_TAG_CODEC
#define | GST_TAG_VIDEO_CODEC
#define | GST_TAG_AUDIO_CODEC
#define | GST_TAG_SUBTITLE_CODEC
#define | GST_TAG_CONTAINER_FORMAT
#define | GST_TAG_BITRATE
#define | GST_TAG_NOMINAL_BITRATE
#define | GST_TAG_MINIMUM_BITRATE
#define | GST_TAG_MAXIMUM_BITRATE
#define | GST_TAG_SERIAL
#define | GST_TAG_ENCODER
#define | GST_TAG_ENCODER_VERSION
#define | GST_TAG_TRACK_GAIN
#define | GST_TAG_TRACK_PEAK
#define | GST_TAG_ALBUM_GAIN
#define | GST_TAG_ALBUM_PEAK
#define | GST_TAG_REFERENCE_LEVEL
#define | GST_TAG_LANGUAGE_CODE
#define | GST_TAG_LANGUAGE_NAME
#define | GST_TAG_IMAGE
#define | GST_TAG_PREVIEW_IMAGE
#define | GST_TAG_ATTACHMENT
#define | GST_TAG_BEATS_PER_MINUTE
#define | GST_TAG_KEYWORDS
#define | GST_TAG_GEO_LOCATION_NAME
#define | GST_TAG_GEO_LOCATION_LATITUDE
#define | GST_TAG_GEO_LOCATION_LONGITUDE
#define | GST_TAG_GEO_LOCATION_ELEVATION
#define | GST_TAG_GEO_LOCATION_CITY
#define | GST_TAG_GEO_LOCATION_COUNTRY
#define | GST_TAG_GEO_LOCATION_SUBLOCATION
#define | GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR
#define | GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION
#define | GST_TAG_GEO_LOCATION_MOVEMENT_SPEED
#define | GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION
#define | GST_TAG_SHOW_NAME
#define | GST_TAG_SHOW_SORTNAME
#define | GST_TAG_SHOW_EPISODE_NUMBER
#define | GST_TAG_SHOW_SEASON_NUMBER
#define | GST_TAG_LYRICS
#define | GST_TAG_COMPOSER_SORTNAME
#define | GST_TAG_GROUPING
#define | GST_TAG_USER_RATING
#define | GST_TAG_DEVICE_MANUFACTURER
#define | GST_TAG_DEVICE_MODEL
#define | GST_TAG_APPLICATION_NAME
#define | GST_TAG_APPLICATION_DATA
#define | GST_TAG_IMAGE_ORIENTATION
#define | GST_TAG_PUBLISHER
#define | GST_TAG_INTERPRETED_BY
#define | GST_TAG_MIDI_BASE_NOTE
#define | GST_TAG_PRIVATE_DATA

## Object Hierarchy

        GBoxed
        ╰── GstTagList

## Includes

    #include <gst/gst.h>

## Description

List of tags and values used to describe media metadata.

Strings in structures must be ASCII or UTF-8 encoded. Other encodings are not allowed. Strings must not be empty or `NULL`.

## Functions

### GstTagForeachFunc ()

    void
    (*GstTagForeachFunc) (const GstTagList *list,
                          const gchar *tag,
                          gpointer user_data);

A function that will be called in `gst_tag_list_foreach()`. The function may not modify the tag list.

#### Parameters

list | the GstTagList |
tag | a name of a tag in `list` |
user_data | user data |

### GstTagMergeFunc ()

    void
    (*GstTagMergeFunc) (GValue *dest,
                        const GValue *src);

A function for merging multiple values of a tag used when registering tags.

#### Parameters

dest | the destination GValue |
src | the source GValue |

### gst_tag_register ()

    void
    gst_tag_register (const gchar *name,
                      GstTagFlag flag,
                      GType type,
                      const gchar *nick,
                      const gchar *blurb,
                      GstTagMergeFunc func);

Registers a new tag type for the use with GStreamer's type system. If a type with that name is already registered, that one is used. The old registration may have used a different type however. So don't rely on your supplied values.

Important: if you do not supply a merge function the implication will be that there can only be one single value for this tag in a tag list and any additional values will silently be discarded when being added (unless GST_TAG_MERGE_REPLACE, GST_TAG_MERGE_REPLACE_ALL, or GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new value will replace the old one in the list).

The merge function will be called from `gst_tag_list_copy_value()` when it is required that one or more values for a tag be condensed into one single value. This may happen from `gst_tag_list_get_string()`, `gst_tag_list_get_int()`, `gst_tag_list_get_double()` etc. What will happen exactly in that case depends on how the tag was registered and if a merge function was supplied and if so which one.

Two default merge functions are provided: `gst_tag_merge_use_first()` and `gst_tag_merge_strings_with_comma()`.

[skip]

#### Parameters

name | the name or identifier string |
flag | a flag describing the type of tag info |
type | the type this data is in |
nick | human-readable name |
blurb | a human-readable description about this tag |
func | function for merging multiple values of this tag, or `NULL`. | [allow-none]

### gst_tag_register_static ()

    void
    gst_tag_register_static (const gchar *name,
                             GstTagFlag flag,
                             GType type,
                             const gchar *nick,
                             const gchar *blurb,
                             GstTagMergeFunc func);

Registers a new tag type for the use with GStreamer's type system.

Same as `gst_tag_register()`, but `name` , `nick` , and `blurb` must be static strings or inlined strings, as they will not be copied. (GStreamer plugins will be made resident once loaded, so this function can be used even from dynamically loaded plugins.)

[skip]

#### Parameters

name | the name or identifier string (string constant) |
flag | a flag describing the type of tag info |
type | the type this data is in |
nick | human-readable name or short description (string constant) |
blurb | a human-readable description for this tag (string constant) |
func | function for merging multiple values of this tag, or `NULL`. | [allow-none]

### gst_tag_merge_use_first ()

    void
    gst_tag_merge_use_first (GValue *dest,
                             const GValue *src);

This is a convenience function for the func argument of `gst_tag_register()`. It creates a copy of the first value from the list.

#### Parameters

dest | uninitialized GValue to store result in. | [out caller-allocates]
src | GValue to copy from |

### gst_tag_merge_strings_with_comma ()

    void
    gst_tag_merge_strings_with_comma (GValue *dest,
                                      const GValue *src);

This is a convenience function for the func argument of `gst_tag_register()`. It concatenates all given strings using a comma. The tag must be registered as a G_TYPE_STRING or this function will fail.

#### Parameters

dest | uninitialized GValue to store result in. | [out caller-allocates]
src | GValue to copy from |

### gst_tag_exists ()

    gboolean
    gst_tag_exists (const gchar *tag);

Checks if the given type is already registered.

#### Parameters

tag | name of the tag |

#### Returns

`TRUE` if the type is already registered

### gst_tag_get_type ()

    GType
    gst_tag_get_type (const gchar *tag);

Gets the GType used for this tag.

#### Parameters

tag | the tag |

#### Returns

the GType of this tag

### gst_tag_get_nick ()

    const gchar *
    gst_tag_get_nick (const gchar *tag);

Returns the human-readable name of this tag, You must not change or free this string.

#### Parameters

tag | the tag |

#### Returns

the human-readable name of this tag.

[nullable]

### gst_tag_get_description ()

    const gchar *
    gst_tag_get_description (const gchar *tag);

Returns the human-readable description of this tag, You must not change or free this string.

#### Parameters

tag | the tag |

#### Returns

the human-readable description of this tag.

[nullable]

### gst_tag_get_flag ()

    GstTagFlag
    gst_tag_get_flag (const gchar *tag);

Gets the flag of `tag` .

#### Parameters

tag | the tag |

#### Returns

the flag of this tag.

### gst_tag_is_fixed ()

    gboolean
    gst_tag_is_fixed (const gchar *tag);

Checks if the given tag is fixed. A fixed tag can only contain one value. Unfixed tags can contain lists of values.

#### Parameters

tag | tag to check |

#### Returns

`TRUE`, if the given tag is fixed.

### gst_tag_list_new ()

    GstTagList *
    gst_tag_list_new (const gchar *tag,
                      ...);

Creates a new taglist and appends the values for the given tags. It expects tag-value pairs like `gst_tag_list_add()`, and a `NULL` terminator after the last pair. The type of the values is implicit and is documented in the API reference, but can also be queried at runtime with `gst_tag_get_type()`. It is an error to pass a value of a type not matching the tag type into this function. The tag list will make copies of any arguments passed (e.g. strings, buffers).

After creation you might also want to set a GstTagScope on the returned taglist to signal if the contained tags are global or stream tags. By default stream scope is assumes. See `gst_tag_list_set_scope()`.

Free-function: gst_tag_list_unref

#### Parameters

tag | tag |
... | `NULL`-terminated list of values to set |

#### Returns

a new GstTagList. Free with `gst_tag_list_unref()` when no longer needed.

[transfer full]

### gst_tag_list_new_empty ()

    GstTagList *
    gst_tag_list_new_empty (void);

Creates a new empty GstTagList.

Free-function: gst_tag_list_unref

#### Returns

An empty tag list.

[transfer full]

### gst_tag_list_new_valist ()

    GstTagList *
    gst_tag_list_new_valist (va_list var_args);

Just like `gst_tag_list_new()`, only that it takes a va_list argument. Useful mostly for language bindings.

Free-function: gst_tag_list_unref

#### Parameters

var_args | tag / value pairs to set |

#### Returns

a new GstTagList. Free with `gst_tag_list_unref()` when no longer needed.

[transfer full]

### gst_tag_list_new_from_string ()

    GstTagList *
    gst_tag_list_new_from_string (const gchar *str);

Deserializes a tag list.

#### Parameters

str | a string created with `gst_tag_list_to_string()` |

#### Returns

a new GstTagList, or `NULL` in case of an error.

[nullable]

### gst_tag_list_free()

    #define gst_tag_list_free(taglist)    gst_tag_list_unref(taglist)

`gst_tag_list_free` is deprecated and should not be used in newly-written code.

### gst_tag_list_get_scope ()

    GstTagScope
    gst_tag_list_get_scope (const GstTagList *list);

Gets the scope of `list` .

#### Parameters

list | a GstTagList |

#### Returns

The scope of `list`

### gst_tag_list_set_scope ()

    void
    gst_tag_list_set_scope (GstTagList *list,
                            GstTagScope scope);

Sets the scope of `list` to `scope` . By default the scope of a taglist is stream scope.

#### Parameters

list | a GstTagList |
scope | new scope for `list` |

### gst_tag_list_to_string ()

    gchar *
    gst_tag_list_to_string (const GstTagList *list);

Serializes a tag list to a string.

#### Parameters

list | a GstTagList |

#### Returns

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

[nullable]

### gst_tag_list_is_empty ()

    gboolean
    gst_tag_list_is_empty (const GstTagList *list);

Checks if the given taglist is empty.

#### Parameters

list | A GstTagList. |

#### Returns

`TRUE` if the taglist is empty, otherwise `FALSE`.

### gst_tag_list_is_equal ()

    gboolean
    gst_tag_list_is_equal (const GstTagList *list1,
                           const GstTagList *list2);

Checks if the two given taglists are equal.

#### Parameters

list1 | a GstTagList. |
list2 | a GstTagList. |

#### Returns

`TRUE` if the taglists are equal, otherwise `FALSE`

### gst_tag_list_copy ()

    GstTagList *
    gst_tag_list_copy (const GstTagList *taglist);

Creates a new GstTagList as a copy of the old `taglist` . The new taglist will have a refcount of 1, owned by the caller, and will be writable as a result.

Note that this function is the semantic equivalent of a `gst_tag_list_ref()` followed by a `gst_tag_list_make_writable()`. If you only want to hold on to a reference to the data, you should use `gst_tag_list_ref()`.

When you are finished with the taglist, call `gst_tag_list_unref()` on it.

#### Parameters

taglist | a GstTagList. |

#### Returns

the new GstTagList

### gst_tag_list_ref ()

    GstTagList *
    gst_tag_list_ref (GstTagList *taglist);

Add a reference to a GstTagList mini object.

From this point on, until the caller calls `gst_tag_list_unref()` or `gst_tag_list_make_writable()`, it is guaranteed that the taglist object will not change. To use a GstTagList object, you must always have a refcount on it -- either the one made implicitly by e.g. `gst_tag_list_new()`, or via taking one explicitly with this function.

#### Parameters

taglist | the GstTagList to reference |

#### Returns

the same GstTagList mini object.

### gst_tag_list_unref ()

    void
    gst_tag_list_unref (GstTagList *taglist);

Unref a GstTagList, and and free all its memory when the refcount reaches 0.

#### Parameters

taglist | a GstTagList. |

### gst_clear_tag_list ()

    void
    gst_clear_tag_list (GstTagList **taglist_ptr);

Clears a reference to a GstTagList.

`taglist_ptr` must not be `NULL`.

If the reference is `NULL` then this function does nothing. Otherwise, the reference count of the taglist is decreased and the pointer is set to `NULL`.

[skip]

#### Parameters

taglist_ptr | a pointer to a GstTagList reference |

Since: 1.16

### gst_tag_list_is_writable()

    #define gst_tag_list_is_writable(taglist)    gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (taglist))

Tests if you can safely modify `taglist` . It is only safe to modify taglist when there is only one owner of the taglist - ie, the refcount is 1.

#### Parameters

taglist | a GstTagList |

### gst_tag_list_make_writable()

    #define gst_tag_list_make_writable(taglist)   GST_TAG_LIST (gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (taglist)))

Returns a writable copy of `taglist` .

If there is only one reference count on `taglist` , the caller must be the owner, and so this function will return the taglist object unchanged. If on the other hand there is more than one reference on the object, a new taglist object will be returned (which will be a copy of `taglist` ). The caller's reference on `taglist` will be removed, and instead the caller will own a reference to the returned object.

In short, this function unrefs the taglist in the argument and refs the taglist that it returns. Don't access the argument after calling this function. See also: `gst_tag_list_ref()`.

#### Parameters

taglist | a GstTagList. | [transfer full]

#### Returns

a writable taglist which may or may not be the same as `taglist` .

[transfer full]

### gst_tag_list_replace ()

    gboolean
    gst_tag_list_replace (GstTagList **old_taglist,
                          GstTagList *new_taglist);

Modifies a pointer to a GstTagList to point to a different GstTagList. The modification is done atomically (so this is useful for ensuring thread safety in some cases), and the reference counts are updated appropriately (the old tag list is unreffed, the new is reffed).

Either `new_taglist` or the GstTagList pointed to by `old_taglist` may be `NULL`.

#### Parameters

old_taglist | pointer to a pointer to a GstTagList to be replaced. | [inout][transfer full][nullable]
new_taglist | pointer to a GstTagList that will replace the tag list pointed to by `old_taglist` . | [transfer none][allow-none]

#### Returns

`TRUE` if `new_taglist` was different from `old_taglist`

Since: 1.16

### gst_tag_list_take ()

    gboolean
    gst_tag_list_take (GstTagList **old_taglist,
                       GstTagList *new_taglist);

Modifies a pointer to a GstTagList to point to a different GstTagList. This function is similar to `gst_tag_list_replace()` except that it takes ownership of `new_taglist` .

#### Parameters

old_taglist | pointer to a pointer to a GstTagList to be replaced. | [inout][transfer full]
new_taglist | pointer to a GstTagList that will replace the taglist pointed to by `old_taglist` . | [transfer full][allow-none]

#### Returns

`TRUE` if `new_taglist` was different from `old_taglist`

Since: 1.16

### gst_tag_list_insert ()

    void
    gst_tag_list_insert (GstTagList *into,
                         const GstTagList *from,
                         GstTagMergeMode mode);

Inserts the tags of the `from` list into the first list using the given mode.

#### Parameters

into | list to merge into |
from | list to merge from |
mode | the mode to use |

### gst_tag_list_merge ()

    GstTagList *
    gst_tag_list_merge (const GstTagList *list1,
                        const GstTagList *list2,
                        GstTagMergeMode mode);

Merges the two given lists into a new list. If one of the lists is `NULL`, a copy of the other is returned. If both lists are `NULL`, `NULL` is returned.

Free-function: gst_tag_list_unref

#### Parameters

list1 | first list to merge. | [allow-none]
list2 | second list to merge. | [allow-none]
mode | the mode to use |

#### Returns

the new list.

[transfer full][nullable]

### gst_tag_list_get_tag_size ()

    guint
    gst_tag_list_get_tag_size (const GstTagList *list,
                               const gchar *tag);

Checks how many value are stored in this tag list for the given tag.

#### Parameters

list | a taglist |
tag | the tag to query |

#### Returns

The number of tags stored

### gst_tag_list_n_tags ()

    gint
    gst_tag_list_n_tags (const GstTagList *list);

Get the number of tags in `list` .

#### Parameters

list | A GstTagList. |

#### Returns

The number of tags in `list` .

### gst_tag_list_nth_tag_name ()

    const gchar *
    gst_tag_list_nth_tag_name (const GstTagList *list,
                               guint index);

Get the name of the tag in `list` at `index` .

#### Parameters

list | A GstTagList. |
index | the index |

#### Returns

The name of the tag at `index` .

### gst_tag_list_add ()

    void
    gst_tag_list_add (GstTagList *list,
                      GstTagMergeMode mode,
                      const gchar *tag,
                      ...);

Sets the values for the given tags using the specified mode.

#### Parameters

list | list to set tags in |
mode | the mode to use |
tag | tag |
... | `NULL`-terminated list of values to set |

### gst_tag_list_add_value ()

    void
    gst_tag_list_add_value (GstTagList *list,
                            GstTagMergeMode mode,
                            const gchar *tag,
                            const GValue *value);

Sets the GValue for a given tag using the specified mode.

#### Parameters

list | list to set tags in |
mode | the mode to use |
tag | tag |
value | GValue for this tag |

### gst_tag_list_add_values ()

    void
    gst_tag_list_add_values (GstTagList *list,
                             GstTagMergeMode mode,
                             const gchar *tag,
                             ...);

Sets the GValues for the given tags using the specified mode.

#### Parameters

list | list to set tags in |
mode | the mode to use |
tag | tag |
... | GValues to set |

### gst_tag_list_add_valist ()

    void
    gst_tag_list_add_valist (GstTagList *list,
                             GstTagMergeMode mode,
                             const gchar *tag,
                             va_list var_args);

Sets the values for the given tags using the specified mode.

#### Parameters

list | list to set tags in |
mode | the mode to use |
tag | tag |
var_args | tag / value pairs to set |

### gst_tag_list_add_valist_values ()

    void
    gst_tag_list_add_valist_values (GstTagList *list,
                                    GstTagMergeMode mode,
                                    const gchar *tag,
                                    va_list var_args);

Sets the GValues for the given tags using the specified mode.

#### Parameters

list | list to set tags in |
mode | the mode to use |
tag | tag |
var_args | tag / GValue pairs to set |

### gst_tag_list_remove_tag ()

    void
    gst_tag_list_remove_tag (GstTagList *list,
                             const gchar *tag);

Removes the given tag from the taglist.

#### Parameters

list | list to remove tag from |
tag | tag to remove |

### gst_tag_list_foreach ()

    void
    gst_tag_list_foreach (const GstTagList *list,
                          GstTagForeachFunc func,
                          gpointer user_data);

Calls the given function for each tag inside the tag list. Note that if there is no tag, the function won't be called at all.

#### Parameters

list | list to iterate over |
func | function to be called for each tag. | [scope call]
user_data | user specified data. | [closure]

### gst_tag_list_get_value_index ()

    const GValue *
    gst_tag_list_get_value_index (const GstTagList *list,
                                  const gchar *tag,
                                  guint index);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList |
tag | tag to read out |
index | number of entry to read out |

#### Returns

The GValue for the specified entry or `NULL` if the tag wasn't available or the tag doesn't have as many entries.

[transfer none][nullable]

### gst_tag_list_copy_value ()

    gboolean
    gst_tag_list_copy_value (GValue *dest,
                             const GstTagList *list,
                             const gchar *tag);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag. You must `g_value_unset()` the value after use.

#### Parameters

dest | uninitialized GValue to copy into. | [out caller-allocates]
list | list to get the tag from |
tag | tag to read out |

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_boolean ()

    gboolean
    gst_tag_list_get_boolean (const GstTagList *list,
                              const gchar *tag,
                              gboolean *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_boolean_index ()

    gboolean
    gst_tag_list_get_boolean_index (const GstTagList *list,
                                    const gchar *tag,
                                    guint index,
                                    gboolean *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_int ()

    gboolean
    gst_tag_list_get_int (const GstTagList *list,
                          const gchar *tag,
                          gint *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_int_index ()

    gboolean
    gst_tag_list_get_int_index (const GstTagList *list,
                                const gchar *tag,
                                guint index,
                                gint *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_uint ()

    gboolean
    gst_tag_list_get_uint (const GstTagList *list,
                           const gchar *tag,
                           guint *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_uint_index ()

    gboolean
    gst_tag_list_get_uint_index (const GstTagList *list,
                                 const gchar *tag,
                                 guint index,
                                 guint *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_int64 ()

    gboolean
    gst_tag_list_get_int64 (const GstTagList *list,
                            const gchar *tag,
                            gint64 *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_int64_index ()

    gboolean
    gst_tag_list_get_int64_index (const GstTagList *list,
                                  const gchar *tag,
                                  guint index,
                                  gint64 *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_uint64 ()

    gboolean
    gst_tag_list_get_uint64 (const GstTagList *list,
                             const gchar *tag,
                             guint64 *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_uint64_index ()

    gboolean
    gst_tag_list_get_uint64_index (const GstTagList *list,
                                   const gchar *tag,
                                   guint index,
                                   guint64 *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_float ()

    gboolean
    gst_tag_list_get_float (const GstTagList *list,
                            const gchar *tag,
                            gfloat *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_float_index ()

    gboolean
    gst_tag_list_get_float_index (const GstTagList *list,
                                  const gchar *tag,
                                  guint index,
                                  gfloat *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_double ()

    gboolean
    gst_tag_list_get_double (const GstTagList *list,
                             const gchar *tag,
                             gdouble *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_double_index ()

    gboolean
    gst_tag_list_get_double_index (const GstTagList *list,
                                   const gchar *tag,
                                   guint index,
                                   gdouble *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_string ()

    gboolean
    gst_tag_list_get_string (const GstTagList *list,
                             const gchar *tag,
                             gchar **value);

Copies the contents for the given tag into the value, possibly merging multiple values into one if multiple values are associated with the tag.

Use gst_tag_list_get_string_index (list, tag, 0, value) if you want to retrieve the first string associated with this tag unmodified.

The resulting string in `value` will be in UTF-8 encoding and should be freed by the caller using g_free when no longer needed. The returned string is also guaranteed to be non-`NULL` and non-empty.

Free-function: g_free

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_string_index ()

    gboolean
    gst_tag_list_get_string_index (const GstTagList *list,
                                   const gchar *tag,
                                   guint index,
                                   gchar **value);

Gets the value that is at the given index for the given tag in the given list.

The resulting string in `value` will be in UTF-8 encoding and should be freed by the caller using g_free when no longer needed. The returned string is also guaranteed to be non-`NULL` and non-empty.

Free-function: g_free

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_peek_string_index ()

    gboolean
    gst_tag_list_peek_string_index (const GstTagList *list,
                                    const gchar *tag,
                                    guint index,
                                    const gchar **value);

Peeks at the value that is at the given index for the given tag in the given list.

The resulting string in `value` will be in UTF-8 encoding and doesn't need to be freed by the caller. The returned string is also guaranteed to be non-`NULL` and non-empty.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out][transfer none]

#### Returns

`TRUE`, if a value was set, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_pointer ()

    gboolean
    gst_tag_list_get_pointer (const GstTagList *list,
                              const gchar *tag,
                              gpointer *value);

Copies the contents for the given tag into the value, merging multiple values into one if multiple values are associated with the tag.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | location for the result. | [out][transfer none]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_pointer_index ()

    gboolean
    gst_tag_list_get_pointer_index (const GstTagList *list,
                                    const gchar *tag,
                                    guint index,
                                    gpointer *value);

Gets the value that is at the given index for the given tag in the given list.

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out][transfer none]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list.

### gst_tag_list_get_date ()

    gboolean
    gst_tag_list_get_date (const GstTagList *list,
                           const gchar *tag,
                           GDate **value);

Copies the first date for the given tag in the taglist into the variable pointed to by `value` . Free the date with `g_date_free()` when it is no longer needed.

Free-function: g_date_free

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | address of a GDate pointer variable to store the result into. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a date was copied, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

### gst_tag_list_get_date_index ()

    gboolean
    gst_tag_list_get_date_index (const GstTagList *list,
                                 const gchar *tag,
                                 guint index,
                                 GDate **value);

Gets the date that is at the given index for the given tag in the given list and copies it into the variable pointed to by `value` . Free the date with `g_date_free()` when it is no longer needed.

Free-function: g_date_free

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

### gst_tag_list_get_date_time ()

    gboolean
    gst_tag_list_get_date_time (const GstTagList *list,
                                const gchar *tag,
                                GstDateTime **value);

Copies the first datetime for the given tag in the taglist into the variable pointed to by `value` . Unref the date with `gst_date_time_unref()` when it is no longer needed.

Free-function: gst_date_time_unref

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
value | address of a GstDateTime pointer variable to store the result into. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a datetime was copied, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

### gst_tag_list_get_date_time_index ()

    gboolean
    gst_tag_list_get_date_time_index (const GstTagList *list,
                                      const gchar *tag,
                                      guint index,
                                      GstDateTime **value);

Gets the datetime that is at the given index for the given tag in the given list and copies it into the variable pointed to by `value` . Unref the datetime with `gst_date_time_unref()` when it is no longer needed.

Free-function: gst_date_time_unref

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
value | location for the result. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a value was copied, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

### gst_tag_list_get_sample ()

    gboolean
    gst_tag_list_get_sample (const GstTagList *list,
                             const gchar *tag,
                             GstSample **sample);

Copies the first sample for the given tag in the taglist into the variable pointed to by `sample` . Free the sample with `gst_sample_unref()` when it is no longer needed. You can retrieve the buffer from the sample using `gst_sample_get_buffer()` and the associated caps (if any) with `gst_sample_get_caps()`.

Free-function: gst_sample_unref

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
sample | address of a GstSample pointer variable to store the result into. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a sample was returned, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

### gst_tag_list_get_sample_index ()

    gboolean
    gst_tag_list_get_sample_index (const GstTagList *list,
                                   const gchar *tag,
                                   guint index,
                                   GstSample **sample);

Gets the sample that is at the given index for the given tag in the given list and copies it into the variable pointed to by `sample` . Free the sample with `gst_sample_unref()` when it is no longer needed. You can retrieve the buffer from the sample using `gst_sample_get_buffer()` and the associated caps (if any) with `gst_sample_get_caps()`.

Free-function: gst_sample_unref

#### Parameters

list | a GstTagList to get the tag from |
tag | tag to read out |
index | number of entry to read out |
sample | address of a GstSample pointer variable to store the result into. | [out callee-allocates][transfer full]

#### Returns

`TRUE`, if a sample was copied, `FALSE` if the tag didn't exist in the given list or if it was `NULL`.

## Types and Values

### struct GstTagList

    struct GstTagList {
      GstMiniObject mini_object;
    };

Object describing tags / metadata.

#### Members

GstMiniObject `mini_object`; | the parent type |

### enum GstTagMergeMode

The different tag merging modes are basically replace, overwrite and append, but they can be seen from two directions. Given two taglists: (A) the tags already in the element and (B) the ones that are supplied to the element ( e.g. via `gst_tag_setter_merge_tags()` / `gst_tag_setter_add_tags()` or a `GST_EVENT_TAG`), how are these tags merged? In the table below this is shown for the cases that a tag exists in the list (A) or does not exists (!A) and combinations thereof.

Table 1. merge mode

merge mode | A + B | A + !B | !A + B | !A + !B
--- | --- | --- | --- | ---
REPLACE_ALL | B | - | B | -
REPLACE | B | A | B | -
APPEND | A, B | A | B | -
PREPEND | B, A | A | B | -
KEEP | A | A | B | -
KEEP_ALL | A | A | - | -

#### Members

GST_TAG_MERGE_UNDEFINED | undefined merge mode |
GST_TAG_MERGE_REPLACE_ALL | replace all tags (clear list and append) |
GST_TAG_MERGE_REPLACE | replace tags |
GST_TAG_MERGE_APPEND | append tags |
GST_TAG_MERGE_PREPEND | prepend tags |
GST_TAG_MERGE_KEEP | keep existing tags |
GST_TAG_MERGE_KEEP_ALL | keep all existing tags |
GST_TAG_MERGE_COUNT | the number of merge modes |

### enum GstTagFlag

Extra tag flags used when registering tags.

#### Members

GST_TAG_FLAG_UNDEFINED | undefined flag |
GST_TAG_FLAG_META | tag is meta data |
GST_TAG_FLAG_ENCODED | tag is encoded |
GST_TAG_FLAG_DECODED | tag is decoded |
GST_TAG_FLAG_COUNT | number of tag flags |

### enum GstTagScope

GstTagScope specifies if a taglist applies to the complete medium or only to one single stream.

#### Members

GST_TAG_SCOPE_STREAM | tags specific to this single stream |
GST_TAG_SCOPE_GLOBAL | global tags for the complete medium |

### GST_TAG_TITLE

    #define GST_TAG_TITLE                  "title"

commonly used title (string)

The title as it should be displayed, e.g. 'The Doll House'

### GST_TAG_TITLE_SORTNAME

    #define GST_TAG_TITLE_SORTNAME         "title-sortname"

commonly used title, as used for sorting (string)

The title as it should be sorted, e.g. 'Doll House, The'

### GST_TAG_ARTIST

    #define GST_TAG_ARTIST                 "artist"

person(s) responsible for the recording (string)

The artist name as it should be displayed, e.g. 'Jimi Hendrix' or 'The Guitar Heroes'

### GST_TAG_ARTIST_SORTNAME

    #define GST_TAG_ARTIST_SORTNAME        "artist-sortname"

person(s) responsible for the recording, as used for sorting (string)

The artist name as it should be sorted, e.g. 'Hendrix, Jimi' or 'Guitar Heroes, The'

### GST_TAG_ALBUM

    #define GST_TAG_ALBUM                  "album"

album containing this data (string)

The album name as it should be displayed, e.g. 'The Jazz Guitar'

### GST_TAG_ALBUM_SORTNAME

    #define GST_TAG_ALBUM_SORTNAME         "album-sortname"

album containing this data, as used for sorting (string)

The album name as it should be sorted, e.g. 'Jazz Guitar, The'

### GST_TAG_ALBUM_ARTIST

    #define GST_TAG_ALBUM_ARTIST           "album-artist"

The artist of the entire album, as it should be displayed.

### GST_TAG_ALBUM_ARTIST_SORTNAME

    #define GST_TAG_ALBUM_ARTIST_SORTNAME  "album-artist-sortname"

The artist of the entire album, as it should be sorted.

### GST_TAG_DATE

    #define GST_TAG_DATE                   "date"

date the data was created (GDate structure)

### GST_TAG_DATE_TIME

    #define GST_TAG_DATE_TIME              "datetime"

date and time the data was created (GstDateTime structure)

### GST_TAG_GENRE

    #define GST_TAG_GENRE                  "genre"

genre this data belongs to (string)

### GST_TAG_COMMENT

    #define GST_TAG_COMMENT                "comment"

free text commenting the data (string)

### GST_TAG_EXTENDED_COMMENT

    #define GST_TAG_EXTENDED_COMMENT       "extended-comment"

key/value text commenting the data (string)

Must be in the form of 'key=comment' or 'key[lc]=comment' where 'lc' is an ISO-639 language code.

This tag is used for unknown Vorbis comment tags, unknown APE tags and certain ID3v2 comment fields.

### GST_TAG_TRACK_NUMBER

    #define GST_TAG_TRACK_NUMBER           "track-number"

track number inside a collection (unsigned integer)

### GST_TAG_TRACK_COUNT

    #define GST_TAG_TRACK_COUNT            "track-count"

count of tracks inside collection this track belongs to (unsigned integer)

### GST_TAG_ALBUM_VOLUME_NUMBER

    #define GST_TAG_ALBUM_VOLUME_NUMBER    "album-disc-number"

disc number inside a collection (unsigned integer)

### GST_TAG_ALBUM_VOLUME_COUNT

    #define GST_TAG_ALBUM_VOLUME_COUNT    "album-disc-count"

count of discs inside collection this disc belongs to (unsigned integer)

### GST_TAG_LOCATION

    #define GST_TAG_LOCATION               "location"

Origin of media as a URI (location, where the original of the file or stream is hosted) (string)

### GST_TAG_HOMEPAGE

    #define GST_TAG_HOMEPAGE               "homepage"

Homepage for this media (i.e. artist or movie homepage) (string)

### GST_TAG_DESCRIPTION

    #define GST_TAG_DESCRIPTION            "description"

short text describing the content of the data (string)

### GST_TAG_VERSION

    #define GST_TAG_VERSION                "version"

version of this data (string)

### GST_TAG_ISRC

    #define GST_TAG_ISRC                   "isrc"

International Standard Recording Code - see http://www.ifpi.org/isrc/ (string)

### GST_TAG_ORGANIZATION

    #define GST_TAG_ORGANIZATION           "organization"

organization (string)

### GST_TAG_COPYRIGHT

    #define GST_TAG_COPYRIGHT              "copyright"

copyright notice of the data (string)

### GST_TAG_COPYRIGHT_URI

    #define GST_TAG_COPYRIGHT_URI          "copyright-uri"

URI to location where copyright details can be found (string)

### GST_TAG_ENCODED_BY

    #define GST_TAG_ENCODED_BY             "encoded-by"

name of the person or organisation that encoded the file. May contain a copyright message if the person or organisation also holds the copyright (string)

Note: do not use this field to describe the encoding application. Use GST_TAG_APPLICATION_NAME or GST_TAG_COMMENT for that.

### GST_TAG_COMPOSER

    #define GST_TAG_COMPOSER               "composer"

person(s) who composed the recording (string)

### GST_TAG_CONDUCTOR

    #define GST_TAG_CONDUCTOR               "conductor"

conductor/performer refinement (string)

Since: 1.8

### GST_TAG_CONTACT

    #define GST_TAG_CONTACT                "contact"

contact information (string)

### GST_TAG_LICENSE

    #define GST_TAG_LICENSE                "license"

license of data (string)

### GST_TAG_LICENSE_URI

    #define GST_TAG_LICENSE_URI            "license-uri"

URI to location where license details can be found (string)

### GST_TAG_PERFORMER

    #define GST_TAG_PERFORMER              "performer"

person(s) performing (string)

### GST_TAG_DURATION

    #define GST_TAG_DURATION               "duration"

length in GStreamer time units (nanoseconds) (unsigned 64-bit integer)

### GST_TAG_CODEC

    #define GST_TAG_CODEC                  "codec"

codec the data is stored in (string)

### GST_TAG_VIDEO_CODEC

    #define GST_TAG_VIDEO_CODEC            "video-codec"

codec the video data is stored in (string)

### GST_TAG_AUDIO_CODEC

    #define GST_TAG_AUDIO_CODEC            "audio-codec"

codec the audio data is stored in (string)

### GST_TAG_SUBTITLE_CODEC

    #define GST_TAG_SUBTITLE_CODEC         "subtitle-codec"

codec/format the subtitle data is stored in (string)

### GST_TAG_CONTAINER_FORMAT

    #define GST_TAG_CONTAINER_FORMAT       "container-format"

container format the data is stored in (string)

### GST_TAG_BITRATE

    #define GST_TAG_BITRATE                "bitrate"

exact or average bitrate in bits/s (unsigned integer)

### GST_TAG_NOMINAL_BITRATE

    #define GST_TAG_NOMINAL_BITRATE        "nominal-bitrate"

nominal bitrate in bits/s (unsigned integer). The actual bitrate might be different from this target bitrate.

### GST_TAG_MINIMUM_BITRATE

    #define GST_TAG_MINIMUM_BITRATE        "minimum-bitrate"

minimum bitrate in bits/s (unsigned integer)

### GST_TAG_MAXIMUM_BITRATE

    #define GST_TAG_MAXIMUM_BITRATE        "maximum-bitrate"

maximum bitrate in bits/s (unsigned integer)

### GST_TAG_SERIAL

    #define GST_TAG_SERIAL                 "serial"

serial number of track (unsigned integer)

### GST_TAG_ENCODER

    #define GST_TAG_ENCODER                "encoder"

encoder used to encode this stream (string)

### GST_TAG_ENCODER_VERSION

    #define GST_TAG_ENCODER_VERSION        "encoder-version"

version of the encoder used to encode this stream (unsigned integer)

### GST_TAG_TRACK_GAIN

    #define GST_TAG_TRACK_GAIN             "replaygain-track-gain"

track gain in db (double)

### GST_TAG_TRACK_PEAK

    #define GST_TAG_TRACK_PEAK             "replaygain-track-peak"

peak of the track (double)

### GST_TAG_ALBUM_GAIN

    #define GST_TAG_ALBUM_GAIN             "replaygain-album-gain"

album gain in db (double)

### GST_TAG_ALBUM_PEAK

    #define GST_TAG_ALBUM_PEAK             "replaygain-album-peak"

peak of the album (double)

### GST_TAG_REFERENCE_LEVEL

    #define GST_TAG_REFERENCE_LEVEL        "replaygain-reference-level"

reference level of track and album gain values (double)

### GST_TAG_LANGUAGE_CODE

    #define GST_TAG_LANGUAGE_CODE          "language-code"

ISO-639-2 or ISO-639-1 code for the language the content is in (string)

There is utility API in libgsttag in gst-plugins-base to obtain a translated language name from the language code: `gst_tag_get_language_name()`

### GST_TAG_LANGUAGE_NAME

    #define GST_TAG_LANGUAGE_NAME          "language-name"

Name of the language the content is in (string)

Free-form name of the language the content is in, if a language code is not available. This tag should not be set in addition to a language code. It is undefined what language or locale the language name is in.

### GST_TAG_IMAGE

    #define GST_TAG_IMAGE                  "image"

image (sample) (sample taglist should specify the content type and preferably also set "image-type" field as GstTagImageType)

### GST_TAG_PREVIEW_IMAGE

    #define GST_TAG_PREVIEW_IMAGE          "preview-image"

image that is meant for preview purposes, e.g. small icon-sized version (sample) (sample taglist should specify the content type)

### GST_TAG_ATTACHMENT

    #define GST_TAG_ATTACHMENT             "attachment"

generic file attachment (sample) (sample taglist should specify the content type and if possible set "filename" to the file name of the attachment)

### GST_TAG_BEATS_PER_MINUTE

    #define GST_TAG_BEATS_PER_MINUTE       "beats-per-minute"

number of beats per minute in audio (double)

### GST_TAG_KEYWORDS

    #define GST_TAG_KEYWORDS               "keywords"

comma separated keywords describing the content (string).

### GST_TAG_GEO_LOCATION_NAME

    #define GST_TAG_GEO_LOCATION_NAME               "geo-location-name"

human readable descriptive location of where the media has been recorded or produced. (string).

### GST_TAG_GEO_LOCATION_LATITUDE

    #define GST_TAG_GEO_LOCATION_LATITUDE               "geo-location-latitude"

geo latitude location of where the media has been recorded or produced in degrees according to WGS84 (zero at the equator, negative values for southern latitudes) (double).

### GST_TAG_GEO_LOCATION_LONGITUDE

    #define GST_TAG_GEO_LOCATION_LONGITUDE               "geo-location-longitude"

geo longitude location of where the media has been recorded or produced in degrees according to WGS84 (zero at the prime meridian in Greenwich/UK, negative values for western longitudes). (double).

### GST_TAG_GEO_LOCATION_ELEVATION

    #define GST_TAG_GEO_LOCATION_ELEVATION               "geo-location-elevation"

geo elevation of where the media has been recorded or produced in meters according to WGS84 (zero is average sea level) (double).

### GST_TAG_GEO_LOCATION_CITY

    #define GST_TAG_GEO_LOCATION_CITY                    "geo-location-city"

The city (english name) where the media has been produced (string).

### GST_TAG_GEO_LOCATION_COUNTRY

    #define GST_TAG_GEO_LOCATION_COUNTRY                 "geo-location-country"

The country (english name) where the media has been produced (string).

### GST_TAG_GEO_LOCATION_SUBLOCATION

    #define GST_TAG_GEO_LOCATION_SUBLOCATION             "geo-location-sublocation"

A location 'smaller' than GST_TAG_GEO_LOCATION_CITY that specifies better where the media has been produced. (e.g. the neighborhood) (string).

This tag has been added as this is how it is handled/named in XMP's Iptc4xmpcore schema.

### GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR

    #define GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR   "geo-location-horizontal-error"

Represents the expected error on the horizontal positioning in meters (double).

### GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION

    #define GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION "geo-location-movement-direction"

Indicates the movement direction of the device performing the capture of a media. It is represented as degrees in floating point representation, 0 means the geographic north, and increases clockwise (double from 0 to 360)

See also GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION

### GST_TAG_GEO_LOCATION_MOVEMENT_SPEED

    #define GST_TAG_GEO_LOCATION_MOVEMENT_SPEED       "geo-location-movement-speed"

Speed of the capturing device when performing the capture. Represented in m/s. (double)

See also GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION

### GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION

    #define GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION  "geo-location-capture-direction"

Indicates the direction the device is pointing to when capturing a media. It is represented as degrees in floating point representation, 0 means the geographic north, and increases clockwise (double from 0 to 360)

See also GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION

### GST_TAG_SHOW_NAME

    #define GST_TAG_SHOW_NAME                         "show-name"

Name of the show, used for displaying (string)

### GST_TAG_SHOW_SORTNAME

    #define GST_TAG_SHOW_SORTNAME                     "show-sortname"

Name of the show, used for sorting (string)

### GST_TAG_SHOW_EPISODE_NUMBER

    #define GST_TAG_SHOW_EPISODE_NUMBER               "show-episode-number"

Number of the episode within a season/show (unsigned integer)

### GST_TAG_SHOW_SEASON_NUMBER

    #define GST_TAG_SHOW_SEASON_NUMBER                "show-season-number"

Number of the season of a show/series (unsigned integer)

### GST_TAG_LYRICS

    #define GST_TAG_LYRICS                            "lyrics"

The lyrics of the media (string)

### GST_TAG_COMPOSER_SORTNAME

    #define GST_TAG_COMPOSER_SORTNAME                 "composer-sortname"

The composer's name, used for sorting (string)

### GST_TAG_GROUPING

    #define GST_TAG_GROUPING                          "grouping"

Groups together media that are related and spans multiple tracks. An example are multiple pieces of a concerto. (string)

### GST_TAG_USER_RATING

    #define GST_TAG_USER_RATING                       "user-rating"

Rating attributed by a person (likely the application user). The higher the value, the more the user likes this media (unsigned int from 0 to 100)

### GST_TAG_DEVICE_MANUFACTURER

    #define GST_TAG_DEVICE_MANUFACTURER               "device-manufacturer"

Manufacturer of the device used to create the media (string)

### GST_TAG_DEVICE_MODEL

    #define GST_TAG_DEVICE_MODEL                      "device-model"

Model of the device used to create the media (string)

### GST_TAG_APPLICATION_NAME

    #define GST_TAG_APPLICATION_NAME                  "application-name"

Name of the application used to create the media (string)

### GST_TAG_APPLICATION_DATA

    #define GST_TAG_APPLICATION_DATA          "application-data"

Arbitrary application data (sample)

Some formats allow applications to add their own arbitrary data into files. This data is application dependent.

### GST_TAG_IMAGE_ORIENTATION

    #define GST_TAG_IMAGE_ORIENTATION            "image-orientation"

Represents the 'Orientation' tag from EXIF. Defines how the image should be rotated and mirrored for display. (string)

This tag has a predefined set of allowed values: "rotate-0" "rotate-90" "rotate-180" "rotate-270" "flip-rotate-0" "flip-rotate-90" "flip-rotate-180" "flip-rotate-270"

The naming is adopted according to a possible transformation to perform on the image to fix its orientation, obviously equivalent operations will yield the same result.

Rotations indicated by the values are in clockwise direction and 'flip' means an horizontal mirroring.

### GST_TAG_PUBLISHER

    #define GST_TAG_PUBLISHER                         "publisher"

Name of the label or publisher (string)

Since: 1.2

### GST_TAG_INTERPRETED_BY

    #define GST_TAG_INTERPRETED_BY                    "interpreted-by"

Information about the people behind a remix and similar interpretations of another existing piece (string)

Since: 1.2

### GST_TAG_MIDI_BASE_NOTE

    #define GST_TAG_MIDI_BASE_NOTE                    "midi-base-note"

Midi note number

of the audio track. This is useful for sample instruments and in particular for multi-samples.

Since: 1.4

### GST_TAG_PRIVATE_DATA

    #define GST_TAG_PRIVATE_DATA                         "private-data"

Any private data that may be contained in tags (sample).

It is represented by GstSample in which GstBuffer contains the binary data and the sample's info GstStructure may contain any extra information that identifies the origin or meaning of the data.

Private frames in ID3v2 tags ('PRIV' frames) will be represented using this tag, in which case the GstStructure will be named "ID3PrivateFrame" and contain a field named "owner" of type string which contains the owner-identification string from the tag.

Since: 1.8