Commit 378fa5ee authored by Max Kellermann's avatar Max Kellermann

decoder/ffmpeg: support all MPD tags

Use the tag_item_names table to look up the names of all MPD tags, and remove the duplicate entries from ffmpeg_tag_maps.
parent 4764daf3
...@@ -3,6 +3,7 @@ ver 0.16.7 (2011/??/??) ...@@ -3,6 +3,7 @@ ver 0.16.7 (2011/??/??)
- ffmpeg: support libavformat 0.7 - ffmpeg: support libavformat 0.7
* decoder: * decoder:
- ffmpeg: support libavformat 0.8, libavcodec 0.8 - ffmpeg: support libavformat 0.8, libavcodec 0.8
- ffmpeg: support all MPD tags
* output: * output:
- httpd: fix excessive buffering - httpd: fix excessive buffering
- openal: force 16 bit playback, as 8 bit doesn't work - openal: force 16 bit playback, as 8 bit doesn't work
......
...@@ -587,24 +587,13 @@ typedef struct ffmpeg_tag_map { ...@@ -587,24 +587,13 @@ typedef struct ffmpeg_tag_map {
} ffmpeg_tag_map; } ffmpeg_tag_map;
static const ffmpeg_tag_map ffmpeg_tag_maps[] = { static const ffmpeg_tag_map ffmpeg_tag_maps[] = {
{ TAG_TITLE, "title" }, #if LIBAVFORMAT_VERSION_INT < ((52<<16)+(50<<8))
#if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(50<<8))
{ TAG_ARTIST, "artist" },
{ TAG_DATE, "date" },
#else
{ TAG_ARTIST, "author" }, { TAG_ARTIST, "author" },
{ TAG_DATE, "year" }, { TAG_DATE, "year" },
#endif #endif
{ TAG_ALBUM, "album" },
{ TAG_COMMENT, "comment" },
{ TAG_GENRE, "genre" },
{ TAG_TRACK, "track" },
{ TAG_ARTIST_SORT, "author-sort" }, { TAG_ARTIST_SORT, "author-sort" },
{ TAG_ALBUM_ARTIST, "album_artist" }, { TAG_ALBUM_ARTIST, "album_artist" },
{ TAG_ALBUM_ARTIST_SORT, "album_artist-sort" }, { TAG_ALBUM_ARTIST_SORT, "album_artist-sort" },
{ TAG_COMPOSER, "composer" },
{ TAG_PERFORMER, "performer" },
{ TAG_DISC, "disc" },
}; };
#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(53,1,0) #if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(53,1,0)
...@@ -626,6 +615,10 @@ ffmpeg_copy_metadata(struct tag *tag, enum tag_type type, ...@@ -626,6 +615,10 @@ ffmpeg_copy_metadata(struct tag *tag, enum tag_type type,
static void static void
ffmpeg_copy_dictionary(struct tag *tag, AVDictionary *dict) ffmpeg_copy_dictionary(struct tag *tag, AVDictionary *dict)
{ {
for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i)
ffmpeg_copy_metadata(tag, i,
dict, tag_item_names[i]);
for (unsigned i = 0; i < G_N_ELEMENTS(ffmpeg_tag_maps); i++) for (unsigned i = 0; i < G_N_ELEMENTS(ffmpeg_tag_maps); i++)
ffmpeg_copy_metadata(tag, ffmpeg_tag_maps[i].type, ffmpeg_copy_metadata(tag, ffmpeg_tag_maps[i].type,
dict, ffmpeg_tag_maps[i].name); dict, ffmpeg_tag_maps[i].name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment