no upstream PR. It doesn't use anymore taglib for his 2.X --- a/src/qm_player.cpp +++ b/src/qm_player.cpp @@ -2021,7 +2021,7 @@ { const TagLib::ByteVector nullStringTerminator(1, 0); - TagLib::ByteVector item = listMap["COVER ART (FRONT)"].value(); + TagLib::ByteVector item = listMap["COVER ART (FRONT)"].binaryData(); int pos = item.find(nullStringTerminator); // Skip the filename if (++pos > 0) @@ -2166,8 +2166,8 @@ if (mp4file.tag()) // has MP4 tag { TagLib::MP4::Tag *tag = static_cast(mp4file.tag()); - TagLib::MP4::ItemListMap itemsListMap = tag->itemListMap(); - if (tag->itemListMap().contains("covr")) + TagLib::MP4::ItemMap itemsListMap = tag->itemMap(); + if (tag->itemMap().contains("covr")) { TagLib::MP4::Item coverItem = itemsListMap["covr"]; TagLib::MP4::CoverArtList coverArtList = coverItem.toCoverArtList(); @@ -2197,7 +2197,7 @@ { const TagLib::ByteVector nullStringTerminator(1, 0); - TagLib::ByteVector item = listMap["COVER ART (FRONT)"].value(); + TagLib::ByteVector item = listMap["COVER ART (FRONT)"].binaryData(); int pos = item.find(nullStringTerminator); // Skip the filename if (++pos > 0) @@ -2230,7 +2230,7 @@ printf ("APE tag COVER ART found\n"); const TagLib::ByteVector nullStringTerminator(1, 0); - TagLib::ByteVector item = listMap["COVER ART (FRONT)"].value(); + TagLib::ByteVector item = listMap["COVER ART (FRONT)"].binaryData(); int pos = item.find(nullStringTerminator); // Skip the filename if (++pos > 0) @@ -2270,7 +2270,7 @@ { const TagLib::ByteVector nullStringTerminator(1, 0); - TagLib::ByteVector item = listMap["COVER ART (FRONT)"].value(); + TagLib::ByteVector item = listMap["COVER ART (FRONT)"].binaryData(); int pos = item.find(nullStringTerminator); // Skip the filename if (++pos > 0)