From 18351dcd245d839d3b6926a2c790684c80583a37 Mon Sep 17 00:00:00 2001 From: Sumaid Syed Date: Fri, 5 Jul 2019 20:14:34 +0530 Subject: [PATCH] tag: Add tags for acoustid id & acoustid fingerprint Mapping followed: https://picard.musicbrainz.org/docs/mappings/ https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/612 --- gst-libs/gst/tag/gstid3tag.c | 4 ++++ gst-libs/gst/tag/gstvorbistag.c | 2 ++ gst-libs/gst/tag/tag.h | 33 ++++++++++++++++++++++++++++++--- gst-libs/gst/tag/tags.c | 5 +++++ tests/check/libs/tag.c | 4 ++++ 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/gst-libs/gst/tag/gstid3tag.c b/gst-libs/gst/tag/gstid3tag.c index 7509b6917b..1bb0e8c2e4 100644 --- a/gst-libs/gst/tag/gstid3tag.c +++ b/gst-libs/gst/tag/gstid3tag.c @@ -161,6 +161,10 @@ static const GstTagEntryMatch user_tag_matches[] = { {GST_TAG_MUSICBRAINZ_ALBUMARTISTID, "TXXX|MusicBrainz Album Artist Id"}, {GST_TAG_MUSICBRAINZ_RELEASEGROUPID, "TXXX|MusicBrainz Release Group Id"}, {GST_TAG_MUSICBRAINZ_TRMID, "TXXX|MusicBrainz TRM Id"}, + /* acoustid identifiers according to the official musicbrainz mapping + * https://picard.musicbrainz.org/docs/mappings/ */ + {GST_TAG_ACOUSTID_ID, "TXXX|Acoustid Id"}, + {GST_TAG_ACOUSTID_FINGERPRINT, "TXXX|Acoustid Fingerprint"}, /* according to: http://wiki.musicbrainz.org/MusicBrainzTag (yes, no space * before 'ID' and not 'Id' either this time, yay for consistency) */ {GST_TAG_CDDA_MUSICBRAINZ_DISCID, "TXXX|MusicBrainz DiscID"}, diff --git a/gst-libs/gst/tag/gstvorbistag.c b/gst-libs/gst/tag/gstvorbistag.c index a9ce48568b..756c9d247e 100644 --- a/gst-libs/gst/tag/gstvorbistag.c +++ b/gst-libs/gst/tag/gstvorbistag.c @@ -73,6 +73,8 @@ static const GstTagEntryMatch tag_matches[] = { {GST_TAG_ALBUM_GAIN, "REPLAYGAIN_ALBUM_GAIN"}, {GST_TAG_ALBUM_PEAK, "REPLAYGAIN_ALBUM_PEAK"}, {GST_TAG_REFERENCE_LEVEL, "REPLAYGAIN_REFERENCE_LOUDNESS"}, + {GST_TAG_ACOUSTID_ID, "ACOUSTID_ID"}, + {GST_TAG_ACOUSTID_FINGERPRINT, "ACOUSTID_FINGERPRINT"}, {GST_TAG_MUSICBRAINZ_TRACKID, "MUSICBRAINZ_TRACKID"}, {GST_TAG_MUSICBRAINZ_RELEASETRACKID, "MUSICBRAINZ_RELEASETRACKID"}, {GST_TAG_MUSICBRAINZ_ARTISTID, "MUSICBRAINZ_ARTISTID"}, diff --git a/gst-libs/gst/tag/tag.h b/gst-libs/gst/tag/tag.h index 749705e8ce..f19b4c680e 100644 --- a/gst-libs/gst/tag/tag.h +++ b/gst-libs/gst/tag/tag.h @@ -61,12 +61,16 @@ G_BEGIN_DECLS * GST_TAG_MUSICBRAINZ_RELEASEGROUPID: * * MusicBrainz Release Group ID + * + * Since: 1.18 */ #define GST_TAG_MUSICBRAINZ_RELEASEGROUPID "musicbrainz-releasegroupid" /** * GST_TAG_MUSICBRAINZ_RELEASETRACKID: * * MusicBrainz Release Track ID + * + * Since: 1.18 */ #define GST_TAG_MUSICBRAINZ_RELEASETRACKID "musicbrainz-releasetrackid" /** @@ -76,6 +80,29 @@ G_BEGIN_DECLS */ #define GST_TAG_MUSICBRAINZ_TRMID "musicbrainz-trmid" +/** + * GST_TAG_ACOUSTID_ID: + * + * AcoustID Identifier + * + * Since: 1.18 + */ +#define GST_TAG_ACOUSTID_ID "acoustid-id" + +/** + * GST_TAG_ACOUSTID_FINGERPRINT: + * + * AcoustID Fingerprint (Chromaprint) + * + * Since: 1.18 + */ +/* + * FIXME 2.0: Using "chromaprint-fingerprint" for backwards compatibility with the + * old custom tag from the chromaprint plugin but should change this to + * "acoustid-fingerprint" in 2.0 for consistency. +*/ +#define GST_TAG_ACOUSTID_FINGERPRINT "chromaprint-fingerprint" + /** * GST_TAG_CMML_STREAM: * @@ -443,12 +470,12 @@ GST_TAG_API const gchar * gst_tag_to_vorbis_tag (const gchar * gst_tag); GST_TAG_API -void gst_vorbis_tag_add (GstTagList * list, - const gchar * tag, +void gst_vorbis_tag_add (GstTagList * list, + const gchar * tag, const gchar * value); GST_TAG_API -GList * gst_tag_to_vorbis_comments (const GstTagList * list, +GList * gst_tag_to_vorbis_comments (const GstTagList * list, const gchar * tag); /* functions to convert GstBuffers with vorbiscomment contents to GstTagLists and back */ diff --git a/gst-libs/gst/tag/tags.c b/gst-libs/gst/tag/tags.c index ac94860772..7f0eef467d 100644 --- a/gst-libs/gst/tag/tags.c +++ b/gst-libs/gst/tag/tags.c @@ -90,6 +90,11 @@ gst_tag_register_tags_internal (gpointer unused) _("MusicBrainz release track ID"), NULL); gst_tag_register_static (GST_TAG_MUSICBRAINZ_TRMID, GST_TAG_FLAG_META, G_TYPE_STRING, _("track TRM ID"), _("MusicBrainz TRM ID"), NULL); + gst_tag_register_static (GST_TAG_ACOUSTID_ID, GST_TAG_FLAG_META, + G_TYPE_STRING, _("AcoustID ID"), _("AcoustID ID"), NULL); + gst_tag_register_static (GST_TAG_ACOUSTID_FINGERPRINT, + GST_TAG_FLAG_META, G_TYPE_STRING, _("AcoustID fingerprint (chromaprint)"), + _("AcoustID fingerprint (chromaprint)"), NULL); /* CDDA tags */ gst_tag_register_static (GST_TAG_CDDA_CDDB_DISCID, GST_TAG_FLAG_META, diff --git a/tests/check/libs/tag.c b/tests/check/libs/tag.c index b3be945bb0..2b3ae57419 100644 --- a/tests/check/libs/tag.c +++ b/tests/check/libs/tag.c @@ -253,6 +253,8 @@ GST_START_TEST (test_vorbis_tags) gst_vorbis_tag_add (list, "CONTACT", "Coo"); gst_vorbis_tag_add (list, "COMMENT", "Stroodle is good"); gst_vorbis_tag_add (list, "COMMENT", "Peroxysulfid stroodles the brain"); + gst_vorbis_tag_add (list, "ACOUSTID_ID", "5678913"); + gst_vorbis_tag_add (list, "ACOUSTID_FINGERPRINT", "5678912"); gst_vorbis_tag_add (list, "TRACKNUMBER", "5"); gst_vorbis_tag_add (list, "TRACKTOTAL", "77"); @@ -275,6 +277,8 @@ GST_START_TEST (test_vorbis_tags) ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_CONTACT, "Coo"); ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_COMMENT, "Peroxysulfid stroodles the brain"); + ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_ACOUSTID_ID, "5678913"); + ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_ACOUSTID_FINGERPRINT, "5678912"); ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_COMMENT, "Stroodle is good"); ASSERT_TAG_LIST_HAS_UINT (list, GST_TAG_TRACK_NUMBER, 5); ASSERT_TAG_LIST_HAS_UINT (list, GST_TAG_TRACK_COUNT, 77);