patch from fork as official is archived https://github.com/nullobsi/cantata/commit/45bac9eb3e99ed75b6539f92418556dac1c0193d.patch diff --git a/tags/tags.cpp b/tags/tags.cpp index ce86a1e8..5817dc1b 100644 --- a/tags/tags.cpp +++ b/tags/tags.cpp @@ -619,7 +619,7 @@ static void readAPETags(TagLib::APE::Tag *tag, Song *song, ReplayGain *rg, QImag if (map.contains("COVER ART (FRONT)")) { const TagLib::ByteVector nullStringTerminator(1, 0); - TagLib::ByteVector item = map["COVER ART (FRONT)"].value(); + TagLib::ByteVector item = map["COVER ART (FRONT)"].binaryData(); int pos = item.find(nullStringTerminator); // Skip the filename if (++pos > 0) { @@ -1301,7 +1301,7 @@ static void readTags(const TagLib::FileRef fileref, Song *song, ReplayGain *rg, } } else if (TagLib::RIFF::WAV::File *file = dynamic_cast< TagLib::RIFF::WAV::File * >(fileref.file())) { if (file->tag()) { - readID3v2Tags(file->tag(), song, rg, img, lyrics, rating); + readID3v2Tags(file->ID3v2Tag(), song, rg, img, lyrics, rating); } #ifdef TAGLIB_ASF_FOUND } else if (TagLib::ASF::File *file = dynamic_cast< TagLib::ASF::File * >(fileref.file())) { @@ -1419,7 +1419,7 @@ static bool writeTags(const TagLib::FileRef fileref, const Song &from, const Son } } else if (TagLib::RIFF::WAV::File *file = dynamic_cast< TagLib::RIFF::WAV::File * >(fileref.file())) { if (file->tag()) { - changed=writeID3v2Tags(file->tag(), from, to, rg, img, rating) || changed; + changed=writeID3v2Tags(file->ID3v2Tag(), from, to, rg, img, rating) || changed; } #ifdef TAGLIB_ASF_FOUND } else if (TagLib::ASF::File *file = dynamic_cast< TagLib::ASF::File * >(fileref.file())) { @@ -1455,7 +1455,7 @@ Song read(const QString &fileName) readTags(fileref, &song, nullptr, nullptr, nullptr, nullptr); song.file=fileName; - song.time=fileref.audioProperties() ? fileref.audioProperties()->length() : 0; + song.time=fileref.audioProperties() ? fileref.audioProperties()->lengthInSeconds() : 0; return song; }