summaryrefslogtreecommitdiffstats
path: root/src/sources
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2021-05-25 11:22:17 +0200
committerUwe Klotz <uklotz@mixxx.org>2021-05-25 11:22:17 +0200
commit2cb9421341167f54e0c3ca678cebff5772f2065e (patch)
treebf00219511f9a22ba9e09db38bc814e894bbf47e /src/sources
parentc3203cc0af733c5ce58019396699d3e70680c1ea (diff)
parent6dd85df1640d5dbc1cceab010394a9e36c228c1a (diff)
Merge branch '2.3' of git@github.com:mixxxdj/mixxx.git
Diffstat (limited to 'src/sources')
-rw-r--r--src/sources/metadatasourcetaglib.cpp57
1 files changed, 36 insertions, 21 deletions
diff --git a/src/sources/metadatasourcetaglib.cpp b/src/sources/metadatasourcetaglib.cpp
index 007f9219f1..607e9881cf 100644
--- a/src/sources/metadatasourcetaglib.cpp
+++ b/src/sources/metadatasourcetaglib.cpp
@@ -313,8 +313,7 @@ class MpegTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTagsBitmask(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~MpegTagSaver() override {
- }
+ ~MpegTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTagsBitmask != TagLib::MPEG::File::NoTags;
@@ -337,11 +336,15 @@ class MpegTagSaver : public TagSaver {
if (taglib::ape::exportTrackMetadataIntoTag(pFile->APETag(), trackMetadata)) {
modifiedTagsBitmask |= TagLib::MPEG::File::APE;
}
- // Only write ID3v2 tag if it already exists
- pID3v2Tag = pFile->ID3v2Tag(false);
+ // Only write ID3v2 tag if it already exists.
+ if (pFile->hasID3v2Tag()) {
+ pID3v2Tag = pFile->ID3v2Tag(false);
+ DEBUG_ASSERT(pID3v2Tag);
+ }
} else {
// Get or create ID3v2 tag
pID3v2Tag = pFile->ID3v2Tag(true);
+ DEBUG_ASSERT(pID3v2Tag);
}
if (taglib::id3v2::exportTrackMetadataIntoTag(pID3v2Tag, trackMetadata)) {
modifiedTagsBitmask |= TagLib::MPEG::File::ID3v2;
@@ -360,8 +363,7 @@ class Mp4TagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~Mp4TagSaver() override {
- }
+ ~Mp4TagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -386,8 +388,7 @@ class FlacTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~FlacTagSaver() override {
- }
+ ~FlacTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -405,10 +406,14 @@ class FlacTagSaver : public TagSaver {
if (taglib::hasID3v2Tag(*pFile)) {
modifiedTags |= taglib::id3v2::exportTrackMetadataIntoTag(pFile->ID3v2Tag(), trackMetadata);
// Only write VorbisComment tag if it already exists
- pXiphComment = pFile->xiphComment(false);
+ if (taglib::hasXiphComment(*pFile)) {
+ pXiphComment = pFile->xiphComment(false);
+ DEBUG_ASSERT(pXiphComment);
+ }
} else {
// Get or create VorbisComment tag
pXiphComment = pFile->xiphComment(true);
+ DEBUG_ASSERT(pXiphComment);
}
modifiedTags |= taglib::xiph::exportTrackMetadataIntoTag(
pXiphComment, trackMetadata, taglib::FileType::FLAC);
@@ -426,8 +431,7 @@ class OggTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~OggTagSaver() override {
- }
+ ~OggTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -469,8 +473,7 @@ class OpusTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~OpusTagSaver() override {
- }
+ ~OpusTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -499,8 +502,7 @@ class WavPackTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~WavPackTagSaver() override {
- }
+ ~WavPackTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -535,8 +537,7 @@ class WavTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~WavTagSaver() override {
- }
+ ~WavTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;
@@ -550,13 +551,28 @@ class WavTagSaver : public TagSaver {
static bool exportTrackMetadata(TagLib::RIFF::WAV::File* pFile, const TrackMetadata& trackMetadata) {
bool modifiedTags = false;
if (pFile->isOpen()) {
+ TagLib::RIFF::Info::Tag* pInfoTag = nullptr;
// Write into all available tags
#if (TAGLIB_HAS_WAV_ID3V2TAG)
- modifiedTags |= taglib::id3v2::exportTrackMetadataIntoTag(pFile->ID3v2Tag(), trackMetadata);
+ if (pFile->hasID3v2Tag()) {
+ modifiedTags |= taglib::id3v2::exportTrackMetadataIntoTag(
+ pFile->ID3v2Tag(), trackMetadata);
+ // Only write Info tag if it already exists
+ if (pFile->hasInfoTag()) {
+ pInfoTag = pFile->InfoTag();
+ DEBUG_ASSERT(pInfoTag);
+ }
+ } else {
+ // Get or create Info tag
+ pInfoTag = pFile->InfoTag();
+ DEBUG_ASSERT(pInfoTag);
+ }
#else
modifiedTags |= taglib::id3v2::exportTrackMetadataIntoTag(pFile->tag(), trackMetadata);
+ pInfoTag = pFile->InfoTag();
+ DEBUG_ASSERT(pInfoTag);
#endif
- modifiedTags |= exportTrackMetadataIntoRIFFTag(pFile->InfoTag(), trackMetadata);
+ modifiedTags |= exportTrackMetadataIntoRIFFTag(pInfoTag, trackMetadata);
}
return modifiedTags;
}
@@ -571,8 +587,7 @@ class AiffTagSaver : public TagSaver {
: m_file(TAGLIB_FILENAME_FROM_QSTRING(fileName)),
m_modifiedTags(exportTrackMetadata(&m_file, trackMetadata)) {
}
- ~AiffTagSaver() override {
- }
+ ~AiffTagSaver() override = default;
bool hasModifiedTags() const override {
return m_modifiedTags;