taglib: read and wirte APE tags for .ape files.
authorRémi Duraffort <ivoire@videolan.org>
Sat, 14 May 2011 16:36:37 +0000 (18:36 +0200)
committerRémi Duraffort <ivoire@videolan.org>
Sat, 14 May 2011 16:37:20 +0000 (18:37 +0200)
modules/meta_engine/taglib.cpp

index 13f23c7..f8978ad 100644 (file)
@@ -53,6 +53,7 @@
 #include <id3v2tag.h>
 #include <xiphcomment.h>
 
+#include <apefile.h>
 #include <flacfile.h>
 #include <mpcfile.h>
 #include <mpegfile.h>
@@ -435,7 +436,12 @@ static int ReadMeta( vlc_object_t* p_this)
 
 
     // Try now to read special tags
-    if( FLAC::File* flac = dynamic_cast<FLAC::File*>(f.file()) )
+    if( APE::File* ape = dynamic_cast<APE::File*>(f.file()) )
+    {
+        if( ape->APETag() )
+            ReadMetaFromAPE( ape->APETag(), p_demux_meta, p_meta );
+    }
+    else if( FLAC::File* flac = dynamic_cast<FLAC::File*>(f.file()) )
     {
         if( flac->ID3v2Tag() )
             ReadMetaFromId3v2( flac->ID3v2Tag(), p_demux_meta, p_meta );
@@ -653,7 +659,12 @@ static int WriteMeta( vlc_object_t *p_this )
 
 
     // Try now to write special tags
-    if( FLAC::File* flac = dynamic_cast<FLAC::File*>(f.file()) )
+    if( APE::File* ape = dynamic_cast<APE::File*>(f.file()) )
+    {
+        if( ape->APETag() )
+            WriteMetaToAPE( ape->APETag(), p_item );
+    }
+    else if( FLAC::File* flac = dynamic_cast<FLAC::File*>(f.file()) )
     {
         if( flac->ID3v2Tag() )
             WriteMetaToId3v2( flac->ID3v2Tag(), p_item );