vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Feb 19 11:30:09 2016 +0100| [7d0fec2c72d32f5e3566d8001c45a8e73ac7ce4a] | committer: Francois Cartegnie
taglib: template the extension fix, remove contribs patch > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7d0fec2c72d32f5e3566d8001c45a8e73ac7ce4a --- contrib/src/taglib/m4v.patch | 20 -------------------- contrib/src/taglib/rules.mak | 1 - modules/meta_engine/taglib.cpp | 37 +++++++++++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/contrib/src/taglib/m4v.patch b/contrib/src/taglib/m4v.patch deleted file mode 100644 index 827b929..0000000 --- a/contrib/src/taglib/m4v.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- taglib/taglib/fileref.cpp 2015-08-10 18:32:56.961588900 +0200 -+++ taglib/taglib/fileref.cpp.m4v 2015-08-12 11:00:44.933793600 +0200 -@@ -160,6 +160,7 @@ - l.append("m4p"); - l.append("3g2"); - l.append("mp4"); -+ l.append("m4v"); - l.append("wma"); - l.append("asf"); - l.append("aif"); -@@ -266,7 +267,7 @@ - return new Ogg::Opus::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "TTA") - return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle); -- if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2") -+ if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2" || ext == "M4V") - return new MP4::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") - return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); - diff --git a/contrib/src/taglib/rules.mak b/contrib/src/taglib/rules.mak index 02ea427..8c6afb4 100644 --- a/contrib/src/taglib/rules.mak +++ b/contrib/src/taglib/rules.mak @@ -15,7 +15,6 @@ $(TARBALLS)/taglib-$(TAGLIB_VERSION).tar.gz: taglib: taglib-$(TAGLIB_VERSION).tar.gz .sum-taglib $(UNPACK) - $(APPLY) $(SRC)/taglib/m4v.patch $(MOVE) .taglib: taglib toolchain.cmake diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp index 61cb967..b9d657c 100644 --- a/modules/meta_engine/taglib.cpp +++ b/modules/meta_engine/taglib.cpp @@ -100,28 +100,47 @@ using namespace TagLib; #define TAGLIB_SYNCDECODE_FIXED_VERSION VERSION_INT(1,11,0) -#if TAGLIB_VERSION >= TAGLIB_SYNCDECODE_FIXED_VERSION + +#include <algorithm> + namespace VLCTagLib { - class FileAAC : public FileRef::FileTypeResolver + template <class T> + class ExtResolver : public FileRef::FileTypeResolver { public: + ExtResolver(const std::string &); + ~ExtResolver() {} virtual File *createFile(FileName, bool, AudioProperties::ReadStyle) const; + + protected: + std::string ext; }; } -File *VLCTagLib::FileAAC::createFile(FileName fileName, bool, AudioProperties::ReadStyle) const +template <class T> +VLCTagLib::ExtResolver<T>::ExtResolver(const std::string & ext) : FileTypeResolver() +{ + this->ext = ext; + std::transform(this->ext.begin(), this->ext.end(), this->ext.begin(), ::toupper); +} + +template <class T> +File *VLCTagLib::ExtResolver<T>::createFile(FileName fileName, bool, AudioProperties::ReadStyle) const { std::string filename = std::string(fileName); std::size_t namesize = filename.size(); - /* Just pass AAC file as MPEG one. Only ID3 headers will be decoded */ - if (namesize > 4 && filename.substr(namesize - 4, 4) == ".aac") - return new MPEG::File(fileName, false, AudioProperties::ReadStyle::Fast); + if (namesize > ext.length()) + { + std::string fext = filename.substr(namesize - ext.length(), ext.length()); + std::transform(fext.begin(), fext.end(), fext.begin(), ::toupper); + if(fext == ext) + return new T(fileName, false, AudioProperties::ReadStyle::Fast); + } return 0; } -#endif // taglib is not thread safe static vlc_mutex_t taglib_lock = VLC_STATIC_MUTEX; @@ -719,9 +738,11 @@ static int ReadMeta( vlc_object_t* p_this) return VLC_EGENERIC; #if TAGLIB_VERSION >= TAGLIB_SYNCDECODE_FIXED_VERSION - FileRef::addFileTypeResolver( new VLCTagLib::FileAAC ); + FileRef::addFileTypeResolver( new VLCTagLib::ExtResolver<MPEG::File>(".aac") ); #endif + FileRef::addFileTypeResolver( new VLCTagLib::ExtResolver<MP4::File>(".m4v") ); + #if defined(_WIN32) wchar_t *wpath = ToWide( psz_path ); if( wpath == NULL ) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
