From cd45941a93b6732f42fb43809641b7e14b19aba2 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Tue, 5 Jul 2022 00:55:21 -0700 Subject: [PATCH] Greatly improve tag reading performance Improve tag reading performance for Ogg, Opus, FLAC, TTA, and TAK, by eliminating TagLib from the equation in those cases and just using the respective file inputs to do the tag reading, which is apparently a lot faster anyway. Signed-off-by: Christopher Snowhill --- .../TagLib/TagLib.xcodeproj/project.pbxproj | 314 ++++-------------- .../TagLib/taglib/taglib/audioproperties.cpp | 51 +-- Frameworks/TagLib/taglib/taglib/fileref.cpp | 129 ++----- Frameworks/TagLib/taglib/taglib/tagunion.cpp | 13 +- .../TagLib/taglib/taglib/toolkit/tfile.cpp | 157 +++------ Plugins/TagLib/TagLibMetadataReader.m | 39 +-- 6 files changed, 164 insertions(+), 539 deletions(-) diff --git a/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj b/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj index 7d595bfce..2e8396914 100644 --- a/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj +++ b/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj @@ -8,16 +8,6 @@ /* Begin PBXBuildFile section */ 32AE5A5A14E70ED600420CA0 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59A014E70ED600420CA0 /* config.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A5C14E70ED600420CA0 /* apefile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59A414E70ED600420CA0 /* apefile.cpp */; }; - 32AE5A5D14E70ED600420CA0 /* apefile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59A514E70ED600420CA0 /* apefile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A5E14E70ED600420CA0 /* apefooter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59A614E70ED600420CA0 /* apefooter.cpp */; }; - 32AE5A5F14E70ED600420CA0 /* apefooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59A714E70ED600420CA0 /* apefooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6014E70ED600420CA0 /* apeitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59A814E70ED600420CA0 /* apeitem.cpp */; }; - 32AE5A6114E70ED600420CA0 /* apeitem.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59A914E70ED600420CA0 /* apeitem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6214E70ED600420CA0 /* apeproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59AA14E70ED600420CA0 /* apeproperties.cpp */; }; - 32AE5A6314E70ED600420CA0 /* apeproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59AB14E70ED600420CA0 /* apeproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6414E70ED600420CA0 /* apetag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59AC14E70ED600420CA0 /* apetag.cpp */; }; - 32AE5A6514E70ED600420CA0 /* apetag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59AD14E70ED600420CA0 /* apetag.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5A6614E70ED600420CA0 /* asfattribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59AF14E70ED600420CA0 /* asfattribute.cpp */; }; 32AE5A6714E70ED600420CA0 /* asfattribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B014E70ED600420CA0 /* asfattribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5A6814E70ED600420CA0 /* asffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B114E70ED600420CA0 /* asffile.cpp */; }; @@ -32,15 +22,6 @@ 32AE5A7114E70ED600420CA0 /* audioproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59BA14E70ED600420CA0 /* audioproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5A7214E70ED600420CA0 /* fileref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59BB14E70ED600420CA0 /* fileref.cpp */; }; 32AE5A7314E70ED600420CA0 /* fileref.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59BC14E70ED600420CA0 /* fileref.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7414E70ED600420CA0 /* flacfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59BE14E70ED600420CA0 /* flacfile.cpp */; }; - 32AE5A7614E70ED600420CA0 /* flacmetadatablock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C014E70ED600420CA0 /* flacmetadatablock.cpp */; }; - 32AE5A7714E70ED600420CA0 /* flacmetadatablock.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C114E70ED600420CA0 /* flacmetadatablock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7814E70ED600420CA0 /* flacpicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C214E70ED600420CA0 /* flacpicture.cpp */; }; - 32AE5A7914E70ED600420CA0 /* flacpicture.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C314E70ED600420CA0 /* flacpicture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7A14E70ED600420CA0 /* flacproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C414E70ED600420CA0 /* flacproperties.cpp */; }; - 32AE5A7B14E70ED600420CA0 /* flacproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C514E70ED600420CA0 /* flacproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7C14E70ED600420CA0 /* flacunknownmetadatablock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59C614E70ED600420CA0 /* flacunknownmetadatablock.cpp */; }; - 32AE5A7D14E70ED600420CA0 /* flacunknownmetadatablock.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59C714E70ED600420CA0 /* flacunknownmetadatablock.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D614E70ED600420CA0 /* mpcfile.cpp */; }; 32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D714E70ED600420CA0 /* mpcfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */; }; @@ -81,24 +62,6 @@ 32AE5ABF14E70ED600420CA0 /* mpegproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0F14E70ED600420CA0 /* mpegproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AC014E70ED600420CA0 /* xingheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1014E70ED600420CA0 /* xingheader.cpp */; }; 32AE5AC114E70ED600420CA0 /* xingheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1114E70ED600420CA0 /* xingheader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AC214E70ED600420CA0 /* oggflacfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1414E70ED600420CA0 /* oggflacfile.cpp */; }; - 32AE5AC314E70ED600420CA0 /* oggflacfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1514E70ED600420CA0 /* oggflacfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AC414E70ED600420CA0 /* oggfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1614E70ED600420CA0 /* oggfile.cpp */; }; - 32AE5AC514E70ED600420CA0 /* oggfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1714E70ED600420CA0 /* oggfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AC614E70ED600420CA0 /* oggpage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1814E70ED600420CA0 /* oggpage.cpp */; }; - 32AE5AC714E70ED600420CA0 /* oggpage.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1914E70ED600420CA0 /* oggpage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AC814E70ED600420CA0 /* oggpageheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1A14E70ED600420CA0 /* oggpageheader.cpp */; }; - 32AE5AC914E70ED600420CA0 /* oggpageheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1B14E70ED600420CA0 /* oggpageheader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ACA14E70ED600420CA0 /* speexfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1D14E70ED600420CA0 /* speexfile.cpp */; }; - 32AE5ACB14E70ED600420CA0 /* speexfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1E14E70ED600420CA0 /* speexfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ACC14E70ED600420CA0 /* speexproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1F14E70ED600420CA0 /* speexproperties.cpp */; }; - 32AE5ACD14E70ED600420CA0 /* speexproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2014E70ED600420CA0 /* speexproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ACE14E70ED600420CA0 /* vorbisfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2214E70ED600420CA0 /* vorbisfile.cpp */; }; - 32AE5ACF14E70ED600420CA0 /* vorbisfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2314E70ED600420CA0 /* vorbisfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AD014E70ED600420CA0 /* vorbisproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2414E70ED600420CA0 /* vorbisproperties.cpp */; }; - 32AE5AD114E70ED600420CA0 /* vorbisproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2514E70ED600420CA0 /* vorbisproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AD214E70ED600420CA0 /* xiphcomment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2614E70ED600420CA0 /* xiphcomment.cpp */; }; - 32AE5AD314E70ED600420CA0 /* xiphcomment.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2714E70ED600420CA0 /* xiphcomment.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AD414E70ED600420CA0 /* aifffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2A14E70ED600420CA0 /* aifffile.cpp */; }; 32AE5AD514E70ED600420CA0 /* aifffile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2B14E70ED600420CA0 /* aifffile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AD614E70ED600420CA0 /* aiffproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2C14E70ED600420CA0 /* aiffproperties.cpp */; }; @@ -125,10 +88,6 @@ 32AE5AF214E70ED600420CA0 /* tstring.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4A14E70ED600420CA0 /* tstring.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AF314E70ED600420CA0 /* tstringlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A4B14E70ED600420CA0 /* tstringlist.cpp */; }; 32AE5AF414E70ED600420CA0 /* tstringlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4C14E70ED600420CA0 /* tstringlist.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AF714E70ED700420CA0 /* trueaudiofile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5014E70ED600420CA0 /* trueaudiofile.cpp */; }; - 32AE5AF814E70ED700420CA0 /* trueaudiofile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5114E70ED600420CA0 /* trueaudiofile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AF914E70ED700420CA0 /* trueaudioproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5214E70ED600420CA0 /* trueaudioproperties.cpp */; }; - 32AE5AFA14E70ED700420CA0 /* trueaudioproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5314E70ED600420CA0 /* trueaudioproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AFB14E70ED700420CA0 /* wavpackfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5514E70ED600420CA0 /* wavpackfile.cpp */; }; 32AE5AFC14E70ED700420CA0 /* wavpackfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5614E70ED600420CA0 /* wavpackfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5AFD14E70ED700420CA0 /* wavpackproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5714E70ED600420CA0 /* wavpackproperties.cpp */; }; @@ -136,11 +95,19 @@ 32AE5AFF14E70ED700420CA0 /* taglib_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5914E70ED600420CA0 /* taglib_config.h */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5B0014E70F4700420CA0 /* tlist.tcc in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4614E70ED600420CA0 /* tlist.tcc */; settings = {ATTRIBUTES = (Public, ); }; }; 32AE5B0114E70F4A00420CA0 /* tmap.tcc in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4814E70ED600420CA0 /* tmap.tcc */; settings = {ATTRIBUTES = (Public, ); }; }; - 83790D241809E8CA0073CF51 /* opusfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83790D201809E8CA0073CF51 /* opusfile.cpp */; }; - 83790D261809E8CA0073CF51 /* opusproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83790D221809E8CA0073CF51 /* opusproperties.cpp */; }; - 83942C67269116530058BD3B /* flacfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59BF14E70ED600420CA0 /* flacfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83AF2CBE2622643300538240 /* apegenfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83AF2CBC2622643300538240 /* apegenfile.cpp */; }; - 83AF2CBF2622643300538240 /* apegenfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 83AF2CBD2622643300538240 /* apegenfile.h */; }; + 8315534428741C7A00D4D746 /* apeproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533728741C7A00D4D746 /* apeproperties.cpp */; }; + 8315534528741C7A00D4D746 /* apefile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533828741C7A00D4D746 /* apefile.h */; }; + 8315534628741C7A00D4D746 /* apeproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533928741C7A00D4D746 /* apeproperties.h */; }; + 8315534728741C7A00D4D746 /* apeitem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533A28741C7A00D4D746 /* apeitem.h */; }; + 8315534828741C7A00D4D746 /* apefile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533B28741C7A00D4D746 /* apefile.cpp */; }; + 8315534928741C7A00D4D746 /* ape-tag-format.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8315533C28741C7A00D4D746 /* ape-tag-format.txt */; }; + 8315534A28741C7A00D4D746 /* apefooter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533D28741C7A00D4D746 /* apefooter.cpp */; }; + 8315534B28741C7A00D4D746 /* apetag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533E28741C7A00D4D746 /* apetag.cpp */; }; + 8315534C28741C7A00D4D746 /* apefooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533F28741C7A00D4D746 /* apefooter.h */; }; + 8315534D28741C7A00D4D746 /* apeitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315534028741C7A00D4D746 /* apeitem.cpp */; }; + 8315534E28741C7A00D4D746 /* apegenfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315534128741C7A00D4D746 /* apegenfile.h */; }; + 8315534F28741C7A00D4D746 /* apetag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315534228741C7A00D4D746 /* apetag.h */; }; + 8315535028741C7A00D4D746 /* apegenfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315534328741C7A00D4D746 /* apegenfile.cpp */; }; 83B46FCA2707EED200847FC9 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B46FC92707EED200847FC9 /* libiconv.tbd */; }; 83B46FCC2707EEDB00847FC9 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B46FCB2707EEDB00847FC9 /* libz.tbd */; }; 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; @@ -188,17 +155,6 @@ /* Begin PBXFileReference section */ 174C7A360F4FD43100E18B0F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; 32AE59A014E70ED600420CA0 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = taglib/config.h; sourceTree = ""; }; - 32AE59A314E70ED600420CA0 /* ape-tag-format.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "ape-tag-format.txt"; sourceTree = ""; }; - 32AE59A414E70ED600420CA0 /* apefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefile.cpp; sourceTree = ""; }; - 32AE59A514E70ED600420CA0 /* apefile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefile.h; sourceTree = ""; }; - 32AE59A614E70ED600420CA0 /* apefooter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefooter.cpp; sourceTree = ""; }; - 32AE59A714E70ED600420CA0 /* apefooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefooter.h; sourceTree = ""; }; - 32AE59A814E70ED600420CA0 /* apeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeitem.cpp; sourceTree = ""; }; - 32AE59A914E70ED600420CA0 /* apeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeitem.h; sourceTree = ""; }; - 32AE59AA14E70ED600420CA0 /* apeproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeproperties.cpp; sourceTree = ""; }; - 32AE59AB14E70ED600420CA0 /* apeproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeproperties.h; sourceTree = ""; }; - 32AE59AC14E70ED600420CA0 /* apetag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apetag.cpp; sourceTree = ""; }; - 32AE59AD14E70ED600420CA0 /* apetag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apetag.h; sourceTree = ""; }; 32AE59AF14E70ED600420CA0 /* asfattribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asfattribute.cpp; sourceTree = ""; }; 32AE59B014E70ED600420CA0 /* asfattribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asfattribute.h; sourceTree = ""; }; 32AE59B114E70ED600420CA0 /* asffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asffile.cpp; sourceTree = ""; }; @@ -213,16 +169,6 @@ 32AE59BA14E70ED600420CA0 /* audioproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioproperties.h; sourceTree = ""; }; 32AE59BB14E70ED600420CA0 /* fileref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileref.cpp; sourceTree = ""; }; 32AE59BC14E70ED600420CA0 /* fileref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileref.h; sourceTree = ""; }; - 32AE59BE14E70ED600420CA0 /* flacfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacfile.cpp; sourceTree = ""; }; - 32AE59BF14E70ED600420CA0 /* flacfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacfile.h; sourceTree = ""; }; - 32AE59C014E70ED600420CA0 /* flacmetadatablock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacmetadatablock.cpp; sourceTree = ""; }; - 32AE59C114E70ED600420CA0 /* flacmetadatablock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacmetadatablock.h; sourceTree = ""; }; - 32AE59C214E70ED600420CA0 /* flacpicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacpicture.cpp; sourceTree = ""; }; - 32AE59C314E70ED600420CA0 /* flacpicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacpicture.h; sourceTree = ""; }; - 32AE59C414E70ED600420CA0 /* flacproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacproperties.cpp; sourceTree = ""; }; - 32AE59C514E70ED600420CA0 /* flacproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacproperties.h; sourceTree = ""; }; - 32AE59C614E70ED600420CA0 /* flacunknownmetadatablock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flacunknownmetadatablock.cpp; sourceTree = ""; }; - 32AE59C714E70ED600420CA0 /* flacunknownmetadatablock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flacunknownmetadatablock.h; sourceTree = ""; }; 32AE59D614E70ED600420CA0 /* mpcfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcfile.cpp; sourceTree = ""; }; 32AE59D714E70ED600420CA0 /* mpcfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpcfile.h; sourceTree = ""; }; 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcproperties.cpp; sourceTree = ""; }; @@ -279,24 +225,6 @@ 32AE5A0F14E70ED600420CA0 /* mpegproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegproperties.h; sourceTree = ""; }; 32AE5A1014E70ED600420CA0 /* xingheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xingheader.cpp; sourceTree = ""; }; 32AE5A1114E70ED600420CA0 /* xingheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xingheader.h; sourceTree = ""; }; - 32AE5A1414E70ED600420CA0 /* oggflacfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = oggflacfile.cpp; sourceTree = ""; }; - 32AE5A1514E70ED600420CA0 /* oggflacfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oggflacfile.h; sourceTree = ""; }; - 32AE5A1614E70ED600420CA0 /* oggfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = oggfile.cpp; sourceTree = ""; }; - 32AE5A1714E70ED600420CA0 /* oggfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oggfile.h; sourceTree = ""; }; - 32AE5A1814E70ED600420CA0 /* oggpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = oggpage.cpp; sourceTree = ""; }; - 32AE5A1914E70ED600420CA0 /* oggpage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oggpage.h; sourceTree = ""; }; - 32AE5A1A14E70ED600420CA0 /* oggpageheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = oggpageheader.cpp; sourceTree = ""; }; - 32AE5A1B14E70ED600420CA0 /* oggpageheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = oggpageheader.h; sourceTree = ""; }; - 32AE5A1D14E70ED600420CA0 /* speexfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = speexfile.cpp; sourceTree = ""; }; - 32AE5A1E14E70ED600420CA0 /* speexfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speexfile.h; sourceTree = ""; }; - 32AE5A1F14E70ED600420CA0 /* speexproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = speexproperties.cpp; sourceTree = ""; }; - 32AE5A2014E70ED600420CA0 /* speexproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speexproperties.h; sourceTree = ""; }; - 32AE5A2214E70ED600420CA0 /* vorbisfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vorbisfile.cpp; sourceTree = ""; }; - 32AE5A2314E70ED600420CA0 /* vorbisfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbisfile.h; sourceTree = ""; }; - 32AE5A2414E70ED600420CA0 /* vorbisproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vorbisproperties.cpp; sourceTree = ""; }; - 32AE5A2514E70ED600420CA0 /* vorbisproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbisproperties.h; sourceTree = ""; }; - 32AE5A2614E70ED600420CA0 /* xiphcomment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xiphcomment.cpp; sourceTree = ""; }; - 32AE5A2714E70ED600420CA0 /* xiphcomment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xiphcomment.h; sourceTree = ""; }; 32AE5A2A14E70ED600420CA0 /* aifffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aifffile.cpp; sourceTree = ""; }; 32AE5A2B14E70ED600420CA0 /* aifffile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aifffile.h; sourceTree = ""; }; 32AE5A2C14E70ED600420CA0 /* aiffproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aiffproperties.cpp; sourceTree = ""; }; @@ -325,24 +253,27 @@ 32AE5A4A14E70ED600420CA0 /* tstring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tstring.h; sourceTree = ""; }; 32AE5A4B14E70ED600420CA0 /* tstringlist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tstringlist.cpp; sourceTree = ""; }; 32AE5A4C14E70ED600420CA0 /* tstringlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tstringlist.h; sourceTree = ""; }; - 32AE5A5014E70ED600420CA0 /* trueaudiofile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trueaudiofile.cpp; sourceTree = ""; }; - 32AE5A5114E70ED600420CA0 /* trueaudiofile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trueaudiofile.h; sourceTree = ""; }; - 32AE5A5214E70ED600420CA0 /* trueaudioproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trueaudioproperties.cpp; sourceTree = ""; }; - 32AE5A5314E70ED600420CA0 /* trueaudioproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trueaudioproperties.h; sourceTree = ""; }; 32AE5A5514E70ED600420CA0 /* wavpackfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavpackfile.cpp; sourceTree = ""; }; 32AE5A5614E70ED600420CA0 /* wavpackfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavpackfile.h; sourceTree = ""; }; 32AE5A5714E70ED600420CA0 /* wavpackproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavpackproperties.cpp; sourceTree = ""; }; 32AE5A5814E70ED600420CA0 /* wavpackproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavpackproperties.h; sourceTree = ""; }; 32AE5A5914E70ED600420CA0 /* taglib_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = taglib_config.h; path = taglib/taglib_config.h; sourceTree = ""; }; + 8315533728741C7A00D4D746 /* apeproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeproperties.cpp; sourceTree = ""; }; + 8315533828741C7A00D4D746 /* apefile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefile.h; sourceTree = ""; }; + 8315533928741C7A00D4D746 /* apeproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeproperties.h; sourceTree = ""; }; + 8315533A28741C7A00D4D746 /* apeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeitem.h; sourceTree = ""; }; + 8315533B28741C7A00D4D746 /* apefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefile.cpp; sourceTree = ""; }; + 8315533C28741C7A00D4D746 /* ape-tag-format.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "ape-tag-format.txt"; sourceTree = ""; }; + 8315533D28741C7A00D4D746 /* apefooter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefooter.cpp; sourceTree = ""; }; + 8315533E28741C7A00D4D746 /* apetag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apetag.cpp; sourceTree = ""; }; + 8315533F28741C7A00D4D746 /* apefooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefooter.h; sourceTree = ""; }; + 8315534028741C7A00D4D746 /* apeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeitem.cpp; sourceTree = ""; }; + 8315534128741C7A00D4D746 /* apegenfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apegenfile.h; sourceTree = ""; }; + 8315534228741C7A00D4D746 /* apetag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apetag.h; sourceTree = ""; }; + 8315534328741C7A00D4D746 /* apegenfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apegenfile.cpp; sourceTree = ""; }; 833F683D1CDBCAB300AFB9F0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; 835C889822CC1889001B4B3F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 83747BD22862D5B00021245F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; - 83790D201809E8CA0073CF51 /* opusfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opusfile.cpp; sourceTree = ""; }; - 83790D211809E8CA0073CF51 /* opusfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opusfile.h; sourceTree = ""; }; - 83790D221809E8CA0073CF51 /* opusproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opusproperties.cpp; sourceTree = ""; }; - 83790D231809E8CA0073CF51 /* opusproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opusproperties.h; sourceTree = ""; }; - 83AF2CBC2622643300538240 /* apegenfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apegenfile.cpp; sourceTree = ""; }; - 83AF2CBD2622643300538240 /* apegenfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apegenfile.h; sourceTree = ""; }; 83B46FC92707EED200847FC9 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; }; 83B46FCB2707EEDB00847FC9 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; @@ -537,16 +468,14 @@ EDE8632425CF6CDF0086EFD3 /* s3m */, EDE8631125CF6CC60086EFD3 /* mod */, EDE8630825CF6CAE0086EFD3 /* xm */, - 32AE59A214E70ED600420CA0 /* ape */, + 8315533628741C7A00D4D746 /* ape */, 32AE59AE14E70ED600420CA0 /* asf */, 32AE59B914E70ED600420CA0 /* audioproperties.cpp */, 32AE59BA14E70ED600420CA0 /* audioproperties.h */, 32AE59BB14E70ED600420CA0 /* fileref.cpp */, 32AE59BC14E70ED600420CA0 /* fileref.h */, - 32AE59BD14E70ED600420CA0 /* flac */, 32AE59D514E70ED600420CA0 /* mpc */, 32AE59DA14E70ED600420CA0 /* mpeg */, - 32AE5A1214E70ED600420CA0 /* ogg */, 32AE5A2814E70ED600420CA0 /* riff */, 32AE5A3514E70ED600420CA0 /* tag.cpp */, 32AE5A3614E70ED600420CA0 /* tag.h */, @@ -554,33 +483,12 @@ 32AE5A3914E70ED600420CA0 /* tagunion.cpp */, 32AE5A3A14E70ED600420CA0 /* tagunion.h */, 32AE5A3B14E70ED600420CA0 /* toolkit */, - 32AE5A4F14E70ED600420CA0 /* trueaudio */, 32AE5A5414E70ED600420CA0 /* wavpack */, ); name = taglib; path = taglib/taglib; sourceTree = ""; }; - 32AE59A214E70ED600420CA0 /* ape */ = { - isa = PBXGroup; - children = ( - 32AE59A314E70ED600420CA0 /* ape-tag-format.txt */, - 32AE59A414E70ED600420CA0 /* apefile.cpp */, - 32AE59A514E70ED600420CA0 /* apefile.h */, - 32AE59A614E70ED600420CA0 /* apefooter.cpp */, - 32AE59A714E70ED600420CA0 /* apefooter.h */, - 83AF2CBC2622643300538240 /* apegenfile.cpp */, - 83AF2CBD2622643300538240 /* apegenfile.h */, - 32AE59A814E70ED600420CA0 /* apeitem.cpp */, - 32AE59A914E70ED600420CA0 /* apeitem.h */, - 32AE59AA14E70ED600420CA0 /* apeproperties.cpp */, - 32AE59AB14E70ED600420CA0 /* apeproperties.h */, - 32AE59AC14E70ED600420CA0 /* apetag.cpp */, - 32AE59AD14E70ED600420CA0 /* apetag.h */, - ); - path = ape; - sourceTree = ""; - }; 32AE59AE14E70ED600420CA0 /* asf */ = { isa = PBXGroup; children = ( @@ -598,23 +506,6 @@ path = asf; sourceTree = ""; }; - 32AE59BD14E70ED600420CA0 /* flac */ = { - isa = PBXGroup; - children = ( - 32AE59BE14E70ED600420CA0 /* flacfile.cpp */, - 32AE59BF14E70ED600420CA0 /* flacfile.h */, - 32AE59C014E70ED600420CA0 /* flacmetadatablock.cpp */, - 32AE59C114E70ED600420CA0 /* flacmetadatablock.h */, - 32AE59C214E70ED600420CA0 /* flacpicture.cpp */, - 32AE59C314E70ED600420CA0 /* flacpicture.h */, - 32AE59C414E70ED600420CA0 /* flacproperties.cpp */, - 32AE59C514E70ED600420CA0 /* flacproperties.h */, - 32AE59C614E70ED600420CA0 /* flacunknownmetadatablock.cpp */, - 32AE59C714E70ED600420CA0 /* flacunknownmetadatablock.h */, - ); - path = flac; - sourceTree = ""; - }; 32AE59D514E70ED600420CA0 /* mpc */ = { isa = PBXGroup; children = ( @@ -709,56 +600,6 @@ path = frames; sourceTree = ""; }; - 32AE5A1214E70ED600420CA0 /* ogg */ = { - isa = PBXGroup; - children = ( - 83790D1F1809E8CA0073CF51 /* opus */, - 32AE5A1314E70ED600420CA0 /* flac */, - 32AE5A1614E70ED600420CA0 /* oggfile.cpp */, - 32AE5A1714E70ED600420CA0 /* oggfile.h */, - 32AE5A1814E70ED600420CA0 /* oggpage.cpp */, - 32AE5A1914E70ED600420CA0 /* oggpage.h */, - 32AE5A1A14E70ED600420CA0 /* oggpageheader.cpp */, - 32AE5A1B14E70ED600420CA0 /* oggpageheader.h */, - 32AE5A1C14E70ED600420CA0 /* speex */, - 32AE5A2114E70ED600420CA0 /* vorbis */, - 32AE5A2614E70ED600420CA0 /* xiphcomment.cpp */, - 32AE5A2714E70ED600420CA0 /* xiphcomment.h */, - ); - path = ogg; - sourceTree = ""; - }; - 32AE5A1314E70ED600420CA0 /* flac */ = { - isa = PBXGroup; - children = ( - 32AE5A1414E70ED600420CA0 /* oggflacfile.cpp */, - 32AE5A1514E70ED600420CA0 /* oggflacfile.h */, - ); - path = flac; - sourceTree = ""; - }; - 32AE5A1C14E70ED600420CA0 /* speex */ = { - isa = PBXGroup; - children = ( - 32AE5A1D14E70ED600420CA0 /* speexfile.cpp */, - 32AE5A1E14E70ED600420CA0 /* speexfile.h */, - 32AE5A1F14E70ED600420CA0 /* speexproperties.cpp */, - 32AE5A2014E70ED600420CA0 /* speexproperties.h */, - ); - path = speex; - sourceTree = ""; - }; - 32AE5A2114E70ED600420CA0 /* vorbis */ = { - isa = PBXGroup; - children = ( - 32AE5A2214E70ED600420CA0 /* vorbisfile.cpp */, - 32AE5A2314E70ED600420CA0 /* vorbisfile.h */, - 32AE5A2414E70ED600420CA0 /* vorbisproperties.cpp */, - 32AE5A2514E70ED600420CA0 /* vorbisproperties.h */, - ); - path = vorbis; - sourceTree = ""; - }; 32AE5A2814E70ED600420CA0 /* riff */ = { isa = PBXGroup; children = ( @@ -823,17 +664,6 @@ path = toolkit; sourceTree = ""; }; - 32AE5A4F14E70ED600420CA0 /* trueaudio */ = { - isa = PBXGroup; - children = ( - 32AE5A5014E70ED600420CA0 /* trueaudiofile.cpp */, - 32AE5A5114E70ED600420CA0 /* trueaudiofile.h */, - 32AE5A5214E70ED600420CA0 /* trueaudioproperties.cpp */, - 32AE5A5314E70ED600420CA0 /* trueaudioproperties.h */, - ); - path = trueaudio; - sourceTree = ""; - }; 32AE5A5414E70ED600420CA0 /* wavpack */ = { isa = PBXGroup; children = ( @@ -845,6 +675,26 @@ path = wavpack; sourceTree = ""; }; + 8315533628741C7A00D4D746 /* ape */ = { + isa = PBXGroup; + children = ( + 8315533728741C7A00D4D746 /* apeproperties.cpp */, + 8315533828741C7A00D4D746 /* apefile.h */, + 8315533928741C7A00D4D746 /* apeproperties.h */, + 8315533A28741C7A00D4D746 /* apeitem.h */, + 8315533B28741C7A00D4D746 /* apefile.cpp */, + 8315533C28741C7A00D4D746 /* ape-tag-format.txt */, + 8315533D28741C7A00D4D746 /* apefooter.cpp */, + 8315533E28741C7A00D4D746 /* apetag.cpp */, + 8315533F28741C7A00D4D746 /* apefooter.h */, + 8315534028741C7A00D4D746 /* apeitem.cpp */, + 8315534128741C7A00D4D746 /* apegenfile.h */, + 8315534228741C7A00D4D746 /* apetag.h */, + 8315534328741C7A00D4D746 /* apegenfile.cpp */, + ); + path = ape; + sourceTree = ""; + }; 83747BD12862D5B00021245F /* Xcode-config */ = { isa = PBXGroup; children = ( @@ -854,17 +704,6 @@ path = "../../Xcode-config"; sourceTree = ""; }; - 83790D1F1809E8CA0073CF51 /* opus */ = { - isa = PBXGroup; - children = ( - 83790D201809E8CA0073CF51 /* opusfile.cpp */, - 83790D211809E8CA0073CF51 /* opusfile.h */, - 83790D221809E8CA0073CF51 /* opusproperties.cpp */, - 83790D231809E8CA0073CF51 /* opusproperties.h */, - ); - path = opus; - sourceTree = ""; - }; 83B46FC82707EED200847FC9 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1051,23 +890,14 @@ buildActionMask = 2147483647; files = ( 32AE5A5A14E70ED600420CA0 /* config.h in Headers */, - 32AE5A5D14E70ED600420CA0 /* apefile.h in Headers */, - 32AE5A5F14E70ED600420CA0 /* apefooter.h in Headers */, - 32AE5A6114E70ED600420CA0 /* apeitem.h in Headers */, - 32AE5A6314E70ED600420CA0 /* apeproperties.h in Headers */, - 32AE5A6514E70ED600420CA0 /* apetag.h in Headers */, 32AE5A6714E70ED600420CA0 /* asfattribute.h in Headers */, 32AE5A6914E70ED600420CA0 /* asffile.h in Headers */, 32AE5A6B14E70ED600420CA0 /* asfpicture.h in Headers */, 32AE5A6D14E70ED600420CA0 /* asfproperties.h in Headers */, 32AE5A6F14E70ED600420CA0 /* asftag.h in Headers */, 32AE5A7114E70ED600420CA0 /* audioproperties.h in Headers */, - 83942C67269116530058BD3B /* flacfile.h in Headers */, 32AE5A7314E70ED600420CA0 /* fileref.h in Headers */, - 32AE5A7714E70ED600420CA0 /* flacmetadatablock.h in Headers */, - 32AE5A7914E70ED600420CA0 /* flacpicture.h in Headers */, - 32AE5A7B14E70ED600420CA0 /* flacproperties.h in Headers */, - 32AE5A7D14E70ED600420CA0 /* flacunknownmetadatablock.h in Headers */, + 8315534728741C7A00D4D746 /* apeitem.h in Headers */, 32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */, 32AE5A8D14E70ED600420CA0 /* mpcproperties.h in Headers */, 32AE5A8F14E70ED600420CA0 /* id3v1genres.h in Headers */, @@ -1087,7 +917,6 @@ 32AE5AAF14E70ED600420CA0 /* id3v2footer.h in Headers */, 32AE5AB114E70ED600420CA0 /* id3v2frame.h in Headers */, 32AE5AB314E70ED600420CA0 /* id3v2framefactory.h in Headers */, - 83AF2CBF2622643300538240 /* apegenfile.h in Headers */, 32AE5AB514E70ED600420CA0 /* id3v2header.h in Headers */, 32AE5AB714E70ED600420CA0 /* id3v2synchdata.h in Headers */, 32AE5AB914E70ED600420CA0 /* id3v2tag.h in Headers */, @@ -1095,20 +924,16 @@ 32AE5ABD14E70ED600420CA0 /* mpegheader.h in Headers */, 32AE5ABF14E70ED600420CA0 /* mpegproperties.h in Headers */, 32AE5AC114E70ED600420CA0 /* xingheader.h in Headers */, - 32AE5AC314E70ED600420CA0 /* oggflacfile.h in Headers */, - 32AE5AC514E70ED600420CA0 /* oggfile.h in Headers */, - 32AE5AC714E70ED600420CA0 /* oggpage.h in Headers */, - 32AE5AC914E70ED600420CA0 /* oggpageheader.h in Headers */, - 32AE5ACB14E70ED600420CA0 /* speexfile.h in Headers */, - 32AE5ACD14E70ED600420CA0 /* speexproperties.h in Headers */, - 32AE5ACF14E70ED600420CA0 /* vorbisfile.h in Headers */, - 32AE5AD114E70ED600420CA0 /* vorbisproperties.h in Headers */, - 32AE5AD314E70ED600420CA0 /* xiphcomment.h in Headers */, + 8315534528741C7A00D4D746 /* apefile.h in Headers */, + 8315534C28741C7A00D4D746 /* apefooter.h in Headers */, + 8315534628741C7A00D4D746 /* apeproperties.h in Headers */, + 8315534F28741C7A00D4D746 /* apetag.h in Headers */, 32AE5AD514E70ED600420CA0 /* aifffile.h in Headers */, 32AE5AD714E70ED600420CA0 /* aiffproperties.h in Headers */, 32AE5AD914E70ED600420CA0 /* rifffile.h in Headers */, 32AE5B0014E70F4700420CA0 /* tlist.tcc in Headers */, 32AE5B0114E70F4A00420CA0 /* tmap.tcc in Headers */, + 8315534E28741C7A00D4D746 /* apegenfile.h in Headers */, 32AE5ADF14E70ED600420CA0 /* tag.h in Headers */, 32AE5AE114E70ED600420CA0 /* taglib_export.h in Headers */, 32AE5AE314E70ED600420CA0 /* tagunion.h in Headers */, @@ -1121,8 +946,6 @@ 32AE5AEF14E70ED600420CA0 /* tmap.h in Headers */, 32AE5AF214E70ED600420CA0 /* tstring.h in Headers */, 32AE5AF414E70ED600420CA0 /* tstringlist.h in Headers */, - 32AE5AF814E70ED700420CA0 /* trueaudiofile.h in Headers */, - 32AE5AFA14E70ED700420CA0 /* trueaudioproperties.h in Headers */, 32AE5AFC14E70ED700420CA0 /* wavpackfile.h in Headers */, 32AE5AFE14E70ED700420CA0 /* wavpackproperties.h in Headers */, 32AE5AFF14E70ED700420CA0 /* taglib_config.h in Headers */, @@ -1190,6 +1013,7 @@ buildActionMask = 2147483647; files = ( 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, + 8315534928741C7A00D4D746 /* ape-tag-format.txt in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1200,14 +1024,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 32AE5A5C14E70ED600420CA0 /* apefile.cpp in Sources */, EDE8630325CF6C260086EFD3 /* trefcounter.cpp in Sources */, - 32AE5A5E14E70ED600420CA0 /* apefooter.cpp in Sources */, - 32AE5A6014E70ED600420CA0 /* apeitem.cpp in Sources */, EDE8631F25CF6CC60086EFD3 /* modfile.cpp in Sources */, - 32AE5A6214E70ED600420CA0 /* apeproperties.cpp in Sources */, EDE8631025CF6CAE0086EFD3 /* xmproperties.cpp in Sources */, - 32AE5A6414E70ED600420CA0 /* apetag.cpp in Sources */, 32AE5A6614E70ED600420CA0 /* asfattribute.cpp in Sources */, 32AE5A6814E70ED600420CA0 /* asffile.cpp in Sources */, 32AE5A6A14E70ED600420CA0 /* asfpicture.cpp in Sources */, @@ -1217,14 +1036,8 @@ 32AE5A7014E70ED600420CA0 /* audioproperties.cpp in Sources */, EDE863B125CF6D710086EFD3 /* synchronizedlyricsframe.cpp in Sources */, 32AE5A7214E70ED600420CA0 /* fileref.cpp in Sources */, - 32AE5A7414E70ED600420CA0 /* flacfile.cpp in Sources */, EDE8630725CF6C5B0086EFD3 /* itfile.cpp in Sources */, - 32AE5A7614E70ED600420CA0 /* flacmetadatablock.cpp in Sources */, - 32AE5A7814E70ED600420CA0 /* flacpicture.cpp in Sources */, - 83AF2CBE2622643300538240 /* apegenfile.cpp in Sources */, - 32AE5A7A14E70ED600420CA0 /* flacproperties.cpp in Sources */, EDE863C625CF6D710086EFD3 /* ownershipframe.cpp in Sources */, - 32AE5A7C14E70ED600420CA0 /* flacunknownmetadatablock.cpp in Sources */, 32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */, 32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */, 32AE5A8E14E70ED600420CA0 /* id3v1genres.cpp in Sources */, @@ -1234,39 +1047,33 @@ 32AE5A9C14E70ED600420CA0 /* relativevolumeframe.cpp in Sources */, EDE863B925CF6D710086EFD3 /* eventtimingcodesframe.cpp in Sources */, EDE8633925CF6CF50086EFD3 /* infotag.cpp in Sources */, - 83790D241809E8CA0073CF51 /* opusfile.cpp in Sources */, 32AE5AA614E70ED600420CA0 /* urllinkframe.cpp in Sources */, EDE863C025CF6D710086EFD3 /* chapterframe.cpp in Sources */, 32AE5AAE14E70ED600420CA0 /* id3v2footer.cpp in Sources */, 32AE5AB014E70ED600420CA0 /* id3v2frame.cpp in Sources */, + 8315534D28741C7A00D4D746 /* apeitem.cpp in Sources */, 32AE5AB414E70ED600420CA0 /* id3v2header.cpp in Sources */, EDE8633C25CF6CF50086EFD3 /* wavfile.cpp in Sources */, 32AE5AB614E70ED600420CA0 /* id3v2synchdata.cpp in Sources */, EDE863D525CF6D710086EFD3 /* id3v2framefactory.cpp in Sources */, EDE863B225CF6D710086EFD3 /* uniquefileidentifierframe.cpp in Sources */, 32AE5AB814E70ED600420CA0 /* id3v2tag.cpp in Sources */, + 8315534B28741C7A00D4D746 /* apetag.cpp in Sources */, 32AE5ABA14E70ED600420CA0 /* mpegfile.cpp in Sources */, 32AE5ABC14E70ED600420CA0 /* mpegheader.cpp in Sources */, EDE8635325CF6D3D0086EFD3 /* tbytevectorstream.cpp in Sources */, EDE863BD25CF6D710086EFD3 /* podcastframe.cpp in Sources */, 32AE5AC014E70ED600420CA0 /* xingheader.cpp in Sources */, EDE863BF25CF6D710086EFD3 /* commentsframe.cpp in Sources */, + 8315534A28741C7A00D4D746 /* apefooter.cpp in Sources */, EDE8635D25CF6D3D0086EFD3 /* tzlib.cpp in Sources */, - 32AE5AC214E70ED600420CA0 /* oggflacfile.cpp in Sources */, - 32AE5AC414E70ED600420CA0 /* oggfile.cpp in Sources */, - 32AE5AC614E70ED600420CA0 /* oggpage.cpp in Sources */, - 32AE5AC814E70ED600420CA0 /* oggpageheader.cpp in Sources */, EDE863D825CF6D710086EFD3 /* id3v2extendedheader.cpp in Sources */, EDE863B625CF6D710086EFD3 /* unknownframe.cpp in Sources */, EDE8630E25CF6CAE0086EFD3 /* xmfile.cpp in Sources */, EDE8635C25CF6D3D0086EFD3 /* tiostream.cpp in Sources */, EDE8631E25CF6CC60086EFD3 /* modfilebase.cpp in Sources */, - 32AE5ACA14E70ED600420CA0 /* speexfile.cpp in Sources */, + 8315534828741C7A00D4D746 /* apefile.cpp in Sources */, EDE8635525CF6D3D0086EFD3 /* tdebuglistener.cpp in Sources */, - 32AE5ACC14E70ED600420CA0 /* speexproperties.cpp in Sources */, - 32AE5ACE14E70ED600420CA0 /* vorbisfile.cpp in Sources */, - 32AE5AD014E70ED600420CA0 /* vorbisproperties.cpp in Sources */, - 32AE5AD214E70ED600420CA0 /* xiphcomment.cpp in Sources */, 32AE5AD414E70ED600420CA0 /* aifffile.cpp in Sources */, 32AE5AD614E70ED600420CA0 /* aiffproperties.cpp in Sources */, 32AE5AD814E70ED600420CA0 /* rifffile.cpp in Sources */, @@ -1286,14 +1093,13 @@ 32AE5AEB14E70ED600420CA0 /* tfile.cpp in Sources */, 32AE5AF114E70ED600420CA0 /* tstring.cpp in Sources */, 32AE5AF314E70ED600420CA0 /* tstringlist.cpp in Sources */, - 83790D261809E8CA0073CF51 /* opusproperties.cpp in Sources */, - 32AE5AF714E70ED700420CA0 /* trueaudiofile.cpp in Sources */, EDE8630625CF6C5B0086EFD3 /* itproperties.cpp in Sources */, - 32AE5AF914E70ED700420CA0 /* trueaudioproperties.cpp in Sources */, EDE863E625CF6D710086EFD3 /* mpegproperties.cpp in Sources */, + 8315534428741C7A00D4D746 /* apeproperties.cpp in Sources */, EDE8630225CF6C260086EFD3 /* tfilestream.cpp in Sources */, 32AE5AFB14E70ED700420CA0 /* wavpackfile.cpp in Sources */, EDE8633E25CF6CF50086EFD3 /* wavproperties.cpp in Sources */, + 8315535028741C7A00D4D746 /* apegenfile.cpp in Sources */, 32AE5AFD14E70ED700420CA0 /* wavpackproperties.cpp in Sources */, EDE8632C25CF6CE00086EFD3 /* s3mfile.cpp in Sources */, EDE863CD25CF6D710086EFD3 /* textidentificationframe.cpp in Sources */, diff --git a/Frameworks/TagLib/taglib/taglib/audioproperties.cpp b/Frameworks/TagLib/taglib/taglib/audioproperties.cpp index 7f5b1d95d..8dedbba3c 100644 --- a/Frameworks/TagLib/taglib/taglib/audioproperties.cpp +++ b/Frameworks/TagLib/taglib/taglib/audioproperties.cpp @@ -25,17 +25,12 @@ #include -#include #include #include -#include #include #include #include -#include -#include -#include -#include +#include #include #include @@ -46,33 +41,23 @@ using namespace TagLib; // This macro is a workaround for the fact that we can't add virtual functions. // Should be true virtual functions in taglib2. -#define VIRTUAL_FUNCTION_WORKAROUND(function_name, default_value) \ - if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else if(dynamic_cast(this)) \ - return dynamic_cast(this)->function_name(); \ - else \ - return (default_value); +#define VIRTUAL_FUNCTION_WORKAROUND(function_name, default_value) \ + if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else if(dynamic_cast(this)) \ + return dynamic_cast(this)->function_name(); \ + else \ + return (default_value); class AudioProperties::AudioPropertiesPrivate { diff --git a/Frameworks/TagLib/taglib/taglib/fileref.cpp b/Frameworks/TagLib/taglib/taglib/fileref.cpp index 360d5d5f8..6e88b6ede 100644 --- a/Frameworks/TagLib/taglib/taglib/fileref.cpp +++ b/Frameworks/TagLib/taglib/taglib/fileref.cpp @@ -35,25 +35,17 @@ #include #include -#include #include -#include -#include -#include -#include -#include +#include +#include +#include #include -#include -#include -#include -#include +#include +#include #include #include -#include -#include -#include #include -#include +#include #include using namespace TagLib; @@ -108,30 +100,18 @@ namespace // .oga can be any audio in the Ogg container. So leave it to content-based detection. if(ext == "MP3") - return new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "OGG") - return new Ogg::Vorbis::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "FLAC") - return new FLAC::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "MPC") + return new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); + if(ext == "MPC") return new MPC::File(stream, readAudioProperties, audioPropertiesStyle); if(ext == "WV") - return new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "SPX") - return new Ogg::Speex::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "OPUS") - return new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "TTA") - return new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") + return new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); + if(ext == "WMA" || ext == "ASF") return new ASF::File(stream, readAudioProperties, audioPropertiesStyle); if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC") return new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); if(ext == "WAV") - return new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "APE") - return new APE::File(stream, readAudioProperties, audioPropertiesStyle); - // module, nst and wow are possible but uncommon extensions + return new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); + // module, nst and wow are possible but uncommon extensions if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") return new Mod::File(stream, readAudioProperties, audioPropertiesStyle); if(ext == "S3M") @@ -139,11 +119,9 @@ namespace if(ext == "IT") return new IT::File(stream, readAudioProperties, audioPropertiesStyle); if(ext == "XM") - return new XM::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "TAK") - return new APEGen::File(stream, readAudioProperties, audioPropertiesStyle); + return new XM::File(stream, readAudioProperties, audioPropertiesStyle); - return 0; + return 0; } // Detect the file type based on the actual content of the stream. @@ -154,35 +132,19 @@ namespace File *file = 0; if(MPEG::File::isSupported(stream)) - file = new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - else if(Ogg::Vorbis::File::isSupported(stream)) - file = new Ogg::Vorbis::File(stream, readAudioProperties, audioPropertiesStyle); - else if(Ogg::FLAC::File::isSupported(stream)) - file = new Ogg::FLAC::File(stream, readAudioProperties, audioPropertiesStyle); - else if(FLAC::File::isSupported(stream)) - file = new FLAC::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - else if(MPC::File::isSupported(stream)) + file = new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); + else if(MPC::File::isSupported(stream)) file = new MPC::File(stream, readAudioProperties, audioPropertiesStyle); else if(WavPack::File::isSupported(stream)) - file = new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); - else if(Ogg::Speex::File::isSupported(stream)) - file = new Ogg::Speex::File(stream, readAudioProperties, audioPropertiesStyle); - else if(Ogg::Opus::File::isSupported(stream)) - file = new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle); - else if(TrueAudio::File::isSupported(stream)) - file = new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle); - else if(ASF::File::isSupported(stream)) + file = new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); + else if(ASF::File::isSupported(stream)) file = new ASF::File(stream, readAudioProperties, audioPropertiesStyle); else if(RIFF::AIFF::File::isSupported(stream)) file = new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); else if(RIFF::WAV::File::isSupported(stream)) - file = new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); - else if(APE::File::isSupported(stream)) - file = new APE::File(stream, readAudioProperties, audioPropertiesStyle); - else if(APEGen::File::isSupported(stream)) - file = new APEGen::File(stream, readAudioProperties, audioPropertiesStyle); + file = new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); - // isSupported() only does a quick check, so double check the file here. + // isSupported() only does a quick check, so double check the file here. if(file) { if(file->isValid()) @@ -220,38 +182,18 @@ namespace return 0; if(ext == "MP3") - return new MPEG::File(fileName, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "OGG") - return new Ogg::Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "OGA") { - /* .oga can be any audio in the Ogg container. First try FLAC, then Vorbis. */ - File *file = new Ogg::FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(file->isValid()) - return file; - delete file; - return new Ogg::Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); - } - if(ext == "FLAC") - return new FLAC::File(fileName, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "MPC") + return new MPEG::File(fileName, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); + if(ext == "MPC") return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); if(ext == "WV") - return new WavPack::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "SPX") - return new Ogg::Speex::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "OPUS") - return new Ogg::Opus::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "TTA") - return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") + return new WavPack::File(fileName, readAudioProperties, audioPropertiesStyle); + if(ext == "WMA" || ext == "ASF") return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC") return new RIFF::AIFF::File(fileName, readAudioProperties, audioPropertiesStyle); if(ext == "WAV") - return new RIFF::WAV::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "APE") - return new APE::File(fileName, readAudioProperties, audioPropertiesStyle); - // module, nst and wow are possible but uncommon extensions + return new RIFF::WAV::File(fileName, readAudioProperties, audioPropertiesStyle); + // module, nst and wow are possible but uncommon extensions if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") return new Mod::File(fileName, readAudioProperties, audioPropertiesStyle); if(ext == "S3M") @@ -259,11 +201,9 @@ namespace if(ext == "IT") return new IT::File(fileName, readAudioProperties, audioPropertiesStyle); if(ext == "XM") - return new XM::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "TAK") - return new APEGen::File(fileName, readAudioProperties, audioPropertiesStyle); + return new XM::File(fileName, readAudioProperties, audioPropertiesStyle); - return 0; + return 0; } } @@ -366,22 +306,10 @@ StringList FileRef::defaultFileExtensions() { StringList l; - l.append("ogg"); - l.append("flac"); - l.append("oga"); - l.append("opus"); l.append("mp3"); l.append("mpc"); l.append("wv"); - l.append("spx"); - l.append("tta"); - l.append("m4a"); - l.append("m4r"); - l.append("m4b"); - l.append("m4p"); l.append("3g2"); - l.append("mp4"); - l.append("m4v"); l.append("wma"); l.append("asf"); l.append("aif"); @@ -389,7 +317,6 @@ StringList FileRef::defaultFileExtensions() l.append("afc"); l.append("aifc"); l.append("wav"); - l.append("ape"); l.append("mod"); l.append("module"); // alias for "mod" l.append("nst"); // alias for "mod" diff --git a/Frameworks/TagLib/taglib/taglib/tagunion.cpp b/Frameworks/TagLib/taglib/taglib/tagunion.cpp index 1fe29f1e5..47cb6bebf 100644 --- a/Frameworks/TagLib/taglib/taglib/tagunion.cpp +++ b/Frameworks/TagLib/taglib/taglib/tagunion.cpp @@ -27,10 +27,9 @@ #include #include +#include #include #include -#include -#include #include using namespace TagLib; @@ -135,10 +134,7 @@ PropertyMap TagUnion::properties() const else if(dynamic_cast(d->tags[i])) return dynamic_cast(d->tags[i])->properties(); - else if(dynamic_cast(d->tags[i])) - return dynamic_cast(d->tags[i])->properties(); - - else if(dynamic_cast(d->tags[i])) + else if(dynamic_cast(d->tags[i])) return dynamic_cast(d->tags[i])->properties(); } } @@ -164,10 +160,7 @@ void TagUnion::removeUnsupportedProperties(const StringList &unsupported) else if(dynamic_cast(d->tags[i])) dynamic_cast(d->tags[i])->removeUnsupportedProperties(unsupported); - else if(dynamic_cast(d->tags[i])) - dynamic_cast(d->tags[i])->removeUnsupportedProperties(unsupported); - - else if(dynamic_cast(d->tags[i])) + else if(dynamic_cast(d->tags[i])) dynamic_cast(d->tags[i])->removeUnsupportedProperties(unsupported); } } diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp index 6754a8884..3c5318609 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp +++ b/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp @@ -45,23 +45,14 @@ #endif #include -#include -#include -#include -#include +#include +#include #include -#include -#include -#include -#include -#include +#include #include #include -#include -#include -#include #include -#include +#include #include using namespace TagLib; @@ -111,116 +102,74 @@ FileName File::name() const PropertyMap File::properties() const { - // ugly workaround until this method is virtual - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - if(dynamic_cast(this)) - return dynamic_cast(this)->properties(); - return tag()->properties(); + // ugly workaround until this method is virtual + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + if(dynamic_cast(this)) + return dynamic_cast(this)->properties(); + return tag()->properties(); } void File::removeUnsupportedProperties(const StringList &properties) { // here we only consider those formats that could possibly contain // unsupported properties - if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); + if(dynamic_cast(this)) + dynamic_cast(this)->removeUnsupportedProperties(properties); else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); + dynamic_cast(this)->removeUnsupportedProperties(properties); else if(dynamic_cast(this)) dynamic_cast(this)->removeUnsupportedProperties(properties); else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); + dynamic_cast(this)->removeUnsupportedProperties(properties); else if(dynamic_cast(this)) dynamic_cast(this)->removeUnsupportedProperties(properties); else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast(this)) - dynamic_cast(this)->removeUnsupportedProperties(properties); + dynamic_cast(this)->removeUnsupportedProperties(properties); else tag()->removeUnsupportedProperties(properties); } PropertyMap File::setProperties(const PropertyMap &properties) { - if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else if(dynamic_cast(this)) - return dynamic_cast(this)->setProperties(properties); - else - return tag()->setProperties(properties); + if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else if(dynamic_cast(this)) + return dynamic_cast(this)->setProperties(properties); + else + return tag()->setProperties(properties); } ByteVector File::readBlock(unsigned long length) diff --git a/Plugins/TagLib/TagLibMetadataReader.m b/Plugins/TagLib/TagLibMetadataReader.m index ed97236b2..9cf9c407b 100644 --- a/Plugins/TagLib/TagLibMetadataReader.m +++ b/Plugins/TagLib/TagLibMetadataReader.m @@ -161,41 +161,6 @@ } } - TagLib::Ogg::Vorbis::File *vorbis = dynamic_cast(f.file()); - if(vorbis) { - TagLib::Ogg::XiphComment *tag = vorbis->tag(); - if(tag) { - auto list = tag->pictureList(); - if(!list.isEmpty()) { - // Just get the first image for now. - TagLib::FLAC::Picture *coverArt = list.front(); - if(coverArt) { - // Look into TagLib::FLAC::Picture::Type for type description. - NSLog(@"Loading image metadata from Ogg Vorbis, type = %d", - static_cast(coverArt->type())); - image = [NSData dataWithBytes:coverArt->data().data() - length:coverArt->data().size()]; - } - } - } - } - - TagLib::FLAC::File *flac = dynamic_cast(f.file()); - if(flac) { - auto list = flac->pictureList(); - if(!list.isEmpty()) { - // Just get the first image for now. - TagLib::FLAC::Picture *coverArt = list.front(); - if(coverArt) { - // Look into TagLib::FLAC::Picture::Type for type description. - NSLog(@"Loading image metadata from FLAC, type = %d", - static_cast(coverArt->type())); - image = [NSData dataWithBytes:coverArt->data().data() - length:coverArt->data().size()]; - } - } - } - if(nil != image) { [dict setObject:image forKey:@"albumArt"]; } @@ -208,11 +173,11 @@ + (NSArray *)fileTypes { // May be a way to get a list of supported formats - return @[@"ape", @"asf", @"wma", @"ogg", @"opus", @"mpc", @"flac", @"mp3", @"tak", @"ac3", @"apl", @"dts", @"dtshd", @"tta", @"wav", @"aif", @"aiff", @"wv", @"wvp"]; + return @[@"asf", @"wma", @"mpc", @"mp3", @"apl", @"wav", @"aif", @"aiff", @"wv", @"wvp"]; } + (NSArray *)mimeTypes { - return @[@"audio/x-ape", @"audio/x-ms-wma", @"application/ogg", @"application/x-ogg", @"audio/x-vorbis+ogg", @"audio/x-musepack", @"audio/x-flac", @"audio/x-m4a", @"audio/mpeg", @"audio/x-mp3", @"audio/x-tak", @"audio/x-ac3", @"audio/x-apl", @"audio/x-dts", @"audio/x-dtshd", @"audio/x-tta", @"audio/wav", @"audio/aiff", @"audio/x-wavpack"]; + return @[@"audio/x-ms-wma", @"audio/x-musepack", @"audio/mpeg", @"audio/x-mp3", @"audio/x-apl", @"audio/wav", @"audio/aiff", @"audio/x-wavpack"]; } + (float)priority {