From: RĂ©mi Duraffort Date: Thu, 1 Jan 2009 20:39:37 +0000 (+0100) Subject: taglib: read and write some APE tags. X-Git-Tag: 1.0.0-pre1~1593 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8dca232ea871a54ee3089bddf6650a5a241532e9;p=vlc taglib: read and write some APE tags. --- diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp index c5f896366e..0ed3f22576 100644 --- a/modules/meta_engine/taglib.cpp +++ b/modules/meta_engine/taglib.cpp @@ -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; }