]> git.sesse.net Git - vlc/commitdiff
MP3: support TRCK total number
authorJean-Baptiste Kempf <jb@videolan.org>
Tue, 12 Jun 2012 23:48:57 +0000 (01:48 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Wed, 20 Jun 2012 15:12:32 +0000 (17:12 +0200)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/meta_engine/taglib.cpp

index e1f63ee6a27085ce7915aff839de2f51ebbd407a..aec694ade3c05e1f629716d9bf895f112deeea45 100644 (file)
@@ -108,6 +108,18 @@ vlc_module_end ()
 
 using namespace TagLib;
 
+static void ExtractTrackNumberValues( vlc_meta_t* p_meta, const char *psz_value )
+{
+    unsigned int i_trknum, i_trktot;
+    if( sscanf( psz_value, "%u/%u", &i_trknum, &i_trktot ) == 2 )
+    {
+        char psz_trck[11];
+        snprintf( psz_trck, sizeof( psz_trck ), "%u", i_trknum );
+        vlc_meta_SetTrackNum( p_meta, psz_trck );
+        snprintf( psz_trck, sizeof( psz_trck ), "%u", i_trktot );
+        vlc_meta_Set( p_meta, vlc_meta_TrackTotal, psz_trck );
+    }
+}
 
 /**
  * Read meta information from APE tags
@@ -244,6 +256,13 @@ static void ReadMetaFromId3v2( ID3v2::Tag* tag, demux_meta_t* p_demux_meta, vlc_
 
 #undef SET
 
+    /* */
+    list = tag->frameListMap()["TRCK"];
+    if( !list.isEmpty() )
+    {
+        ExtractTrackNumberValues( p_meta, (*list.begin())->toString().toCString( true ) );
+    }
+
     /* Preferred type of image
      * The 21 types are defined in id3v2 standard:
      * http://www.id3.org/id3v2.4.0-frames */