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<TagLib::MP4::Tag *>(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)
