TagLib: Read MP4 ReplayGain tags as foobar2000 writes them, not just as EZ CD Audio Converter writes them

CQTexperiment
Christopher Snowhill 2022-01-22 00:22:31 -08:00
parent 5bf5830b17
commit ae10e3e75b
1 changed files with 17 additions and 4 deletions

View File

@ -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]);