The Release Track Id uniquely identifies a recording on a release - that
is, even if a recording appears twice on a release (meaning that the
combination of recording and release id are not enough to figure out
which one it is), the release track id will allow differentiating the two.

The tag names are taken from
https://musicbrainz.org/doc/MusicBrainz_Picard/Tags/Mapping
---
 doc/mpd.conf.5                          | 3 ++-
 src/db/plugins/ProxyDatabasePlugin.cxx  | 4 ++++
 src/output/plugins/RoarOutputPlugin.cxx | 3 +++
 src/tag/TagId3.cxx                      | 2 ++
 src/tag/TagNames.c                      | 1 +
 src/tag/TagType.h                       | 1 +
 6 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5
index 6e23f7c..5ff8608 100644
--- a/doc/mpd.conf.5
+++ b/doc/mpd.conf.5
@@ -180,7 +180,8 @@ clients.  Note that you must recreate (not update) your 
database for changes to
 this parameter to take effect.  Possible values are artist, album, title,
 track, name, genre, date, composer, performer, comment, disc,
 musicbrainz_artistid, musicbrainz_albumid, musicbrainz_albumartistid,
-musicbrainz_trackid.  Multiple tags may be specified as a comma separated list.
+musicbrainz_releasetrackid, musicbrainz_trackid.  Multiple tags may be 
specified
+as a comma separated list.
 An example value is "artist,album,title,track".  The special value "none" may
 be used alone to disable all metadata.  The default is to use all known tag
 types except for comments and those starting with "musicbrainz".
diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx 
b/src/db/plugins/ProxyDatabasePlugin.cxx
index 2bd04e3..fba7221 100644
--- a/src/db/plugins/ProxyDatabasePlugin.cxx
+++ b/src/db/plugins/ProxyDatabasePlugin.cxx
@@ -166,6 +166,10 @@ static constexpr struct {
        { TAG_MUSICBRAINZ_ALBUMARTISTID,
          MPD_TAG_MUSICBRAINZ_ALBUMARTISTID },
        { TAG_MUSICBRAINZ_TRACKID, MPD_TAG_MUSICBRAINZ_TRACKID },
+#if LIBMPDCLIENT_CHECK_VERSION(2,10,0)
+       { TAG_MUSICBRAINZ_RELEASETRACKID,
+         MPD_TAG_MUSICBRAINZ_RELEASETRACKID },
+#endif
        { TAG_NUM_OF_ITEM_TYPES, MPD_TAG_COUNT }
 };
 
diff --git a/src/output/plugins/RoarOutputPlugin.cxx 
b/src/output/plugins/RoarOutputPlugin.cxx
index 04836cc..508e147 100644
--- a/src/output/plugins/RoarOutputPlugin.cxx
+++ b/src/output/plugins/RoarOutputPlugin.cxx
@@ -349,6 +349,9 @@ roar_tag_convert(TagType type, bool *is_uuid)
                case TAG_MUSICBRAINZ_TRACKID:
                        *is_uuid = true;
                        return "HASH";
+               case TAG_MUSICBRAINZ_RELEASETRACKID:
+                       *is_uuid = true;
+                       return "HASH";
 
                default:
                        return nullptr;
diff --git a/src/tag/TagId3.cxx b/src/tag/TagId3.cxx
index cbc293f..c179d69 100644
--- a/src/tag/TagId3.cxx
+++ b/src/tag/TagId3.cxx
@@ -259,6 +259,8 @@ tag_id3_parse_txxx_name(const char *name)
                { "MusicBrainz Album Artist Id",
                  TAG_MUSICBRAINZ_ALBUMARTISTID },
                { "MusicBrainz Track Id", TAG_MUSICBRAINZ_TRACKID },
+               { "MusicBrainz Release Track Id",
+                 TAG_MUSICBRAINZ_RELEASETRACKID },
                { nullptr, TAG_NUM_OF_ITEM_TYPES }
        };
 
diff --git a/src/tag/TagNames.c b/src/tag/TagNames.c
index 477ed5f..fb4f5bb 100644
--- a/src/tag/TagNames.c
+++ b/src/tag/TagNames.c
@@ -41,4 +41,5 @@ const char *const tag_item_names[TAG_NUM_OF_ITEM_TYPES] = {
        [TAG_MUSICBRAINZ_ALBUMID] = "MUSICBRAINZ_ALBUMID",
        [TAG_MUSICBRAINZ_ALBUMARTISTID] = "MUSICBRAINZ_ALBUMARTISTID",
        [TAG_MUSICBRAINZ_TRACKID] = "MUSICBRAINZ_TRACKID",
+       [TAG_MUSICBRAINZ_RELEASETRACKID] = "MUSICBRAINZ_RELEASETRACKID",
 };
diff --git a/src/tag/TagType.h b/src/tag/TagType.h
index 0981984..5fd07d2 100644
--- a/src/tag/TagType.h
+++ b/src/tag/TagType.h
@@ -54,6 +54,7 @@ enum TagType
        TAG_MUSICBRAINZ_ALBUMID,
        TAG_MUSICBRAINZ_ALBUMARTISTID,
        TAG_MUSICBRAINZ_TRACKID,
+       TAG_MUSICBRAINZ_RELEASETRACKID,
 
        TAG_NUM_OF_ITEM_TYPES
 };
-- 
2.1.1

_______________________________________________
mpd-devel mailing list
[email protected]
http://mailman.blarg.de/listinfo/mpd-devel

Reply via email to