]> git.sesse.net Git - vlc/commitdiff
Fix m3u unhandled meta
authorClément Stenac <zorglub@videolan.org>
Thu, 25 May 2006 08:55:05 +0000 (08:55 +0000)
committerClément Stenac <zorglub@videolan.org>
Thu, 25 May 2006 08:55:05 +0000 (08:55 +0000)
modules/demux/util/id3tag.c

index dce546c4bab045f9c6b141a146f54b145398de81..99cf1286c989fb891264b7e8270fa2a1eb2dd874 100644 (file)
@@ -70,6 +70,9 @@ static void ParseID3Tag( demux_t *p_demux, uint8_t *p_data, int i_size )
 
     if( !p_demux->p_private ) p_demux->p_private = (void *)vlc_meta_New();
 
+#define ID_IS( a ) (!strcmp(  p_frame->id, a ))
+#define DESCR_IS( a) strstr( (char*)p_frame->description, a )
+
     while( ( p_frame = id3_tag_findframe( p_id3_tag , "T", i ) ) )
     {
         int i_strings = id3_field_getnstrings( &p_frame->fields[1] );
@@ -81,7 +84,7 @@ static void ParseID3Tag( demux_t *p_demux, uint8_t *p_data, int i_size )
             char *psz_temp = id3_ucs4_utf8duplicate(
                 id3_field_getstrings( &p_frame->fields[1], --i_strings ) );
 
-            if( !strcmp( p_frame->id, ID3_FRAME_GENRE ) )
+            if( ID_IS( ID3_FRAME_GENRE ) )
             {
                 char *psz_endptr;
                 int i_genre = strtol( psz_temp, &psz_endptr, 10 );
@@ -97,34 +100,39 @@ static void ParseID3Tag( demux_t *p_demux, uint8_t *p_data, int i_size )
                     vlc_meta_SetGenre( p_meta,psz_temp );
                 }
             }
-            else if( !strcmp(p_frame->id, ID3_FRAME_TITLE ) )
+            else if( ID_IS( ID3_FRAME_TITLE ) )
             {
                 vlc_meta_SetTitle( p_meta, psz_temp );
             }
-            else if( !strcmp(p_frame->id, ID3_FRAME_ARTIST ) )
+            else if( ID_IS( ID3_FRAME_ARTIST ) )
             {
                 vlc_meta_SetArtist( p_meta, psz_temp );
             }
-            else if( !strcmp(p_frame->id, ID3_FRAME_YEAR ) )
+            else if( ID_IS( ID3_FRAME_YEAR ) )
             {
                 vlc_meta_SetDate( p_meta, psz_temp );
             }
-            else if( !strcmp(p_frame->id, ID3_FRAME_COMMENT ) )
+            else if( ID_IS( ID3_FRAME_COMMENT ) )
             {
                 vlc_meta_SetDescription( p_meta, psz_temp );
             }
-            else if( strstr( (char*)p_frame->description, "Copyright" ) )
+            else if( DESCR_IS( "Copyright" ) )
             {
                 vlc_meta_SetCopyright( p_meta, psz_temp );
             }
-            else if( strstr( (char*)p_frame->description, "Publisher" ) )
+            else if( DESCR_IS( "Publisher" ) )
             {
                 vlc_meta_SetPublisher( p_meta, psz_temp );
             }
-            else
+            else if( DESCR_IS( "Track number/position in set" ) )
+            {
+                vlc_meta_SetTracknum( p_meta, psz_temp );
+            }
+            else if( DESCR_IS( "Album/movie/show title" ) )
             {
-                msg_Err(p_demux, "Fixme: unhandled meta, %s", p_frame->description );
+                vlc_meta_SetAlbum( p_meta, psz_temp );
             }
+            else { /* Unhandled meta*/ }
             free( psz_temp );
         }
         i++;