#include "config.h"
#include "id3v2.h"
#include "id3v1.h"
#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/dict.h"
#include "avio_internal.h"
#include "internal.h"
Go to the source code of this file.
Data Structures | |
struct | ID3v2EMFunc |
Functions | |
int | ff_id3v2_match (const uint8_t *buf, const char *magic) |
Detect ID3v2 Header. | |
int | ff_id3v2_tag_len (const uint8_t *buf) |
Get the length of an ID3v2 tag. | |
static unsigned int | get_size (AVIOContext *s, int len) |
static void | free_geobtag (void *obj) |
Free GEOB type extra metadata. | |
static int | decode_str (AVFormatContext *s, AVIOContext *pb, int encoding, uint8_t **dst, int *maxread) |
Decode characters to UTF-8 according to encoding type. | |
static void | read_ttag (AVFormatContext *s, AVIOContext *pb, int taglen, const char *key) |
Parse a text tag. | |
static void | read_geobtag (AVFormatContext *s, AVIOContext *pb, int taglen, char *tag, ID3v2ExtraMeta **extra_meta) |
Parse GEOB tag into a ID3v2ExtraMetaGEOB struct. | |
static int | is_number (const char *str) |
static AVDictionaryEntry * | get_date_tag (AVDictionary *m, const char *tag) |
static void | merge_date (AVDictionary **m) |
static void | free_apic (void *obj) |
static void | read_apic (AVFormatContext *s, AVIOContext *pb, int taglen, char *tag, ID3v2ExtraMeta **extra_meta) |
static const ID3v2EMFunc * | get_extra_meta_func (const char *tag, int isv34) |
Get the corresponding ID3v2EMFunc struct for a tag. | |
static void | ff_id3v2_parse (AVFormatContext *s, int len, uint8_t version, uint8_t flags, ID3v2ExtraMeta **extra_meta) |
void | ff_id3v2_read (AVFormatContext *s, const char *magic, ID3v2ExtraMeta **extra_meta) |
Read an ID3v2 tag, including supported extra metadata. | |
void | ff_id3v2_free_extra_meta (ID3v2ExtraMeta **extra_meta) |
Free memory allocated parsing special (non-text) metadata. | |
int | ff_id3v2_parse_apic (AVFormatContext *s, ID3v2ExtraMeta **extra_meta) |
Create a stream for each APIC (attached picture) extracted from the ID3v2 header. | |
Variables | |
const AVMetadataConv | ff_id3v2_34_metadata_conv [] |
const AVMetadataConv | ff_id3v2_4_metadata_conv [] |
static const AVMetadataConv | id3v2_2_metadata_conv [] |
const char | ff_id3v2_tags [][4] |
A list of text information frames allowed in both ID3 v2.3 and v2.4 http://www.id3.org/id3v2.4.0-frames http://www.id3.org/id3v2.4.0-changes. | |
const char | ff_id3v2_4_tags [][4] |
ID3v2.4-only text information frames. | |
const char | ff_id3v2_3_tags [][4] |
ID3v2.3-only text information frames. | |
const char * | ff_id3v2_picture_types [21] |
const CodecMime | ff_id3v2_mime_tags [] |
static const ID3v2EMFunc | id3v2_extra_meta_funcs [] |
Specifications available at: http://id3.org/Developer_Information
Definition in file id3v2.c.
static int decode_str | ( | AVFormatContext * | s, | |
AVIOContext * | pb, | |||
int | encoding, | |||
uint8_t ** | dst, | |||
int * | maxread | |||
) | [static] |
Decode characters to UTF-8 according to encoding type.
The decoded buffer is always null terminated. Stop reading when either *maxread bytes are read from pb or U+0000 character is found.
dst | Pointer where the address of the buffer with the decoded bytes is stored. Buffer must be freed by caller. | |
maxread | Pointer to maximum number of characters to read from the AVIOContext. After execution the value is decremented by the number of bytes actually read. |
Definition at line 197 of file id3v2.c.
Referenced by read_apic(), read_geobtag(), and read_ttag().
void ff_id3v2_free_extra_meta | ( | ID3v2ExtraMeta ** | extra_meta | ) |
Free memory allocated parsing special (non-text) metadata.
extra_meta | Pointer to a pointer to the head of a ID3v2ExtraMeta list, *extra_meta is set to NULL. |
Definition at line 769 of file id3v2.c.
Referenced by aiff_read_header(), avformat_open_input(), and oma_read_header().
Detect ID3v2 Header.
buf | must be ID3v2_HEADER_SIZE byte long | |
magic | magic bytes to identify the header. If in doubt, use ID3v2_DEFAULT_MAGIC. |
Definition at line 139 of file id3v2.c.
Referenced by av_probe_input_format3(), ff_id3v2_read(), mp3_read_probe(), and oma_read_probe().
static void ff_id3v2_parse | ( | AVFormatContext * | s, | |
int | len, | |||
uint8_t | version, | |||
uint8_t | flags, | |||
ID3v2ExtraMeta ** | extra_meta | |||
) | [static] |
int ff_id3v2_parse_apic | ( | AVFormatContext * | s, | |
ID3v2ExtraMeta ** | extra_meta | |||
) |
Create a stream for each APIC (attached picture) extracted from the ID3v2 header.
Definition at line 783 of file id3v2.c.
Referenced by avformat_open_input().
void ff_id3v2_read | ( | AVFormatContext * | s, | |
const char * | magic, | |||
ID3v2ExtraMeta ** | extra_meta | |||
) |
Read an ID3v2 tag, including supported extra metadata.
extra_meta | If not NULL, extra metadata is parsed into a list of ID3v2ExtraMeta structs and *extra_meta points to the head of the list |
Definition at line 738 of file id3v2.c.
Referenced by aiff_read_header(), avformat_open_input(), and oma_read_header().
Get the length of an ID3v2 tag.
buf | must be ID3v2_HEADER_SIZE bytes long and point to the start of an already detected ID3v2 tag |
Definition at line 152 of file id3v2.c.
Referenced by av_probe_input_format3(), mp3_read_probe(), and oma_read_probe().
static void free_apic | ( | void * | obj | ) | [static] |
static void free_geobtag | ( | void * | obj | ) | [static] |
Free GEOB type extra metadata.
Definition at line 175 of file id3v2.c.
Referenced by read_geobtag().
static AVDictionaryEntry* get_date_tag | ( | AVDictionary * | m, | |
const char * | tag | |||
) | [static] |
static const ID3v2EMFunc* get_extra_meta_func | ( | const char * | tag, | |
int | isv34 | |||
) | [static] |
Get the corresponding ID3v2EMFunc struct for a tag.
isv34 | Determines if v2.2 or v2.3/4 strings are used |
Definition at line 529 of file id3v2.c.
Referenced by ff_id3v2_free_extra_meta(), and ff_id3v2_parse().
static unsigned int get_size | ( | AVIOContext * | s, | |
int | len | |||
) | [static] |
static int is_number | ( | const char * | str | ) | [static] |
static void merge_date | ( | AVDictionary ** | m | ) | [static] |
static void read_apic | ( | AVFormatContext * | s, | |
AVIOContext * | pb, | |||
int | taglen, | |||
char * | tag, | |||
ID3v2ExtraMeta ** | extra_meta | |||
) | [static] |
static void read_geobtag | ( | AVFormatContext * | s, | |
AVIOContext * | pb, | |||
int | taglen, | |||
char * | tag, | |||
ID3v2ExtraMeta ** | extra_meta | |||
) | [static] |
static void read_ttag | ( | AVFormatContext * | s, | |
AVIOContext * | pb, | |||
int | taglen, | |||
const char * | key | |||
) | [static] |
Initial value:
{ { "TALB", "album"}, { "TCOM", "composer"}, { "TCON", "genre"}, { "TCOP", "copyright"}, { "TENC", "encoded_by"}, { "TIT2", "title"}, { "TLAN", "language"}, { "TPE1", "artist"}, { "TPE2", "album_artist"}, { "TPE3", "performer"}, { "TPOS", "disc"}, { "TPUB", "publisher"}, { "TRCK", "track"}, { "TSSE", "encoder"}, { 0 } }
Definition at line 43 of file id3v2.c.
Referenced by ff_id3v2_write_metadata().
const char ff_id3v2_3_tags[][4] |
Initial value:
{ "TDAT", "TIME", "TORY", "TRDA", "TSIZ", "TYER", { 0 }, }
Definition at line 98 of file id3v2.c.
Referenced by ff_id3v2_write_metadata().
Initial value:
{ { "TDRL", "date"}, { "TDRC", "date"}, { "TDEN", "creation_time"}, { "TSOA", "album-sort"}, { "TSOP", "artist-sort"}, { "TSOT", "title-sort"}, { 0 } }
Definition at line 61 of file id3v2.c.
Referenced by ff_id3v2_write_metadata().
const char ff_id3v2_4_tags[][4] |
Initial value:
{ "TDEN", "TDOR", "TDRC", "TDRL", "TDTG", "TIPL", "TMCL", "TMOO", "TPRO", "TSOA", "TSOP", "TSOT", "TSST", { 0 }, }
Definition at line 92 of file id3v2.c.
Referenced by ff_id3v2_write_metadata().
const CodecMime ff_id3v2_mime_tags[] |
Initial value:
{ {"image/gif" , AV_CODEC_ID_GIF}, {"image/jpeg", AV_CODEC_ID_MJPEG}, {"image/jpg", AV_CODEC_ID_MJPEG}, {"image/png" , AV_CODEC_ID_PNG}, {"image/tiff", AV_CODEC_ID_TIFF}, {"image/bmp", AV_CODEC_ID_BMP}, {"JPG", AV_CODEC_ID_MJPEG}, {"PNG" , AV_CODEC_ID_PNG}, {"", AV_CODEC_ID_NONE}, }
Definition at line 127 of file id3v2.c.
Referenced by asf_read_picture(), ff_id3v2_write_apic(), parse_picture(), and query_codec().
const char* ff_id3v2_picture_types[21] |
Initial value:
{ "Other", "32x32 pixels 'file icon'", "Other file icon", "Cover (front)", "Cover (back)", "Leaflet page", "Media (e.g. label side of CD)", "Lead artist/lead performer/soloist", "Artist/performer", "Conductor", "Band/Orchestra", "Composer", "Lyricist/text writer", "Recording Location", "During recording", "During performance", "Movie/video screen capture", "A bright coloured fish", "Illustration", "Band/artist logotype", "Publisher/Studio logotype", }
Definition at line 103 of file id3v2.c.
Referenced by asf_read_picture(), ff_id3v2_write_apic(), parse_picture(), and read_apic().
const char ff_id3v2_tags[][4] |
Initial value:
{ "TALB", "TBPM", "TCOM", "TCON", "TCOP", "TDLY", "TENC", "TEXT", "TFLT", "TIT1", "TIT2", "TIT3", "TKEY", "TLAN", "TLEN", "TMED", "TOAL", "TOFN", "TOLY", "TOPE", "TOWN", "TPE1", "TPE2", "TPE3", "TPE4", "TPOS", "TPUB", "TRCK", "TRSN", "TRSO", "TSRC", "TSSE", { 0 }, }
Definition at line 84 of file id3v2.c.
Referenced by ff_id3v2_write_metadata().
const AVMetadataConv id3v2_2_metadata_conv[] [static] |
const ID3v2EMFunc id3v2_extra_meta_funcs[] [static] |
Initial value:
{ { "GEO", "GEOB", read_geobtag, free_geobtag }, { "PIC", "APIC", read_apic, free_apic }, { NULL } }