## gsttagid3 gsttagid3 — tag mappings and support functions for plugins dealing with ID3v1 and ID3v2 tags |

## Synopsis

    #include <gst/tag/tag.h>

    guint               gst_tag_id3_genre_count             (void);
    const gchar *       gst_tag_id3_genre_get               (const guint id);
    GstTagList *        gst_tag_list_new_from_id3v1         (const guint8 *data);
    const gchar *       gst_tag_from_id3_tag                (const gchar *id3_tag);
    const gchar *       gst_tag_from_id3_user_tag           (const gchar *type,
                                                             const gchar *id3_user_tag);
    const gchar *       gst_tag_to_id3_tag                  (const gchar *gst_tag);
    gboolean            gst_tag_list_add_id3_image          (GstTagList *tag_list,
                                                             const guint8 *image_data,
                                                             guint image_data_len,
                                                             guint id3_picture_type);
    guint               gst_tag_get_id3v2_tag_size          (GstBuffer *buffer);
    GstTagList *        gst_tag_list_from_id3v2_tag         (GstBuffer *buffer);

## Description

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

## Details

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

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

`data` : | 128 bytes of data containing the ID3v1 tag
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.

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

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

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

`tag_list` : | a tag list
`image_data` : | the (encoded) image
`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;

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

`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