From 4324150b42ea7720629b74014401119754429b04 Mon Sep 17 00:00:00 2001 From: Qball Cow Date: Sun, 30 Apr 2006 19:55:56 +0000 Subject: Added Disc # metadata item based on bug 571 (added id3v2 support) git-svn-id: https://svn.musicpd.org/mpd/trunk@4131 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/inputPlugins/_flac_common.c | 9 +++++++-- src/inputPlugins/mp4_plugin.c | 4 ++++ src/inputPlugins/oggvorbis_plugin.c | 9 +++++++-- src/tag.c | 7 ++++++- src/tag.h | 3 ++- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/inputPlugins/_flac_common.c b/src/inputPlugins/_flac_common.c index f6a470ed2..79a3c38f2 100644 --- a/src/inputPlugins/_flac_common.c +++ b/src/inputPlugins/_flac_common.c @@ -106,14 +106,19 @@ static void flacParseReplayGain(const FLAC__StreamMetadata *block, /* tracknumber is used in VCs, MPD uses "track" ..., all the other * tag names match */ static const char * VORBIS_COMMENT_TRACK_KEY = "tracknumber"; +static const char * VORBIS_COMMENT_DISC_KEY = "discnumber"; static unsigned int commentMatchesAddToTag( const FLAC__StreamMetadata_VorbisComment_Entry * entry, unsigned int itemType, MpdTag ** tag) { - const char * str = (itemType == TAG_ITEM_TRACK) ? - VORBIS_COMMENT_TRACK_KEY : mpdTagItemKeys[itemType]; + const char * str; + switch (itemType) { + case TAG_ITEM_TRACK: str = VORBIS_COMMENT_TRACK_KEY; break; + case TAG_ITEM_DISC: str = VORBIS_COMMENT_DISC_KEY; break; + default: str = mpdTagItemKeys[itemType]; + } size_t slen = strlen(str); int vlen = entry->length - slen - 1; diff --git a/src/inputPlugins/mp4_plugin.c b/src/inputPlugins/mp4_plugin.c index e41c054c0..3bfdb6ce7 100644 --- a/src/inputPlugins/mp4_plugin.c +++ b/src/inputPlugins/mp4_plugin.c @@ -385,6 +385,10 @@ MpdTag * mp4DataDup(char * file, int * mp4MetadataFound) { addItemToMpdTag(ret, TAG_ITEM_TRACK, value); *mp4MetadataFound = 1; } + else if(0 == strcasecmp("disc", item)) { /* Is that the correct id? */ + addItemToMpdTag(ret, TAG_ITEM_DISC, value); + *mp4MetadataFound = 1; + } else if(0 == strcasecmp("genre", item)) { addItemToMpdTag(ret, TAG_ITEM_GENRE, value); *mp4MetadataFound = 1; diff --git a/src/inputPlugins/oggvorbis_plugin.c b/src/inputPlugins/oggvorbis_plugin.c index aa094856e..6881b9c41 100644 --- a/src/inputPlugins/oggvorbis_plugin.c +++ b/src/inputPlugins/oggvorbis_plugin.c @@ -155,12 +155,17 @@ void ogg_getReplayGainInfo(char ** comments, ReplayGainInfo ** infoPtr) { } static const char * VORBIS_COMMENT_TRACK_KEY = "tracknumber"; +static const char * VORBIS_COMMENT_DISC_KEY = "discnumber"; static inline unsigned int ogg_parseCommentAddToTag(char * comment, unsigned int itemType, MpdTag ** tag) { - const char * needle = (itemType == TAG_ITEM_TRACK) ? - VORBIS_COMMENT_TRACK_KEY : mpdTagItemKeys[itemType]; + const char * needle; + switch (itemType) { + case TAG_ITEM_TRACK: needle = VORBIS_COMMENT_TRACK_KEY; break; + case TAG_ITEM_DISC: needle = VORBIS_COMMENT_DISC_KEY; break; + default: needle = mpdTagItemKeys[itemType]; + } unsigned int len = strlen(needle); if(strncasecmp(comment, needle, len) == 0 && *(comment+len) == '=') { diff --git a/src/tag.c b/src/tag.c index 0fa232345..4a716515b 100644 --- a/src/tag.c +++ b/src/tag.c @@ -46,6 +46,9 @@ #ifndef ID3_FRAME_COMPOSER #define ID3_FRAME_COMPOSER "TCOM" #endif +#ifndef ID3_FRAME_DISC +#define ID3_FRAME_DISC "TPOS" +#endif #endif char * mpdTagItemKeys[TAG_NUM_OF_ITEM_TYPES] = @@ -59,7 +62,8 @@ char * mpdTagItemKeys[TAG_NUM_OF_ITEM_TYPES] = "Date", "Composer", "Performer", - "Comment" + "Comment", + "Disc" }; static mpd_sint8 ignoreTagItems[TAG_NUM_OF_ITEM_TYPES]; @@ -171,6 +175,7 @@ MpdTag * parseId3Tag(struct id3_tag * tag) { ret = getID3Info(tag, ID3_FRAME_GENRE, TAG_ITEM_GENRE, ret); ret = getID3Info(tag, ID3_FRAME_COMPOSER, TAG_ITEM_COMPOSER, ret); ret = getID3Info(tag, ID3_FRAME_COMMENT, TAG_ITEM_COMMENT, ret); + ret = getID3Info(tag, ID3_FRAME_DISC, TAG_ITEM_DISC, ret); return ret; } diff --git a/src/tag.h b/src/tag.h index 6720f818d..a27fa9778 100644 --- a/src/tag.h +++ b/src/tag.h @@ -44,8 +44,9 @@ #define TAG_ITEM_COMPOSER 7 #define TAG_ITEM_PERFORMER 8 #define TAG_ITEM_COMMENT 9 +#define TAG_ITEM_DISC 10 -#define TAG_NUM_OF_ITEM_TYPES 10 +#define TAG_NUM_OF_ITEM_TYPES 11 extern char * mpdTagItemKeys[]; -- cgit v1.2.3