00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef AVFORMAT_ID3V2_H
00023 #define AVFORMAT_ID3V2_H
00024
00025 #include <stdint.h>
00026 #include "avformat.h"
00027 #include "metadata.h"
00028
00029 #define ID3v2_HEADER_SIZE 10
00030
00034 #define ID3v2_DEFAULT_MAGIC "ID3"
00035
00036 #define ID3v2_FLAG_DATALEN 0x0001
00037 #define ID3v2_FLAG_UNSYNCH 0x0002
00038 #define ID3v2_FLAG_ENCRYPTION 0x0004
00039 #define ID3v2_FLAG_COMPRESSION 0x0008
00040
00041 enum ID3v2Encoding {
00042 ID3v2_ENCODING_ISO8859 = 0,
00043 ID3v2_ENCODING_UTF16BOM = 1,
00044 ID3v2_ENCODING_UTF16BE = 2,
00045 ID3v2_ENCODING_UTF8 = 3,
00046 };
00047
00048 typedef struct ID3v2ExtraMeta {
00049 const char *tag;
00050 void *data;
00051 struct ID3v2ExtraMeta *next;
00052 } ID3v2ExtraMeta;
00053
00054 typedef struct ID3v2ExtraMetaGEOB {
00055 uint32_t datasize;
00056 uint8_t *mime_type;
00057 uint8_t *file_name;
00058 uint8_t *description;
00059 uint8_t *data;
00060 } ID3v2ExtraMetaGEOB;
00061
00068 int ff_id3v2_match(const uint8_t *buf, const char *magic);
00069
00075 int ff_id3v2_tag_len(const uint8_t *buf);
00076
00080 void ff_id3v2_read(AVFormatContext *s, const char *magic);
00081
00087 void ff_id3v2_read_all(AVFormatContext *s, const char *magic, ID3v2ExtraMeta **extra_meta);
00088
00095 int ff_id3v2_write(struct AVFormatContext *s, int id3v2_version, const char *magic);
00096
00101 void ff_id3v2_free_extra_meta(ID3v2ExtraMeta **extra_meta);
00102
00103 extern const AVMetadataConv ff_id3v2_34_metadata_conv[];
00104 extern const AVMetadataConv ff_id3v2_4_metadata_conv[];
00105
00111 extern const char ff_id3v2_tags[][4];
00112
00116 extern const char ff_id3v2_4_tags[][4];
00117
00121 extern const char ff_id3v2_3_tags[][4];
00122
00123 #endif