diff options
author | Max Kellermann <max@duempel.org> | 2009-09-30 15:41:43 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-09-30 15:41:43 +0200 |
commit | 65693d057bd57a8df3f491650485087365170564 (patch) | |
tree | 80449803ed4063a91f0de1d11e3cd708518c47cd /src/decoder | |
parent | b0f9a1454af5af826255e988d1ca8fe78df2c136 (diff) | |
download | mpd-65693d057bd57a8df3f491650485087365170564.tar.gz mpd-65693d057bd57a8df3f491650485087365170564.tar.xz mpd-65693d057bd57a8df3f491650485087365170564.zip |
decoder/ffmpeg: use the "artist" tag if "author" is not present
Usually, we read our "artist" tag from ffmpeg's "author" tag. In some
cases however (e.g. APE), this tag is named "artist". This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
Diffstat (limited to 'src/decoder')
-rw-r--r-- | src/decoder/ffmpeg_plugin.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/decoder/ffmpeg_plugin.c b/src/decoder/ffmpeg_plugin.c index abccdf977..27b0c2507 100644 --- a/src/decoder/ffmpeg_plugin.c +++ b/src/decoder/ffmpeg_plugin.c @@ -338,13 +338,14 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input) } #if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(31<<8)+0) -static void +static bool ffmpeg_copy_metadata(struct tag *tag, AVMetadata *m, enum tag_type type, const char *name) { AVMetadataTag *mt = av_metadata_get(m, name, NULL, 0); if (mt != NULL) tag_add_item(tag, type, mt->value); + return mt != NULL; } #endif @@ -359,7 +360,9 @@ static bool ffmpeg_tag_internal(struct ffmpeg_context *ctx) #if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(31<<8)+0) ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_TITLE, "title"); - ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_ARTIST, "author"); + if (!ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_ARTIST, "author")) + ffmpeg_copy_metadata(tag, f->metadata, + TAG_ITEM_ARTIST, "artist"); ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_ALBUM, "album"); ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_COMMENT, "comment"); ffmpeg_copy_metadata(tag, f->metadata, TAG_ITEM_GENRE, "genre"); |