From ae10e3e75b7eb78caadd77b2099932060eac6fce Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Sat, 22 Jan 2022 00:22:31 -0800 Subject: [PATCH] TagLib: Read MP4 ReplayGain tags as foobar2000 writes them, not just as EZ CD Audio Converter writes them --- .../TagLib/taglib/taglib/mp4/mp4tag.cpp | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp index 34fa34762..63f762c51 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp +++ b/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp @@ -797,6 +797,8 @@ MP4::Tag::cuesheet() const float MP4::Tag::rgAlbumGain() const { + if(d->items.contains("----:com.apple.iTunes:replaygain_album_gain")) + return d->items["----:com.apple.iTunes:replaygain_album_gain"].toStringList()[0].toFloat(); if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_album_gain")) return d->items["----:org.hydrogenaudio.replaygain:replaygain_album_gain"].toStringList()[0].toFloat(); return 0; @@ -805,6 +807,8 @@ MP4::Tag::rgAlbumGain() const float MP4::Tag::rgAlbumPeak() const { + if(d->items.contains("----:com.apple.iTunes:replaygain_album_peak")) + return d->items["----:com.apple.iTunes:replaygain_album_peak"].toStringList()[0].toFloat(); if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_album_peak")) return d->items["----:org.hydrogenaudio.replaygain:replaygain_album_peak"].toStringList()[0].toFloat(); return 0; @@ -813,6 +817,8 @@ MP4::Tag::rgAlbumPeak() const float MP4::Tag::rgTrackGain() const { + if(d->items.contains("----:com.apple.iTunes:replaygain_track_gain")) + return d->items["----:com.apple.iTunes:replaygain_track_gain"].toStringList()[0].toFloat(); if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_track_gain")) return d->items["----:org.hydrogenaudio.replaygain:replaygain_track_gain"].toStringList()[0].toFloat(); return 0; @@ -821,6 +827,8 @@ MP4::Tag::rgTrackGain() const float MP4::Tag::rgTrackPeak() const { + if(d->items.contains("----:com.apple.iTunes:replaygain_track_peak")) + return d->items["----:com.apple.iTunes:replaygain_track_peak"].toStringList()[0].toFloat(); if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_track_peak")) return d->items["----:org.hydrogenaudio.replaygain:replaygain_track_peak"].toStringList()[0].toFloat(); return 0; @@ -913,25 +921,25 @@ MP4::Tag::setCuesheet(const String &) void MP4::Tag::setRGAlbumGain(float f) { - setTextItem("----:org.hydrogenaudio.replaygain:replaygain_album_gain", String::number(f) + " dB"); + setTextItem("----:com.apple.iTunes:replaygain_album_gain", String::number(f) + " dB"); } void MP4::Tag::setRGAlbumPeak(float f) { - setTextItem("----:org.hydrogenaudio.replaygain:replaygain_album_peak", String::number(f)); + setTextItem("----:com.apple.iTunes:replaygain_album_peak", String::number(f)); } void MP4::Tag::setRGTrackGain(float f) { - setTextItem("----:org.hydrogenaudio.replaygain:replaygain_track_gain", String::number(f) + " dB"); + setTextItem("----:com.apple.iTunes:replaygain_track_gain", String() + ((f >= 0) ? "+" : "") + String::number(f) + " dB"); } void MP4::Tag::setRGTrackPeak(float f) { - setTextItem("----:org.hydrogenaudio.replaygain:replaygain_track_peak", String::number(f)); + setTextItem("----:com.apple.iTunes:replaygain_track_peak", String::number(f)); } bool MP4::Tag::isEmpty() const @@ -1014,6 +1022,10 @@ namespace { "----:org.hydrogenaudio.replaygain:replaygain_track_peak", "REPLAYGAIN_TRACK_PEAK" }, { "----:org.hydrogenaudio.replaygain:replaygain_album_gain", "REPLAYGAIN_ALBUM_GAIN" }, { "----:org.hydrogenaudio.replaygain:replaygain_album_peak", "REPLAYGAIN_ALBUM_PEAK" }, + { "----:com.apple.iTunes:replaygain_track_gain", "REPLAYGAIN_TRACK_GAIN" }, + { "----:com.apple.iTunes:replaygain_track_peak", "REPLAYGAIN_TRACK_PEAK" }, + { "----:com.apple.iTunes:replaygain_album_gain", "REPLAYGAIN_ALBUM_GAIN" }, + { "----:com.apple.iTunes:replaygain_album_peak", "REPLAYGAIN_ALBUM_PEAK" }, { "----:com.apple.iTunes:MusicBrainz Track Id", "MUSICBRAINZ_TRACKID" }, { "----:com.apple.iTunes:MusicBrainz Artist Id", "MUSICBRAINZ_ARTISTID" }, { "----:com.apple.iTunes:MusicBrainz Album Id", "MUSICBRAINZ_ALBUMID" }, @@ -1045,6 +1057,7 @@ namespace { "----:com.apple.iTunes:LANGUAGE", "LANGUAGE" }, { "----:com.apple.iTunes:LICENSE", "LICENSE" }, { "----:com.apple.iTunes:MEDIA", "MEDIA" }, + { "----:com.apple.iTunes:iTunNORM", "SOUNDCHECK" }, }; const size_t keyTranslationSize = sizeof(keyTranslation) / sizeof(keyTranslation[0]);