diff options
-rw-r--r-- | src/sources/soundsourceopus.cpp | 2 | ||||
-rw-r--r-- | src/track/albuminfo.cpp | 25 | ||||
-rw-r--r-- | src/track/albuminfo.h | 15 | ||||
-rw-r--r-- | src/track/track.cpp | 12 | ||||
-rw-r--r-- | src/track/trackinfo.cpp | 55 | ||||
-rw-r--r-- | src/track/trackinfo.h | 24 | ||||
-rw-r--r-- | src/track/trackmetadata.h | 6 | ||||
-rw-r--r-- | src/track/trackmetadatataglib.cpp | 32 | ||||
-rw-r--r-- | src/track/trackmetadatataglib.h | 6 |
9 files changed, 89 insertions, 88 deletions
diff --git a/src/sources/soundsourceopus.cpp b/src/sources/soundsourceopus.cpp index 734dec2e26..4e153c8206 100644 --- a/src/sources/soundsourceopus.cpp +++ b/src/sources/soundsourceopus.cpp @@ -161,7 +161,6 @@ SoundSourceOpus::importTrackMetadataAndCoverImage( trackGain.setRatio(gainRatio); pTrackMetadata->refTrackInfo().setReplayGain(trackGain); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES } else if (!l_STag.compare("REPLAYGAIN_ALBUM_GAIN")) { bool gainRatioValid = false; double gainRatio = ReplayGain::ratioFromString(l_SPayload, &gainRatioValid); @@ -170,7 +169,6 @@ SoundSourceOpus::importTrackMetadataAndCoverImage( albumGain.setRatio(gainRatio); pTrackMetadata->refAlbumInfo().setReplayGain(albumGain); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES } } #endif // TAGLIB_HAS_OPUSFILE diff --git a/src/track/albuminfo.cpp b/src/track/albuminfo.cpp index e314a63fa3..43cf3fc4c5 100644 --- a/src/track/albuminfo.cpp +++ b/src/track/albuminfo.cpp @@ -3,24 +3,29 @@ namespace mixxx { -// TODO(XXX): Add the commented out properties to the Mixxx library +void AlbumInfo::resetUnsupportedValues() { + setMusicBrainzArtistId(QString()); + setMusicBrainzReleaseId(QString()); + setMusicBrainzReleaseGroupId(QString()); + setReplayGain(ReplayGain()); +} + bool operator==(const AlbumInfo& lhs, const AlbumInfo& rhs) { return (lhs.getArtist() == rhs.getArtist()) && - //(lhs.getMusicBrainzArtistId() == rhs.getMusicBrainzArtistId()) && - //(lhs.getMusicBrainzReleaseId() == rhs.getMusicBrainzReleaseId()) && - //(lhs.getMusicBrainzReleaseGroupId() == rhs.getMusicBrainzReleaseGroupId()) && - //(lhs.getReplayGain() == rhs.getReplayGain()) && + (lhs.getMusicBrainzArtistId() == rhs.getMusicBrainzArtistId()) && + (lhs.getMusicBrainzReleaseId() == rhs.getMusicBrainzReleaseId()) && + (lhs.getMusicBrainzReleaseGroupId() == rhs.getMusicBrainzReleaseGroupId()) && + (lhs.getReplayGain() == rhs.getReplayGain()) && (lhs.getTitle() == rhs.getTitle()); } -// TODO(XXX): Add the commented out properties to the Mixxx library QDebug operator<<(QDebug dbg, const AlbumInfo& arg) { dbg << '{'; arg.dbgArtist(dbg); - //arg.dbgMusicBrainzArtistId(dbg); - //arg.dbgMusicBrainzReleaseId(dbg); - //arg.dbgMusicBrainzReleaseGroupId(dbg); - //arg.dbgReplayGain(dbg); + arg.dbgMusicBrainzArtistId(dbg); + arg.dbgMusicBrainzReleaseId(dbg); + arg.dbgMusicBrainzReleaseGroupId(dbg); + arg.dbgReplayGain(dbg); arg.dbgTitle(dbg); dbg << '}'; return dbg; diff --git a/src/track/albuminfo.h b/src/track/albuminfo.h index d6b66cf3a9..f0e4ce65c1 100644 --- a/src/track/albuminfo.h +++ b/src/track/albuminfo.h @@ -12,15 +12,13 @@ namespace mixxx { class AlbumInfo final { // Album properties (in alphabetical order) - // TODO(XXX): Add the commented out properties to the Mixxx library PROPERTY_SET_BYVAL_GET_BYREF(QString, artist, Artist) - //PROPERTY_SET_BYVAL_GET_BYREF(ReplayGain, replayGain, ReplayGain) - //PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzArtistId, MusicBrainzArtistId) - //PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseId, MusicBrainzReleaseId) - //PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseGroupId, MusicBrainzReleaseGroupId) + PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzArtistId, MusicBrainzArtistId) + PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseId, MusicBrainzReleaseId) + PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseGroupId, MusicBrainzReleaseGroupId) + PROPERTY_SET_BYVAL_GET_BYREF(ReplayGain, replayGain, ReplayGain) PROPERTY_SET_BYVAL_GET_BYREF(QString, title, Title) - public: AlbumInfo() = default; AlbumInfo(AlbumInfo&&) = default; @@ -30,10 +28,13 @@ public: AlbumInfo& operator=(AlbumInfo&&) = default; AlbumInfo& operator=(const AlbumInfo&) = default; + // TODO(XXX): Remove after all new fields have been added to the library + void resetUnsupportedValues(); + // Adjusts floating-point values to match their string representation // in file tags to account for rounding errors. void normalizeBeforeExport() { - //refReplayGain().normalizeBeforeExport(); + refReplayGain().normalizeBeforeExport(); } }; diff --git a/src/track/track.cpp b/src/track/track.cpp index b5c8c23de6..ca67185f35 100644 --- a/src/track/track.cpp +++ b/src/track/track.cpp @@ -935,6 +935,9 @@ Track::ExportMetadataResult Track::exportMetadata( // be called after all references to the object have been dropped. // But it doesn't hurt much, so let's play it safe ;) QMutexLocker lock(&m_qMutex); + // Discard the values of all currently unsupported fields that are + // not stored in the library, yet + m_record.refMetadata().resetUnsupportedValues(); // Normalize metadata before export to adjust the precision of // floating values, ... m_record.refMetadata().normalizeBeforeExport(); @@ -960,14 +963,19 @@ Track::ExportMetadataResult Track::exportMetadata( mixxx::TrackMetadata importedFromFile; if ((pMetadataSource->importTrackMetadataAndCoverImage(&importedFromFile, nullptr).first == mixxx::MetadataSource::ImportResult::Succeeded)) { + // Discard the values of all currently unsupported fields that are + // not stored in the library, yet + importedFromFile.resetUnsupportedValues(); // Before comparison: Adjust imported bpm values that might be imprecise, // e.g. integer values from ID3v2 auto actualBpm = getActualBpm(importedFromFile.getTrackInfo().getBpm(), m_pBeats); - // Account for rounding errors during export + // ...account for bpm rounding errors during export... actualBpm.normalizeBeforeExport(); - // Replace the imported bpm value + // ...and replace the imported bpm value importedFromFile.refTrackInfo().setBpm(actualBpm); + // Finally the current and the just imported metadata can be checked for + // differences that will affect the file tags if (!m_record.getMetadata().hasBeenModifiedAfterImport(importedFromFile)) { kLogger.debug() << "Skip exporting of unmodified track metadata:" diff --git a/src/track/trackinfo.cpp b/src/track/trackinfo.cpp index 71d9b041ef..c4bb7641ca 100644 --- a/src/track/trackinfo.cpp +++ b/src/track/trackinfo.cpp @@ -3,53 +3,64 @@ namespace mixxx { -// TODO(XXX): Add the commented out properties to the Mixxx library +void TrackInfo::resetUnsupportedValues() { + setConductor(QString()); + setISRC(QString()); + setLanguage(QString()); + setLyricist(QString()); + setMood(QString()); + setMusicBrainzArtistId(QString()); + setMusicBrainzReleaseId(QString()); + setRecordLabel(QString()); + setRemixer(QString()); + setSubtitle(QString()); +} + bool operator==(const TrackInfo& lhs, const TrackInfo& rhs) { return (lhs.getArtist() == rhs.getArtist()) && (lhs.getBpm() == rhs.getBpm()) && (lhs.getComment() == rhs.getComment()) && (lhs.getComposer() == rhs.getComposer()) && - //(lhs.getConductor() == rhs.getConductor()) && + (lhs.getConductor() == rhs.getConductor()) && (lhs.getGrouping() == rhs.getGrouping()) && (lhs.getGenre() == rhs.getGenre()) && - //(lhs.getISRC() == rhs.getISRC()) && + (lhs.getISRC() == rhs.getISRC()) && (lhs.getKey() == rhs.getKey()) && - //(lhs.getLanguage() == rhs.getLanguage()) && - //(lhs.getLyricist() == rhs.getLyricist()) && - //(lhs.getMood() == rhs.getMood()) && - //(lhs.getMusicBrainzArtistId() == rhs.getMusicBrainzArtistId()) && - //(lhs.getMusicBrainzReleaseId() == rhs.getMusicBrainzReleaseId()) && - //(lhs.getRecordLabel() == rhs.getRecordLabel()) && - //(lhs.getRemixer() == rhs.getRemixer()) && + (lhs.getLanguage() == rhs.getLanguage()) && + (lhs.getLyricist() == rhs.getLyricist()) && + (lhs.getMood() == rhs.getMood()) && + (lhs.getMusicBrainzArtistId() == rhs.getMusicBrainzArtistId()) && + (lhs.getMusicBrainzReleaseId() == rhs.getMusicBrainzReleaseId()) && + (lhs.getRecordLabel() == rhs.getRecordLabel()) && + (lhs.getRemixer() == rhs.getRemixer()) && (lhs.getReplayGain() == rhs.getReplayGain()) && - //(lhs.getSubtitle() == rhs.getSubtitle()) && + (lhs.getSubtitle() == rhs.getSubtitle()) && (lhs.getTitle() == rhs.getTitle()) && (lhs.getTrackNumber() == rhs.getTrackNumber()) && (lhs.getTrackTotal() == rhs.getTrackTotal()) && (lhs.getYear() == rhs.getYear()); } -// TODO(XXX): Add the commented out properties to the Mixxx library QDebug operator<<(QDebug dbg, const TrackInfo& arg) { dbg << '{'; arg.dbgArtist(dbg); arg.dbgBpm(dbg); arg.dbgComment(dbg); arg.dbgComposer(dbg); - //arg.dbgConductor(dbg); + arg.dbgConductor(dbg); arg.dbgGrouping(dbg); arg.dbgGenre(dbg); - //arg.dbgISRC(dbg); + arg.dbgISRC(dbg); arg.dbgKey(dbg); - //arg.dbgLanguage(dbg); - //arg.dbgLyricist(dbg); - //arg.dbgMood(dbg); - //arg.dbgMusicBrainzArtistId(dbg); - //arg.dbgMusicBrainzReleaseId(dbg); - //arg.dbgRecordLabel(dbg); - //arg.dbgRemixer(dbg); + arg.dbgLanguage(dbg); + arg.dbgLyricist(dbg); + arg.dbgMood(dbg); + arg.dbgMusicBrainzArtistId(dbg); + arg.dbgMusicBrainzReleaseId(dbg); + arg.dbgRecordLabel(dbg); + arg.dbgRemixer(dbg); arg.dbgReplayGain(dbg); - //arg.dbgSubtitle(dbg); + arg.dbgSubtitle(dbg); arg.dbgTitle(dbg); arg.dbgTrackNumber(dbg); arg.dbgTrackTotal(dbg); diff --git a/src/track/trackinfo.h b/src/track/trackinfo.h index 9e140389d2..6304d78434 100644 --- a/src/track/trackinfo.h +++ b/src/track/trackinfo.h @@ -16,25 +16,24 @@ namespace mixxx { class TrackInfo final { // Track properties (in alphabetical order) - // TODO(XXX): Add the commented out properties to the Mixxx library PROPERTY_SET_BYVAL_GET_BYREF(QString, artist, Artist) PROPERTY_SET_BYVAL_GET_BYREF(Bpm, bpm, Bpm) PROPERTY_SET_BYVAL_GET_BYREF(QString, comment, Comment) PROPERTY_SET_BYVAL_GET_BYREF(QString, composer, Composer) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, conductor, Conductor) + PROPERTY_SET_BYVAL_GET_BYREF(QString, conductor, Conductor) PROPERTY_SET_BYVAL_GET_BYREF(QString, genre, Genre) PROPERTY_SET_BYVAL_GET_BYREF(QString, grouping, Grouping) PROPERTY_SET_BYVAL_GET_BYREF(QString, key, Key) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, isrc, ISRC) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, language, Language) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, lyricist, Lyricist) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, mood, Mood) - //PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzArtistId, MusicBrainzArtistId) - //PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseId, MusicBrainzReleaseId) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, recordLabel, RecordLabel) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, remixer, Remixer) + PROPERTY_SET_BYVAL_GET_BYREF(QString, isrc, ISRC) + PROPERTY_SET_BYVAL_GET_BYREF(QString, language, Language) + PROPERTY_SET_BYVAL_GET_BYREF(QString, lyricist, Lyricist) + PROPERTY_SET_BYVAL_GET_BYREF(QString, mood, Mood) + PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzArtistId, MusicBrainzArtistId) + PROPERTY_SET_BYVAL_GET_BYREF(QUuid, musicBrainzReleaseId, MusicBrainzReleaseId) + PROPERTY_SET_BYVAL_GET_BYREF(QString, recordLabel, RecordLabel) + PROPERTY_SET_BYVAL_GET_BYREF(QString, remixer, Remixer) PROPERTY_SET_BYVAL_GET_BYREF(ReplayGain, replayGain, ReplayGain) - //PROPERTY_SET_BYVAL_GET_BYREF(QString, subtitle, Subtitle) + PROPERTY_SET_BYVAL_GET_BYREF(QString, subtitle, Subtitle) PROPERTY_SET_BYVAL_GET_BYREF(QString, title, Title) PROPERTY_SET_BYVAL_GET_BYREF(QString, trackNumber, TrackNumber) PROPERTY_SET_BYVAL_GET_BYREF(QString, trackTotal, TrackTotal) @@ -49,6 +48,9 @@ public: TrackInfo& operator=(TrackInfo&&) = default; TrackInfo& operator=(const TrackInfo&) = default; + // TODO(XXX): Remove after all new fields have been added to the library + void resetUnsupportedValues(); + // Adjusts floating-point values to match their string representation // in file tags to account for rounding errors. void normalizeBeforeExport() { diff --git a/src/track/trackmetadata.h b/src/track/trackmetadata.h index f17743da3b..956b6c7107 100644 --- a/src/track/trackmetadata.h +++ b/src/track/trackmetadata.h @@ -33,6 +33,12 @@ public: TrackMetadata& operator=(TrackMetadata&&) = default; TrackMetadata& operator=(const TrackMetadata&) = default; + // TODO(XXX): Remove after all new fields have been added to the library + void resetUnsupportedValues() { + refAlbumInfo().resetUnsupportedValues(); + refTrackInfo().resetUnsupportedValues(); + } + // Adjusts floating-point values to match their string representation // in file tags to account for rounding errors. void normalizeBeforeExport() { diff --git a/src/track/trackmetadatataglib.cpp b/src/track/trackmetadatataglib.cpp index 059ddb82be..e89a8966cc 100644 --- a/src/track/trackmetadatataglib.cpp +++ b/src/track/trackmetadatataglib.cpp @@ -313,8 +313,6 @@ bool parseTrackPeak( return isPeakValid; } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES - inline bool hasAlbumGain(const TrackMetadata& trackMetadata) { return trackMetadata.getAlbumInfo().getReplayGain().hasRatio(); @@ -361,8 +359,6 @@ bool parseAlbumPeak( return isPeakValid; } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES - void readAudioProperties( TrackMetadata* pTrackMetadata, const TagLib::AudioProperties& audioProperties) { @@ -604,7 +600,6 @@ void writeID3v2TextIdentificationFrame( } } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES bool writeID3v2TextIdentificationFrameStringIfNotNull( TagLib::ID3v2::Tag* pTag, const TagLib::ByteVector &id, @@ -616,7 +611,6 @@ bool writeID3v2TextIdentificationFrameStringIfNotNull( return true; } } -#endif void writeID3v2CommentsFrame( TagLib::ID3v2::Tag* pTag, @@ -1201,7 +1195,6 @@ void importTrackMetadataFromID3v2Tag(TrackMetadata* pTrackMetadata, parseTrackPeak(pTrackMetadata, trackPeak); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES QString albumGain = readFirstUserTextIdentificationFrame(tag, "REPLAYGAIN_ALBUM_GAIN"); if (!albumGain.isEmpty()) { @@ -1273,7 +1266,6 @@ void importTrackMetadataFromID3v2Tag(TrackMetadata* pTrackMetadata, if (!subtitleFrame.isEmpty()) { pTrackMetadata->refTrackInfo().setSubtitle(toQStringFirstNotEmpty(subtitleFrame)); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES } void importTrackMetadataFromAPETag(TrackMetadata* pTrackMetadata, const TagLib::APE::Tag& tag) { @@ -1332,7 +1324,6 @@ void importTrackMetadataFromAPETag(TrackMetadata* pTrackMetadata, const TagLib:: parseTrackPeak(pTrackMetadata, trackPeak); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES QString albumGain; if (readAPEItem(tag, "REPLAYGAIN_ALBUM_GAIN", &albumGain)) { parseTrackGain(pTrackMetadata, albumGain); @@ -1395,7 +1386,6 @@ void importTrackMetadataFromAPETag(TrackMetadata* pTrackMetadata, const TagLib:: if (readAPEItem(tag, "Subtitle", &subtitle)) { pTrackMetadata->refTrackInfo().setSubtitle(subtitle); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES } void importTrackMetadataFromVorbisCommentTag(TrackMetadata* pTrackMetadata, @@ -1497,7 +1487,6 @@ void importTrackMetadataFromVorbisCommentTag(TrackMetadata* pTrackMetadata, parseTrackPeak(pTrackMetadata, trackPeak); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES QString albumGain; if (readXiphCommentField(tag, "REPLAYGAIN_ALBUM_GAIN", &albumGain)) { parseAlbumGain(pTrackMetadata, albumGain); @@ -1560,7 +1549,6 @@ void importTrackMetadataFromVorbisCommentTag(TrackMetadata* pTrackMetadata, if (readXiphCommentField(tag, "SUBTITLE", &subtitle)) { pTrackMetadata->refTrackInfo().setSubtitle(subtitle); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES } void importTrackMetadataFromMP4Tag(TrackMetadata* pTrackMetadata, const TagLib::MP4::Tag& tag) { @@ -1634,7 +1622,6 @@ void importTrackMetadataFromMP4Tag(TrackMetadata* pTrackMetadata, const TagLib:: parseTrackPeak(pTrackMetadata, trackPeak); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES QString albumGain; if (readMP4Atom(tag, "----:com.apple.iTunes:replaygain_album_gain", &albumGain)) { parseAlbumGain(pTrackMetadata, albumGain); @@ -1697,7 +1684,6 @@ void importTrackMetadataFromMP4Tag(TrackMetadata* pTrackMetadata, const TagLib:: if (readMP4Atom(tag, "----:com.apple.iTunes:SUBTITLE", &subtitle)) { pTrackMetadata->refTrackInfo().setSubtitle(subtitle); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES } void importTrackMetadataFromRIFFTag(TrackMetadata* pTrackMetadata, const TagLib::RIFF::Info::Tag& tag) { @@ -1854,10 +1840,10 @@ bool exportTrackMetadataIntoID3v2Tag(TagLib::ID3v2::Tag* pTag, true); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES // TODO(XXX): The following tags are currently not stored in the // Mixxx library. Only write properties that have non-null values // to prevent deleting existing tags! + if (hasAlbumGain(trackMetadata)) { writeID3v2UserTextIdentificationFrame( pTag, @@ -1909,9 +1895,6 @@ bool exportTrackMetadataIntoID3v2Tag(TagLib::ID3v2::Tag* pTag, false); } - // TODO(XXX): The following tags are currently not stored in the - // Mixxx library. Only write properties that have non-null values - // to prevent deleting existing tags! writeID3v2TextIdentificationFrameStringIfNotNull( pTag, "TPE3", @@ -1946,7 +1929,6 @@ bool exportTrackMetadataIntoID3v2Tag(TagLib::ID3v2::Tag* pTag, pTag, "TIT3", trackMetadata.getTrackInfo().getSubtitle()); -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES return true; } @@ -1992,10 +1974,10 @@ bool exportTrackMetadataIntoAPETag(TagLib::APE::Tag* pTag, const TrackMetadata& toTagLibString(formatTrackPeak(trackMetadata))); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES // TODO(XXX): The following tags are currently not stored in the // Mixxx library. Only write properties that have non-null values // to prevent deleting existing tags! + if (hasAlbumGain(trackMetadata)) { writeAPEItem(pTag, "REPLAYGAIN_ALBUM_GAIN", toTagLibString(formatAlbumGain(trackMetadata))); @@ -2026,9 +2008,6 @@ bool exportTrackMetadataIntoAPETag(TagLib::APE::Tag* pTag, const TrackMetadata& toTagLibString(trackMetadata.getAlbumInfo().getMusicBrainzReleaseGroupId().toString())); } - // TODO(XXX): The following tags are currently not stored in the - // Mixxx library. Only write properties that have non-null values - // to prevent deleting existing tags! if (!trackMetadata.getTrackInfo().getConductor().isNull()) { writeAPEItem(pTag, "Conductor", toTagLibString(trackMetadata.getTrackInfo().getConductor())); @@ -2061,7 +2040,6 @@ bool exportTrackMetadataIntoAPETag(TagLib::APE::Tag* pTag, const TrackMetadata& writeAPEItem(pTag, "Subtitle", toTagLibString(trackMetadata.getTrackInfo().getSubtitle())); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES return true; } @@ -2145,10 +2123,10 @@ bool exportTrackMetadataIntoXiphComment(TagLib::Ogg::XiphComment* pTag, toTagLibString(formatTrackPeak(trackMetadata))); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES // TODO(XXX): The following tags are currently not stored in the // Mixxx library. Only write properties that have non-null values // to prevent deleting existing tags! + if (hasAlbumGain(trackMetadata)) { writeXiphCommentField(pTag, "REPLAYGAIN_ALBUM_GAIN", toTagLibString(formatAlbumGain(trackMetadata))); @@ -2209,7 +2187,6 @@ bool exportTrackMetadataIntoXiphComment(TagLib::Ogg::XiphComment* pTag, writeXiphCommentField(pTag, "SUBTITLE", toTagLibString(trackMetadata.getTrackInfo().getSubtitle())); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES return true; } @@ -2279,10 +2256,10 @@ bool exportTrackMetadataIntoMP4Tag(TagLib::MP4::Tag* pTag, const TrackMetadata& toTagLibString(formatTrackPeak(trackMetadata))); } -#ifndef EXCLUDE_EXTRA_METADATA_PROPERTIES // TODO(XXX): The following tags are currently not stored in the // Mixxx library. Only write properties that have non-null values // to prevent deleting existing tags! + if (hasAlbumGain(trackMetadata)) { writeMP4Atom(pTag, "----:com.apple.iTunes:replaygain_album_gain", toTagLibString(formatAlbumGain(trackMetadata))); @@ -2343,7 +2320,6 @@ bool exportTrackMetadataIntoMP4Tag(TagLib::MP4::Tag* pTag, const TrackMetadata& writeMP4Atom(pTag, "----:com.apple.iTunes:SUBTITLE", toTagLibString(trackMetadata.getTrackInfo().getSubtitle())); } -#endif // EXCLUDE_EXTRA_METADATA_PROPERTIES return true; } diff --git a/src/track/trackmetadatataglib.h b/src/track/trackmetadatataglib.h index 1535eaa687..f1ec48a4ee 100644 --- a/src/track/trackmetadatataglib.h +++ b/src/track/trackmetadatataglib.h @@ -22,12 +22,6 @@ #define TAGLIB_HAS_AIFF_HAS_ID3V2TAG \ (TAGLIB_MAJOR_VERSION > 1) || ((TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION >= 10)) -// TODO(XXX): Add those fields to the Mixxx library and remove the #define -// If those properties are imported but not stored in the database -// Mixxx would detect metadata as modified and export it again although -// nothing has changed. -#define EXCLUDE_EXTRA_METADATA_PROPERTIES - #include <QImage> #include "track/trackmetadata.h" |