]> git.sesse.net Git - vlc/commitdiff
taglib: accept the Xiph comments with more than one embedded art,
authorRémi Duraffort <ivoire@videolan.org>
Sat, 10 Jan 2009 18:11:58 +0000 (19:11 +0100)
committerRémi Duraffort <ivoire@videolan.org>
Sat, 10 Jan 2009 20:29:24 +0000 (21:29 +0100)
but take only the first one.

modules/meta_engine/taglib.cpp

index df2a7bb1c6d0364e1025634dc89c4203c045f50f..2aa740b18c096fb2e6580b43d627bb5435b8c59b 100644 (file)
@@ -270,21 +270,21 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_t* p_demux, demux_met
     StringList mime_list = tag->fieldListMap()[ "COVERARTMIME" ];
     StringList art_list = tag->fieldListMap()[ "COVERART" ];
 
-    /* we support only one cover in ogg/vorbis */
-    if( mime_list.size() != 1 || art_list.size() != 1 )
+    // We get only the first covert art
+    if( mime_list.size() > 1 || art_list.size() > 1 )
+        msg_Warn( p_demux, "Found %i embedded arts, so using only the first one",
+                  art_list.size() );
+    else if( mime_list.size() == 0 || art_list.size() == 0 )
         return;
 
     input_attachment_t *p_attachment;
 
-    const char *psz_name, *psz_mime, *psz_description;
-    uint8_t *p_data;
-    int i_data;
-
-    psz_name = "cover";
-    psz_mime = mime_list[0].toCString(true);
-    psz_description = "cover";
+    const char* psz_name = "cover";
+    const char* psz_mime = mime_list[0].toCString(true);
+    const char* psz_description = "cover";
 
-    i_data = vlc_b64_decode_binary( &p_data, art_list[0].toCString(true) );
+    uint8_t *p_data;
+    int i_data = vlc_b64_decode_binary( &p_data, art_list[0].toCString(true) );
 
     msg_Dbg( p_demux, "Found embedded art: %s (%s) is %i bytes",
              psz_name, psz_mime, i_data );