Hi all,
a patch to increase the number of metadata in MPD. More a basis for
discussion as a finished product. So far, only ID3 support.
New metadata is: conductor,remixer,bpm,contentgroup,copyright,
discsubtitle,encodedby,isrc,label,language,lyricist,mood,originalartist,
originaldate,releasedate,subtitle,totaldiscs,totaltracks
Here we go.
diff --git a/src/db/plugins/simple/DatabaseSave.cxx
b/src/db/plugins/simple/DatabaseSave.cxx
index fa39164..980d672 100644
--- a/src/db/plugins/simple/DatabaseSave.cxx
+++ b/src/db/plugins/simple/DatabaseSave.cxx
@@ -42,7 +42,7 @@
#define DIRECTORY_FS_CHARSET "fs_charset: "
#define DB_TAG_PREFIX "tag: "
-static constexpr unsigned DB_FORMAT = 2;
+static constexpr unsigned DB_FORMAT = 3;
/**
* The oldest database format understood by this MPD version.
diff --git a/src/tag/Mask.hxx b/src/tag/Mask.hxx
index f2c51bb..7dfc5fb 100644
--- a/src/tag/Mask.hxx
+++ b/src/tag/Mask.hxx
@@ -22,6 +22,6 @@
#include <stdint.h>
-typedef uint_least32_t tag_mask_t;
+typedef uint_least64_t tag_mask_t;
#endif
diff --git a/src/tag/Settings.hxx b/src/tag/Settings.hxx
index e656330..8e64b0c 100644
--- a/src/tag/Settings.hxx
+++ b/src/tag/Settings.hxx
@@ -28,7 +28,7 @@ extern tag_mask_t global_tag_mask;
gcc_const
static inline bool
-IsTagEnabled(unsigned tag)
+IsTagEnabled(unsigned long long tag)
{
return global_tag_mask & (1u << tag);
}
diff --git a/src/tag/TagHandler.cxx b/src/tag/TagHandler.cxx
index 5a965c3..45b7ce3 100644
--- a/src/tag/TagHandler.cxx
+++ b/src/tag/TagHandler.cxx
@@ -38,7 +38,7 @@ add_tag_tag(TagType type, const char *value, void *ctx)
{
TagBuilder &tag = *(TagBuilder *)ctx;
- if (type == TAG_TRACK || type == TAG_DISC) {
+ if (type == TAG_TRACK || type == TAG_DISC || type ==
TAG_TOTALDISCS) {
/* filter out this extra data and leading zeroes */
char *end;
unsigned n = strtoul(value, &end, 10);
diff --git a/src/tag/TagId3.cxx b/src/tag/TagId3.cxx
index 7330bda..a5b53be 100644
--- a/src/tag/TagId3.cxx
+++ b/src/tag/TagId3.cxx
@@ -319,14 +319,60 @@ scan_id3_tag(struct id3_tag *tag,
handler, handler_ctx);
tag_id3_import_text(tag, ID3_FRAME_COMPOSER, TAG_COMPOSER,
handler, handler_ctx);
- tag_id3_import_text(tag, "TPE3", TAG_PERFORMER,
+ /* New in DB_FORMAT 3 */
+ tag_id3_import_text(tag, "TSOC", TAG_COMPOSER_SORT,
+ handler, handler_ctx);
+ /* Compatibility with DB_FORMAT 2 */
+ tag_id3_import_text(tag, "TPE3", TAG_PERFORMER,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TPE4", TAG_PERFORMER,
+ handler, handler_ctx);
+
+ /* New in DB_FORMAT 3 */
+ tag_id3_import_text(tag, "TPE3", TAG_CONDUCTOR,
handler, handler_ctx);
- tag_id3_import_text(tag, "TPE4", TAG_PERFORMER, handler,
handler_ctx);
+ tag_id3_import_text(tag, "TPE4", TAG_REMIXER,
+ handler, handler_ctx);
+
tag_id3_import_comment(tag, ID3_FRAME_COMMENT, TAG_COMMENT,
handler, handler_ctx);
tag_id3_import_text(tag, ID3_FRAME_DISC, TAG_DISC,
handler, handler_ctx);
+ /* New in DB_FORMAT 3 */
+ tag_id3_import_text(tag, "TBPM", TAG_BPM,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TIT1", TAG_CONTENTGROUP,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TCOP", TAG_COPYRIGHT,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TSST", TAG_DISCSUBTITLE,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TENC", TAG_ENCODEDBY,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "ISRC", TAG_ISRC,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TPUB", TAG_LABEL,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TLAN", TAG_LANGUAGE,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TEXT", TAG_LYRICIST,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TMOO", TAG_MOOD,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TOPE", TAG_ORIGINALARTIST,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TDOR", TAG_ORIGINALDATE,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TDRL", TAG_RELEASEDATE,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TIT3", TAG_SUBTITLE,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TPOS", TAG_TOTALDISCS,
+ handler, handler_ctx);
+ tag_id3_import_text(tag, "TRCK",TAG_TOTALTRACKS,
+ handler, handler_ctx);
+
tag_id3_import_musicbrainz(tag, handler, handler_ctx);
tag_id3_import_ufid(tag, handler, handler_ctx);
}
diff --git a/src/tag/TagNames.c b/src/tag/TagNames.c
index aab33b1..a7c780d 100644
--- a/src/tag/TagNames.c
+++ b/src/tag/TagNames.c
@@ -28,15 +28,40 @@ const char *const
tag_item_names[TAG_NUM_OF_ITEM_TYPES] = {
[TAG_ALBUM_ARTIST] = "AlbumArtist",
[TAG_ALBUM_ARTIST_SORT] = "AlbumArtistSort",
[TAG_TITLE] = "Title",
+ /* New in DB_FORMAT 3 */
+ [TAG_TITLE_SORT] = "TitleSort",
[TAG_TRACK] = "Track",
[TAG_NAME] = "Name",
[TAG_GENRE] = "Genre",
[TAG_DATE] = "Date",
[TAG_COMPOSER] = "Composer",
+ /* New in DB_FORMAT 3 */
+ [TAG_COMPOSER_SORT] = "ComposerSort",
+ /* Compatibility with DB_FORMAT 2 */
[TAG_PERFORMER] = "Performer",
[TAG_COMMENT] = "Comment",
[TAG_DISC] = "Disc",
+ /* New in DB_FORMAT 3 */
+ [TAG_BPM] = "BPM",
+ [TAG_CONDUCTOR] = "Conductor",
+ [TAG_CONTENTGROUP] = "Contentgroup",
+ [TAG_COPYRIGHT] = "Copyright",
+ [TAG_DISCSUBTITLE] = "Discsubtitle",
+ [TAG_ENCODEDBY] = "Encodedby",
+ [TAG_ISRC] = "ISRC",
+ [TAG_LABEL] = "Label",
+ [TAG_LANGUAGE] = "Language",
+ [TAG_LYRICIST] = "Lyricist",
+ [TAG_MOOD] = "Mood",
+ [TAG_ORIGINALARTIST] = "Originalartist",
+ [TAG_ORIGINALDATE] = "Originaldate",
+ [TAG_RELEASEDATE] = "Releasedate",
+ [TAG_REMIXER] = "Remixer",
+ [TAG_SUBTITLE] = "Subtitle",
+ [TAG_TOTALDISCS] = "Totaldiscs",
+ [TAG_TOTALTRACKS] = "Totaltracks",
+
/* MusicBrainz tags from
http://musicbrainz.org/doc/MusicBrainzTag */
[TAG_MUSICBRAINZ_ARTISTID] = "MUSICBRAINZ_ARTISTID",
[TAG_MUSICBRAINZ_ALBUMID] = "MUSICBRAINZ_ALBUMID",
diff --git a/src/tag/TagType.h b/src/tag/TagType.h
index 8aabbc5..b521579 100644
--- a/src/tag/TagType.h
+++ b/src/tag/TagType.h
@@ -42,15 +42,40 @@ enum TagType
TAG_ALBUM_ARTIST,
TAG_ALBUM_ARTIST_SORT,
TAG_TITLE,
+ /* New in DB_FORMAT 3 */
+ TAG_TITLE_SORT,
TAG_TRACK,
TAG_NAME,
TAG_GENRE,
TAG_DATE,
TAG_COMPOSER,
+ /* New in DB_FORMAT 3 */
+ TAG_COMPOSER_SORT,
+ /* Compatibility with DB_FORMAT 2 */
TAG_PERFORMER,
TAG_COMMENT,
TAG_DISC,
+ /* New in DB_FORMAT 3 */
+ TAG_BPM,
+ TAG_CONDUCTOR,
+ TAG_CONTENTGROUP,
+ TAG_COPYRIGHT,
+ TAG_DISCSUBTITLE,
+ TAG_ENCODEDBY,
+ TAG_ISRC,
+ TAG_LABEL,
+ TAG_LANGUAGE,
+ TAG_LYRICIST,
+ TAG_MOOD,
+ TAG_ORIGINALARTIST,
+ TAG_ORIGINALDATE,
+ TAG_RELEASEDATE,
+ TAG_REMIXER,
+ TAG_SUBTITLE,
+ TAG_TOTALDISCS,
+ TAG_TOTALTRACKS,
+
TAG_MUSICBRAINZ_ARTISTID,
+ /* New in DB_FORMAT 3 */
+ TAG_BPM,
+ TAG_CONDUCTOR,
+ TAG_CONTENTGROUP,
+ TAG_COPYRIGHT,
+ TAG_DISCSUBTITLE,
+ TAG_ENCODEDBY,
+ TAG_ISRC,
+ TAG_LABEL,
+ TAG_LANGUAGE,
+ TAG_LYRICIST,
+ TAG_MOOD,
+ TAG_ORIGINALARTIST,
+ TAG_ORIGINALDATE,
+ TAG_RELEASEDATE,
+ TAG_REMIXER,
+ TAG_SUBTITLE,
+ TAG_TOTALDISCS,
+ TAG_TOTALTRACKS,
+
TAG_MUSICBRAINZ_ARTISTID,
TAG_MUSICBRAINZ_ALBUMID,
TAG_MUSICBRAINZ_ALBUMARTISTID,
That's all folks.
Best regards,
jr.
_______________________________________________
mpd-devel mailing list
[email protected]
http://mailman.blarg.de/listinfo/mpd-devel