61 [33] =
"Instrumental",
74 [46] =
"Instrumental Pop",
75 [47] =
"Instrumental Rock",
79 [51] =
"Techno-Industrial",
84 [56] =
"Southern Rock",
89 [61] =
"Christian Rap",
92 [64] =
"Native American",
106 [78] =
"Rock & Roll",
110 [82] =
"National Folk",
112 [84] =
"Fast Fusion",
119 [91] =
"Gothic Rock",
120 [92] =
"Progressive Rock",
121 [93] =
"Psychedelic Rock",
122 [94] =
"Symphonic Rock",
126 [98] =
"Easy Listening",
132 [104] =
"Chamber Music",
135 [107] =
"Booty Bass",
137 [109] =
"Porn Groove",
145 [117] =
"Power Ballad",
146 [118] =
"Rhythmic Soul",
151 [123] =
"A Cappella",
152 [124] =
"Euro-House",
153 [125] =
"Dance Hall",
155 [127] =
"Drum & Bass",
156 [128] =
"Club-House",
157 [129] =
"Hardcore Techno",
162 [134] =
"Polsk Punk",
164 [136] =
"Christian Gangsta Rap",
165 [137] =
"Heavy Metal",
166 [138] =
"Black Metal",
168 [140] =
"Contemporary Christian",
169 [141] =
"Christian Rock",
172 [144] =
"Thrash Metal",
188 [160] =
"Electroclash",
190 [162] =
"Experimental",
195 [167] =
"Industro-Goth",
201 [173] =
"New Romantic",
207 [179] =
"Space Rock",
209 [181] =
"World Music",
210 [182] =
"Neoclassical",
212 [184] =
"Audio Theatre",
213 [185] =
"Neue Deutsche Welle",
215 [187] =
"Indie Rock",
218 [190] =
"Garage Rock",
223 const uint8_t *buf,
int buf_size)
226 char *q,
str[512], *first_free_space =
NULL;
229 for(
i = 0;
i < buf_size;
i++) {
233 if ((q -
str) >=
sizeof(
str) - 1)
236 if (!first_free_space)
237 first_free_space = q;
239 first_free_space =
NULL;
245 if (first_free_space)
246 *first_free_space =
'\0';
261 if (!(buf[0] ==
'T' &&
270 if (buf[125] == 0 && buf[126] != 0) {
288 if (filesize > 128) {
Libavcodec external API header.
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
#define AVIO_SEEKABLE_NORMAL
Seeking works like for a local file.
int64_t avio_size(AVIOContext *s)
Get the filesize.
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags)
Convenience wrapper for av_dict_set that converts the value to a string and stores it.
void ff_id3v1_read(AVFormatContext *s)
Read an ID3v1 tag.
const char *const ff_id3v1_genre_str[ID3v1_GENRE_MAX+1]
ID3v1 genres.
static int parse_tag(AVFormatContext *s, const uint8_t *buf)
Parse an ID3v1 tag.
static void get_string(AVFormatContext *s, const char *key, const uint8_t *buf, int buf_size)