]> git.sesse.net Git - vlc/commitdiff
taglib: read and write some APE tags.
authorRémi Duraffort <ivoire@videolan.org>
Thu, 1 Jan 2009 20:39:37 +0000 (21:39 +0100)
committerRémi Duraffort <ivoire@videolan.org>
Thu, 1 Jan 2009 20:39:37 +0000 (21:39 +0100)
modules/meta_engine/taglib.cpp

index c5f896366e229ea1998275e79681172575e79027..0ed3f225761c0fd087ed0007024c28e46ad49b28 100644 (file)
@@ -259,6 +259,16 @@ static void DetectImage( FileRef f, demux_t *p_demux )
  */
 static int ReadMetaFromAPE( APE::Tag* tag, vlc_meta_t* p_meta )
 {
+    APE::Item item;
+#define SET( keyName, metaName ) \
+    item = tag->itemListMap()[keyName]; \
+    vlc_meta_Set##metaName( p_meta, item.toString().toCString( true ) );\
+
+    SET( "COPYRIGHT", Copyright );
+    SET( "LANGUAGE", Language );
+    SET( "PUBLISHER", Publisher );
+
+#undef SET
     return VLC_SUCCESS;
 }
 
@@ -450,11 +460,28 @@ static int ReadMeta( vlc_object_t* p_this)
 /**
  * Write meta informations to APE tags
  * @param tag: the APE tag
- * @param p_input: the input item
+ * @param p_item: the input item
  * @return VLC_SUCCESS if everything goes ok
  */
-static int WriteMetaToAPE( APE::Tag* tag, input_item_t* p_input )
+static int WriteMetaToAPE( APE::Tag* tag, input_item_t* p_item )
 {
+    char* psz_meta;
+#define WRITE( metaName, keyName )                      \
+    psz_meta = input_item_Get##metaName( p_item );      \
+    if( psz_meta )                                      \
+    {                                                   \
+        String key( keyName, String::UTF8 );            \
+        String value( psz_meta, String::UTF8 );         \
+        tag->addValue( key, value, true );              \
+    }                                                   \
+    free( psz_meta );
+
+    WRITE( Copyright, "COPYRIGHT" );
+    WRITE( Language, "LANGUAGE" );
+    WRITE( Publisher, "PUBLISHER" );
+
+#undef WRITE
+
     return VLC_SUCCESS;
 }