aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
authorViliam Mateicka <viliam.mateicka@gmail.com>2009-03-03 18:58:54 +0100
committerMax Kellermann <max@duempel.org>2009-03-03 21:30:46 +0100
commitc89482de650d0fc5e340f563c9bdf5c3c032b2c9 (patch)
tree4c194bc0771fed79f327c62d27db3f83d2f89d80 /src/decoder
parent39fb8bebc208a5d9558c9283e5c47b18df893c0c (diff)
downloadmpd-c89482de650d0fc5e340f563c9bdf5c3c032b2c9.tar.gz
mpd-c89482de650d0fc5e340f563c9bdf5c3c032b2c9.tar.xz
mpd-c89482de650d0fc5e340f563c9bdf5c3c032b2c9.zip
ffmpeg: support for new metadata api
Diffstat (limited to 'src/decoder')
-rw-r--r--src/decoder/ffmpeg_plugin.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/decoder/ffmpeg_plugin.c b/src/decoder/ffmpeg_plugin.c
index 02a1f836b..c8e71b20f 100644
--- a/src/decoder/ffmpeg_plugin.c
+++ b/src/decoder/ffmpeg_plugin.c
@@ -344,6 +344,44 @@ static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx)
tag->time = 0;
if (f->duration != (int64_t)AV_NOPTS_VALUE)
tag->time = f->duration / AV_TIME_BASE;
+
+#if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(31<<8)+0)
+ {
+ AVMetadataTag *title, *author, *album, *genre, *comment, *track, *year;
+
+ g_warning("using new metadata api\n");
+
+ title = av_metadata_get(f->metadata, "title", NULL, 0);
+ author = av_metadata_get(f->metadata, "author", NULL, 0);
+ album = av_metadata_get(f->metadata, "album", NULL, 0);
+ comment = av_metadata_get(f->metadata, "comment", NULL, 0);
+ genre = av_metadata_get(f->metadata, "genre", NULL, 0);
+ track = av_metadata_get(f->metadata, "track", NULL, 0);
+ year = av_metadata_get(f->metadata, "year", NULL, 0);
+
+ if (title) {
+ tag_add_item(tag, TAG_ITEM_TITLE, title->value);
+ }
+ if (author) {
+ tag_add_item(tag, TAG_ITEM_ARTIST, author->value);
+ }
+ if (album) {
+ tag_add_item(tag, TAG_ITEM_ALBUM, album->value);
+ }
+ if (comment) {
+ tag_add_item(tag, TAG_ITEM_COMMENT, comment->value);
+ }
+ if (genre) {
+ tag_add_item(tag, TAG_ITEM_GENRE, genre->value);
+ }
+ if (track) {
+ tag_add_item(tag, TAG_ITEM_TRACK, track->value);
+ }
+ if (year) {
+ tag_add_item(tag, TAG_ITEM_DATE, year->value);
+ }
+ }
+#else
if (f->author[0])
tag_add_item(tag, TAG_ITEM_ARTIST, f->author);
if (f->title[0])
@@ -367,6 +405,7 @@ static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx)
tag_add_item(tag, TAG_ITEM_DATE, buffer);
}
+#endif
return true;
}