]> git.sesse.net Git - vlc/blobdiff - modules/meta_engine/folder.c
taglib: support for id3v2 embedded album art
[vlc] / modules / meta_engine / folder.c
index 507a700830c4832e3a4aff685fbe10e4291ae4b4..d52bb60baf2e128c396f3a2a7281a8df1a1b51ec 100644 (file)
@@ -24,8 +24,6 @@
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#define _GNU_SOURCE
-#include <stdlib.h>                                      /* malloc(), free() */
 
 #include <vlc/vlc.h>
 #include <vlc_interface.h>
@@ -55,7 +53,7 @@ vlc_module_begin();
     set_shortname( N_( "Folder" ) );
     set_description( _("Folder meta data") );
 
-    set_capability( "art finder", 10 );
+    set_capability( "art finder", 90 );
     set_callbacks( FindMeta, NULL );
 vlc_module_end();
 
@@ -70,10 +68,9 @@ static int FindMeta( vlc_object_t *p_this )
     int i = 0;
     struct stat a;
     char psz_filename[MAX_PATH];
-    char *psz_dir = strdup( p_item->psz_uri );
+    char *psz_dir = input_item_GetURI( p_item );
     char *psz_buf = strrchr( psz_dir, '/' );
 
-    if( !p_item->p_meta ) return VLC_EGENERIC;
     if( psz_buf )
     {
         psz_buf++;
@@ -84,6 +81,10 @@ static int FindMeta( vlc_object_t *p_this )
         *psz_dir = '\0';
     }
 
+    char *psz_path = psz_dir;
+    if( !strncmp( psz_path, "file://", 7 ) )
+        psz_path += 7;
+
     for( i = 0; b_have_art == VLC_FALSE && i < 3; i++ )
     {
         switch( i )
@@ -91,25 +92,25 @@ static int FindMeta( vlc_object_t *p_this )
             case 0:
             /* Windows Folder.jpg */
             snprintf( psz_filename, MAX_PATH,
-                      "file://%sFolder.jpg", psz_dir );
+                      "file://%sFolder.jpg", psz_path );
             break;
 
             case 1:
             /* Windows AlbumArtSmall.jpg == small version of Folder.jpg */
             snprintf( psz_filename, MAX_PATH,
-                  "file://%sAlbumArtSmall.jpg", psz_dir );
+                  "file://%sAlbumArtSmall.jpg", psz_path );
             break;
 
             case 2:
             /* KDE (?) .folder.png */
             snprintf( psz_filename, MAX_PATH,
-                  "file://%s.folder.png", psz_dir );
+                  "file://%s.folder.png", psz_path );
             break;
         }
 
         if( utf8_stat( psz_filename+7, &a ) != -1 )
         {
-            vlc_meta_SetArtURL( p_item->p_meta, psz_filename );
+            input_item_SetArtURL( p_item, psz_filename );
             b_have_art = VLC_TRUE;
         }
     }