From: RĂ©mi Duraffort Date: Tue, 25 May 2010 16:24:06 +0000 (+0200) Subject: taglib: read the cover art from mp4. X-Git-Tag: 1.2.0-pre1~6516 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=17fa368e6984d7636286f787ebf0de6d9481a6a9;hp=0b01c67ef5204d352701f15617b69859f4dcfaa0;p=vlc taglib: read the cover art from mp4. --- diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp index 198d14476f..c94f52745e 100644 --- a/modules/meta_engine/taglib.cpp +++ b/modules/meta_engine/taglib.cpp @@ -63,6 +63,10 @@ # include #endif +#ifdef TAGLIB_WITH_MP4 +# include +#endif + #include #include #include @@ -317,7 +321,25 @@ static void ReadMetaFromXiph( Ogg::XiphComment* tag, demux_t* p_demux, demux_met vlc_meta_SetArtURL( p_meta, "attachment://cover" ); } - +#ifdef TAGLIB_WITH_MP4 +static void ReadMetaFromMP4( MP4::Tag* tag, demux_t *p_demux, demux_meta_t *p_demux_meta, vlc_meta_t* p_meta ) +{ + if( tag->itemListMap().contains("covr") ) + { + MP4::CoverArtList list = tag->itemListMap()["covr"].toCoverArtList(); + const char *psz_format = list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg"; + + TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); + input_attachment_t *p_attachment = + vlc_input_attachment_New( "cover", psz_format, "cover", + list[0].data().data(), list[0].data().size() ); + TAB_APPEND_CAST( (input_attachment_t**), + p_demux_meta->i_attachments, p_demux_meta->attachments, + p_attachment ); + vlc_meta_SetArtURL( p_meta, "attachment://cover" ); + } +} +#endif /** * Get the tags from the file using TagLib @@ -398,6 +420,13 @@ static int ReadMeta( vlc_object_t* p_this) else if( flac->xiphComment() ) ReadMetaFromXiph( flac->xiphComment(), p_demux, p_demux_meta, p_meta ); } +#ifdef TAGLIB_WITH_MP4 + else if( MP4::File *mp4 = dynamic_cast(f.file()) ) + { + if( mp4->tag() ) + ReadMetaFromMP4( mp4->tag(), p_demux, p_demux_meta, p_meta ); + } +#endif else if( MPC::File* mpc = dynamic_cast(f.file()) ) { if( mpc->APETag() )