aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/inputPlugins/_flac_common.c9
-rw-r--r--src/inputPlugins/mp4_plugin.c4
-rw-r--r--src/inputPlugins/oggvorbis_plugin.c9
-rw-r--r--src/tag.c7
-rw-r--r--src/tag.h3
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[];