#include "id3v1.h"
#include "libavcodec/avcodec.h"
+#include "libavutil/avstring.h"
-const char *ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
+const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
[0] = "Blues",
[1] = "Classic Rock",
[2] = "Country",
[123] = "A capella",
[124] = "Euro-House",
[125] = "Dance Hall",
+ [126] = "Goa",
+ [127] = "Drum & Bass",
+ [128] = "Club-House",
+ [129] = "Hardcore",
+ [130] = "Terror",
+ [131] = "Indie",
+ [132] = "BritPop",
+ [133] = "Negerpunk",
+ [134] = "Polsk Punk",
+ [135] = "Beat",
+ [136] = "Christian Gangsta",
+ [137] = "Heavy Metal",
+ [138] = "Black Metal",
+ [139] = "Crossover",
+ [140] = "Contemporary Christian",
+ [141] = "Christian Rock",
+ [142] = "Merengue",
+ [143] = "Salsa",
+ [144] = "Thrash Metal",
+ [145] = "Anime",
+ [146] = "JPop",
+ [147] = "SynthPop",
};
static void get_string(AVFormatContext *s, const char *key,
*q = '\0';
if (*str)
- av_metadata_set(&s->metadata, key, str);
+ av_metadata_set2(&s->metadata, key, str, 0);
}
/**
*/
static int parse_tag(AVFormatContext *s, const uint8_t *buf)
{
- char str[5];
int genre;
if (!(buf[0] == 'T' &&
buf[2] == 'G'))
return -1;
get_string(s, "title", buf + 3, 30);
- get_string(s, "author", buf + 33, 30);
+ get_string(s, "artist", buf + 33, 30);
get_string(s, "album", buf + 63, 30);
- get_string(s, "year", buf + 93, 4);
+ get_string(s, "date", buf + 93, 4);
get_string(s, "comment", buf + 97, 30);
- if (buf[125] == 0 && buf[126] != 0) {
- snprintf(str, sizeof(str), "%d", buf[126]);
- av_metadata_set(&s->metadata, "track", str);
- }
+ if (buf[125] == 0 && buf[126] != 0)
+ av_metadata_set2(&s->metadata, "track", av_d2str(buf[126]), AV_METADATA_DONT_STRDUP_VAL);
genre = buf[127];
if (genre <= ID3v1_GENRE_MAX)
- av_metadata_set(&s->metadata, "genre", ff_id3v1_genre_str[genre]);
+ av_metadata_set2(&s->metadata, "genre", ff_id3v1_genre_str[genre], 0);
return 0;
}