## ID3 tag utils

ID3 tag utils — tag mappings and support functions for plugins dealing with ID3v1 and ID3v2 tags

## Functions

guint | gst_tag_id3_genre_count ()
const gchar * | gst_tag_id3_genre_get ()
GstTagList * | gst_tag_list_new_from_id3v1 ()
const gchar * | gst_tag_from_id3_tag ()
const gchar * | gst_tag_from_id3_user_tag ()
const gchar * | gst_tag_to_id3_tag ()
gboolean | gst_tag_list_add_id3_image ()
guint | gst_tag_get_id3v2_tag_size ()
GstTagList * | gst_tag_list_from_id3v2_tag ()

## Includes

    #include <gst/tag/tag.h>

## Description

Contains various utility functions for plugins to parse or create ID3 tags and map ID3v2 identifiers to and from GStreamer identifiers.

## Functions

### gst_tag_id3_genre_count ()

    guint
    gst_tag_id3_genre_count (void);

Gets the number of ID3v1 genres that can be identified. Winamp genres are included.

#### Returns

the number of ID3v1 genres that can be identified

### gst_tag_id3_genre_get ()

    const gchar *
    gst_tag_id3_genre_get (const guint id);

Gets the ID3v1 genre name for a given ID.

#### Parameters

id | ID of genre to query |

#### Returns

the genre or NULL if no genre is associated with that ID.

### gst_tag_list_new_from_id3v1 ()

    GstTagList *
    gst_tag_list_new_from_id3v1 (const guint8 *data);

Parses the data containing an ID3v1 tag and returns a GstTagList from the parsed data.

#### Parameters

data | 128 bytes of data containing the ID3v1 tag. | [array fixed-size=128]

#### Returns

A new tag list or NULL if the data was not an ID3v1 tag.

### gst_tag_from_id3_tag ()

    const gchar *
    gst_tag_from_id3_tag (const gchar *id3_tag);

Looks up the GStreamer tag for a ID3v2 tag.

#### Parameters

id3_tag | ID3v2 tag to convert to GStreamer tag |

#### Returns

The corresponding GStreamer tag or NULL if none exists.

### gst_tag_from_id3_user_tag ()

    const gchar *
    gst_tag_from_id3_user_tag (const gchar *type,
                               const gchar *id3_user_tag);

Looks up the GStreamer tag for an ID3v2 user tag (e.g. description in TXXX frame or owner in UFID frame).

#### Parameters

type | the type of ID3v2 user tag (e.g. "TXXX" or "UDIF") |
id3_user_tag | ID3v2 user tag to convert to GStreamer tag |

#### Returns

The corresponding GStreamer tag or NULL if none exists.

### gst_tag_to_id3_tag ()

    const gchar *
    gst_tag_to_id3_tag (const gchar *gst_tag);

Looks up the ID3v2 tag for a GStreamer tag.

#### Parameters

gst_tag | GStreamer tag to convert to vorbiscomment tag |

#### Returns

The corresponding ID3v2 tag or NULL if none exists.

### gst_tag_list_add_id3_image ()

    gboolean
    gst_tag_list_add_id3_image (GstTagList *tag_list,
                                const guint8 *image_data,
                                guint image_data_len,
                                guint id3_picture_type);

Adds an image from an ID3 APIC frame (or similar, such as used in FLAC) to the given tag list. Also see `gst_tag_image_data_to_image_sample()` for more information on image tags in GStreamer.

#### Parameters

tag_list | a tag list |
image_data | the (encoded) image. | [array length=image_data_len]
image_data_len | the length of the encoded image data at `image_data` |
id3_picture_type | picture type as per the ID3 (v2.4.0) specification for the APIC frame (0 = unknown/other) |

#### Returns

`TRUE` if the image was processed, otherwise `FALSE`

### gst_tag_get_id3v2_tag_size ()

    guint
    gst_tag_get_id3v2_tag_size (GstBuffer *buffer);

Determines size of an ID3v2 tag on buffer containing at least ID3v2 header, i.e. at least GST_TAG_ID3V2_HEADER_SIZE (10) bytes;

#### Parameters

buffer | buffer holding ID3v2 tag (or at least the start of one) |

#### Returns

Size of tag, or 0 if header is invalid or too small.

### gst_tag_list_from_id3v2_tag ()

    GstTagList *
    gst_tag_list_from_id3v2_tag (GstBuffer *buffer);

Creates a new tag list that contains the information parsed out of a ID3 tag.

#### Parameters

buffer | buffer to convert |

#### Returns

A new GstTagList with all tags that could be extracted from the given vorbiscomment buffer or NULL on error.

## See Also

GstTagList