From 19556cc6306f2201b91b9cc2a5d48078a35dce8d Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Thu, 24 Feb 2022 17:48:10 -0800 Subject: [PATCH] Brought back the MAD plugin from death Now Cog supports freeformat MP3 once again. The plugin has been extended to include sample accurate seeking, accurate length probing of files missing headers, and iTunes gapless info reading using libid3tag. Signed-off-by: Christopher Snowhill --- Cog.xcodeproj/project.pbxproj | 43 + Plugins/MAD/MAD.xcodeproj/project.pbxproj | 342 +++++++ Plugins/MAD/MADDecoder.h | 59 ++ Plugins/MAD/MADDecoder.m | 729 +++++++++++++ ThirdParty/libid3tag/README.md | 21 + ThirdParty/libid3tag/include/id3tag.h | 364 +++++++ ThirdParty/libid3tag/lib/libid3tag.a | Bin 0 -> 238872 bytes ThirdParty/libid3tag/patches/10_utf16.diff | 48 + .../patches/11_unknown_encoding.diff | 37 + .../libid3tag/patches/CVE-2008-2109.patch | 11 + .../libid3tag/patches/libid3tag-gperf.patch | 26 + ThirdParty/libmad/README.md | 12 + ThirdParty/libmad/include/MAD/mad.h | 964 ++++++++++++++++++ ThirdParty/libmad/lib/libmad.a | Bin 0 -> 262896 bytes 14 files changed, 2656 insertions(+) create mode 100644 Plugins/MAD/MAD.xcodeproj/project.pbxproj create mode 100644 Plugins/MAD/MADDecoder.h create mode 100644 Plugins/MAD/MADDecoder.m create mode 100644 ThirdParty/libid3tag/README.md create mode 100644 ThirdParty/libid3tag/include/id3tag.h create mode 100644 ThirdParty/libid3tag/lib/libid3tag.a create mode 100644 ThirdParty/libid3tag/patches/10_utf16.diff create mode 100644 ThirdParty/libid3tag/patches/11_unknown_encoding.diff create mode 100644 ThirdParty/libid3tag/patches/CVE-2008-2109.patch create mode 100644 ThirdParty/libid3tag/patches/libid3tag-gperf.patch create mode 100644 ThirdParty/libmad/README.md create mode 100644 ThirdParty/libmad/include/MAD/mad.h create mode 100644 ThirdParty/libmad/lib/libmad.a diff --git a/Cog.xcodeproj/project.pbxproj b/Cog.xcodeproj/project.pbxproj index f59f28ade..a3ac102f6 100644 --- a/Cog.xcodeproj/project.pbxproj +++ b/Cog.xcodeproj/project.pbxproj @@ -134,6 +134,7 @@ 836FB5A718206F2500B3AD2D /* Hively.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 836FB5471820538800B3AD2D /* Hively.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 8370D73D277419F700245CE0 /* SQLiteStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 8370D73C277419F700245CE0 /* SQLiteStore.m */; }; 8370D73F2775AE1300245CE0 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8370D73E2775AE1300245CE0 /* libsqlite3.tbd */; }; + 8372C93D27C7895300E250C9 /* MAD.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8372C93027C785BE00E250C9 /* MAD.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8377C66327B8CF6300E8BC0F /* SpectrumView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8377C66127B8CF6300E8BC0F /* SpectrumView.m */; }; 8377C6B927B900F000E8BC0F /* SpectrumItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8377C6B827B900F000E8BC0F /* SpectrumItem.m */; }; 8381A09227C5F72F00A1C530 /* SHA256Digest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8381A09127C5F72F00A1C530 /* SHA256Digest.m */; }; @@ -518,6 +519,20 @@ remoteGlobalIDString = 836FB52C1820538700B3AD2D; remoteInfo = Hively; }; + 8372C92F27C785BE00E250C9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8372C92A27C785BD00E250C9 /* MAD.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8372C92327C785BD00E250C9; + remoteInfo = MAD; + }; + 8372C93B27C7893100E250C9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8372C92A27C785BD00E250C9 /* MAD.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8372C92227C785BD00E250C9; + remoteInfo = MAD; + }; 8375B36117FFEF010092A79F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8359FF2C17FEF35C0060F3ED /* ArchiveSource.xcodeproj */; @@ -670,6 +685,7 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( + 8372C93D27C7895300E250C9 /* MAD.bundle in CopyFiles */, 83489C6B2782F78700BDCEA2 /* libvgmPlayer.bundle in CopyFiles */, 83293070277886250010C07E /* OpenMPTOld.bundle in CopyFiles */, 834D794020E4EFEF00C4A5CC /* VorbisPlugin.bundle in CopyFiles */, @@ -941,6 +957,7 @@ 8370D739277419D200245CE0 /* SQLiteStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SQLiteStore.h; sourceTree = ""; }; 8370D73C277419F700245CE0 /* SQLiteStore.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SQLiteStore.m; sourceTree = ""; }; 8370D73E2775AE1300245CE0 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; + 8372C92A27C785BD00E250C9 /* MAD.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MAD.xcodeproj; path = Plugins/MAD/MAD.xcodeproj; sourceTree = ""; }; 8375B05117FFEA400092A79F /* OpusPlugin.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OpusPlugin.xcodeproj; path = Plugins/Opus/OpusPlugin.xcodeproj; sourceTree = ""; }; 8377C66127B8CF6300E8BC0F /* SpectrumView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpectrumView.m; path = Visualization/SpectrumView.m; sourceTree = ""; }; 8377C66227B8CF6300E8BC0F /* SpectrumView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpectrumView.h; path = Visualization/SpectrumView.h; sourceTree = ""; }; @@ -1285,6 +1302,7 @@ 17C808830C3BD181005707C4 /* HTTPSource.xcodeproj */, 83489C4E2782F2DF00BDCEA2 /* libvgmPlayer.xcodeproj */, 8E8D40820CBB036600135C1B /* M3u.xcodeproj */, + 8372C92A27C785BD00E250C9 /* MAD.xcodeproj */, 83B0669C180D5668008E3612 /* MIDI.xcodeproj */, 17C8089E0C3BD1AB005707C4 /* Musepack.xcodeproj */, 83E5EFAC1FFEF78100659F0F /* OpenMPT.xcodeproj */, @@ -1767,6 +1785,14 @@ name = Products; sourceTree = ""; }; + 8372C92B27C785BD00E250C9 /* Products */ = { + isa = PBXGroup; + children = ( + 8372C93027C785BE00E250C9 /* MAD.bundle */, + ); + name = Products; + sourceTree = ""; + }; 8377C66027B8CF2300E8BC0F /* Visualization */ = { isa = PBXGroup; children = ( @@ -1947,6 +1973,7 @@ buildRules = ( ); dependencies = ( + 8372C93C27C7893100E250C9 /* PBXTargetDependency */, 83489C6A2782F76900BDCEA2 /* PBXTargetDependency */, 8329306F2778860C0010C07E /* PBXTargetDependency */, ED69CBC625BE32B40090B90D /* PBXTargetDependency */, @@ -2082,6 +2109,10 @@ ProductGroup = 8E8D40830CBB036600135C1B /* Products */; ProjectRef = 8E8D40820CBB036600135C1B /* M3u.xcodeproj */; }, + { + ProductGroup = 8372C92B27C785BD00E250C9 /* Products */; + ProjectRef = 8372C92A27C785BD00E250C9 /* MAD.xcodeproj */; + }, { ProductGroup = ED69CBB925BE328C0090B90D /* Products */; ProjectRef = ED69CBB825BE328C0090B90D /* MASShortcut.xcodeproj */; @@ -2305,6 +2336,13 @@ remoteRef = 836FB5461820538800B3AD2D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 8372C93027C785BE00E250C9 /* MAD.bundle */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = MAD.bundle; + remoteRef = 8372C92F27C785BE00E250C9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 83B066A1180D5669008E3612 /* MIDI.bundle */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; @@ -2676,6 +2714,11 @@ name = Hively; targetProxy = 836FB5A518206F1500B3AD2D /* PBXContainerItemProxy */; }; + 8372C93C27C7893100E250C9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MAD; + targetProxy = 8372C93B27C7893100E250C9 /* PBXContainerItemProxy */; + }; 8375B36217FFEF010092A79F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ArchiveSource; diff --git a/Plugins/MAD/MAD.xcodeproj/project.pbxproj b/Plugins/MAD/MAD.xcodeproj/project.pbxproj new file mode 100644 index 000000000..df03fac4a --- /dev/null +++ b/Plugins/MAD/MAD.xcodeproj/project.pbxproj @@ -0,0 +1,342 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 8372C93527C7861300E250C9 /* MADDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8372C93427C7861300E250C9 /* MADDecoder.m */; }; + 8372C93727C7863700E250C9 /* libmad.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8372C93627C7863700E250C9 /* libmad.a */; }; + 8372C93F27C7904800E250C9 /* libid3tag.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8372C93E27C7904800E250C9 /* libid3tag.a */; }; + 8372C94227C7959000E250C9 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8372C94127C7959000E250C9 /* libz.tbd */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 8372C92327C785BD00E250C9 /* MAD.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MAD.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 8372C93327C7861300E250C9 /* MADDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MADDecoder.h; sourceTree = ""; }; + 8372C93427C7861300E250C9 /* MADDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MADDecoder.m; sourceTree = ""; }; + 8372C93627C7863700E250C9 /* libmad.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmad.a; path = ../../ThirdParty/libmad/lib/libmad.a; sourceTree = ""; }; + 8372C93827C7865A00E250C9 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = ""; }; + 8372C93927C7866B00E250C9 /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = ../../Utils/Logging.h; sourceTree = ""; }; + 8372C93A27C786DD00E250C9 /* HTTPSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPSource.h; path = ../HTTPSource/HTTPSource.h; sourceTree = ""; }; + 8372C93E27C7904800E250C9 /* libid3tag.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libid3tag.a; path = ../../ThirdParty/libid3tag/lib/libid3tag.a; sourceTree = ""; }; + 8372C94127C7959000E250C9 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8372C92027C785BD00E250C9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8372C94227C7959000E250C9 /* libz.tbd in Frameworks */, + 8372C93727C7863700E250C9 /* libmad.a in Frameworks */, + 8372C93F27C7904800E250C9 /* libid3tag.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8372C91A27C785BD00E250C9 = { + isa = PBXGroup; + children = ( + 8372C93A27C786DD00E250C9 /* HTTPSource.h */, + 8372C93927C7866B00E250C9 /* Logging.h */, + 8372C93827C7865A00E250C9 /* Plugin.h */, + 8372C93327C7861300E250C9 /* MADDecoder.h */, + 8372C93427C7861300E250C9 /* MADDecoder.m */, + 8372C93E27C7904800E250C9 /* libid3tag.a */, + 8372C93627C7863700E250C9 /* libmad.a */, + 8372C92427C785BD00E250C9 /* Products */, + 8372C94027C7959000E250C9 /* Frameworks */, + ); + sourceTree = ""; + }; + 8372C92427C785BD00E250C9 /* Products */ = { + isa = PBXGroup; + children = ( + 8372C92327C785BD00E250C9 /* MAD.bundle */, + ); + name = Products; + sourceTree = ""; + }; + 8372C94027C7959000E250C9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8372C94127C7959000E250C9 /* libz.tbd */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8372C92227C785BD00E250C9 /* MAD */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8372C92727C785BD00E250C9 /* Build configuration list for PBXNativeTarget "MAD" */; + buildPhases = ( + 8372C91F27C785BD00E250C9 /* Sources */, + 8372C92027C785BD00E250C9 /* Frameworks */, + 8372C92127C785BD00E250C9 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MAD; + productName = MAD; + productReference = 8372C92327C785BD00E250C9 /* MAD.bundle */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8372C91B27C785BD00E250C9 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1320; + TargetAttributes = { + 8372C92227C785BD00E250C9 = { + CreatedOnToolsVersion = 13.2.1; + }; + }; + }; + buildConfigurationList = 8372C91E27C785BD00E250C9 /* Build configuration list for PBXProject "MAD" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8372C91A27C785BD00E250C9; + productRefGroup = 8372C92427C785BD00E250C9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8372C92227C785BD00E250C9 /* MAD */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8372C92127C785BD00E250C9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8372C91F27C785BD00E250C9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8372C93527C7861300E250C9 /* MADDecoder.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8372C92527C785BD00E250C9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 8372C92627C785BD00E250C9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + }; + name = Release; + }; + 8372C92827C785BD00E250C9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + ../../ThirdParty/libmad/include, + ../../ThirdParty/libid3tag/include, + ); + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSPrincipalClass = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + LIBRARY_SEARCH_PATHS = ( + ../../ThirdParty/libmad/lib, + ../../ThirdParty/libid3tag/lib, + ); + MACOSX_DEPLOYMENT_TARGET = 10.12; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = co.losno.MAD; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 8372C92927C785BD00E250C9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ( + ../../ThirdParty/libmad/include, + ../../ThirdParty/libid3tag/include, + ); + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSPrincipalClass = ""; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + LIBRARY_SEARCH_PATHS = ( + ../../ThirdParty/libmad/lib, + ../../ThirdParty/libid3tag/lib, + ); + MACOSX_DEPLOYMENT_TARGET = 10.12; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = co.losno.MAD; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8372C91E27C785BD00E250C9 /* Build configuration list for PBXProject "MAD" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8372C92527C785BD00E250C9 /* Debug */, + 8372C92627C785BD00E250C9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8372C92727C785BD00E250C9 /* Build configuration list for PBXNativeTarget "MAD" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8372C92827C785BD00E250C9 /* Debug */, + 8372C92927C785BD00E250C9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8372C91B27C785BD00E250C9 /* Project object */; +} diff --git a/Plugins/MAD/MADDecoder.h b/Plugins/MAD/MADDecoder.h new file mode 100644 index 000000000..942e80086 --- /dev/null +++ b/Plugins/MAD/MADDecoder.h @@ -0,0 +1,59 @@ +// +// MADFile.h +// Cog +// +// Created by Vincent Spader on 6/17/06. +// Copyright 2006 Vincent Spader. All rights reserved. +// + +#import + +#import "MAD/mad.h" + +#import "Plugin.h" + +#define INPUT_BUFFER_SIZE 5 * 8192 + +@interface MADDecoder : NSObject { + struct mad_stream _stream; + struct mad_frame _frame; + struct mad_synth _synth; + + unsigned char _inputBuffer[INPUT_BUFFER_SIZE + MAD_BUFFER_GUARD]; + float *_outputBuffer; + long _outputFrames; + long _currentOutputFrames; + long _fileSize; + + id _source; + + BOOL _firstFrame; + + // For gapless playback of mp3s + BOOL _foundXingHeader; + BOOL _foundLAMEHeader; + BOOL _foundID3v2; + BOOL _foundiTunSMPB; + + long _framesDecoded; + uint16_t _startPadding; + uint16_t _endPadding; + + BOOL inputEOF; + + int channels; + float sampleRate; + int bitrate; + long totalFrames; + long framesToSkip; + int layer; + + NSString *genre; + NSString *album; + NSString *artist; + NSString *title; +} + +- (int)decodeMPEGFrame; + +@end diff --git a/Plugins/MAD/MADDecoder.m b/Plugins/MAD/MADDecoder.m new file mode 100644 index 000000000..fb90ab162 --- /dev/null +++ b/Plugins/MAD/MADDecoder.m @@ -0,0 +1,729 @@ +// +// MADFile.m +// Cog +// +// Created by Vincent Spader on 6/17/06. +// Copyright 2006 Vincent Spader. All rights reserved. +// + +#import "MADDecoder.h" + +#import "HTTPSource.h" + +#import "Logging.h" + +#import "id3tag.h" + +#import + +@implementation MADDecoder + +#define LAME_HEADER_SIZE ((8 * 5) + 4 + 4 + 8 + 32 + 16 + 16 + 4 + 4 + 8 + 12 + 12 + 8 + 8 + 2 + 3 + 11 + 32 + 32 + 32) + +// From vbrheadersdk: +// ======================================== +// A Xing header may be present in the ancillary +// data field of the first frame of an mp3 bitstream +// The Xing header (optionally) contains +// frames total number of audio frames in the bitstream +// bytes total number of bytes in the bitstream +// toc table of contents + +// toc (table of contents) gives seek points +// for random access +// the ith entry determines the seek point for +// i-percent duration +// seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes +// e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes + +#define FRAMES_FLAG 0x0001 +#define BYTES_FLAG 0x0002 +#define TOC_FLAG 0x0004 +#define VBR_SCALE_FLAG 0x0008 + +// Scan file quickly +- (void)bufferRefill:(struct mad_stream *)stream { + long bytesToRead, bytesRemaining; + + if(NULL == stream->buffer || MAD_ERROR_BUFLEN == stream->error) { + if(stream->next_frame) { + bytesRemaining = stream->bufend - stream->next_frame; + + memmove(_inputBuffer, stream->next_frame, bytesRemaining); + + bytesToRead = INPUT_BUFFER_SIZE - bytesRemaining; + } else { + bytesToRead = INPUT_BUFFER_SIZE; + bytesRemaining = 0; + } + + // Read raw bytes from the MP3 file + long bytesRead = [_source read:_inputBuffer + bytesRemaining amount:bytesToRead]; + + if(bytesRead == 0) { + memset(_inputBuffer + bytesRemaining + bytesRead, 0, MAD_BUFFER_GUARD); + bytesRead += MAD_BUFFER_GUARD; + inputEOF = YES; + } + + mad_stream_buffer(stream, _inputBuffer, bytesRead + bytesRemaining); + stream->error = MAD_ERROR_NONE; + } +} + +- (BOOL)scanFile { + struct mad_stream stream; + struct mad_frame frame; + + long framesDecoded = 0; + int samplesPerMPEGFrame = 0; + + int id3_length = 0; + + mad_stream_init(&stream); + mad_frame_init(&frame); + + [_source seek:0 whence:SEEK_END]; + _fileSize = [_source tell]; + [_source seek:0 whence:SEEK_SET]; + + mad_timer_t duration = { 0, 0 }; + + for(;;) { + [self bufferRefill:&stream]; + + if(mad_frame_decode(&frame, &stream) == -1) { + if(MAD_RECOVERABLE(stream.error)) { + // Prevent ID3 tags from reporting recoverable frame errors + const uint8_t *buffer = stream.this_frame; + unsigned long buflen = stream.bufend - stream.this_frame; + + if(10 <= buflen && 0x49 == buffer[0] && 0x44 == buffer[1] && 0x33 == buffer[2]) { + id3_length = (((buffer[6] & 0x7F) << (3 * 7)) | ((buffer[7] & 0x7F) << (2 * 7)) | + ((buffer[8] & 0x7F) << (1 * 7)) | ((buffer[9] & 0x7F) << (0 * 7))); + + _foundID3v2 = YES; + + // Add 10 bytes for ID3 header + id3_length += 10; + + void *tagBuffer = malloc(id3_length); + if(!tagBuffer) return NO; + + memcpy(tagBuffer, &buffer[0], MIN(buflen, id3_length)); + + long bufleft = id3_length - buflen; + long tagRead = MIN(buflen, id3_length); + + while(bufleft > 0) { + stream.error = MAD_ERROR_BUFLEN; + stream.next_frame = NULL; + [self bufferRefill:&stream]; + buffer = stream.this_frame; + buflen = stream.bufend - stream.this_frame; + memcpy(tagBuffer + tagRead, buffer, MIN(buflen, bufleft)); + tagRead += MIN(buflen, bufleft); + bufleft -= buflen; + } + + if(bufleft < 0) { + mad_stream_skip(&stream, buflen + bufleft); + } + + struct id3_tag *tag = id3_tag_parse(tagBuffer, id3_length); + + if(tag) { + for(size_t i = 0; i < tag->nframes; ++i) { + struct id3_frame *frame = tag->frames[i]; + if(!strcmp(frame->id, "COMM")) { + union id3_field *field; + const id3_ucs4_t *description; + const id3_ucs4_t *value; + + field = id3_frame_field(frame, 2); + description = id3_field_getstring(field); + + field = id3_frame_field(frame, 3); + value = id3_field_getfullstring(field); + + if(description && value) { + id3_utf8_t *description8 = id3_ucs4_utf8duplicate(description); + if(!strcmp((const char *)description8, "iTunSMPB")) { + id3_utf8_t *value8 = id3_ucs4_utf8duplicate(value); + + uint32_t zero, start_pad, end_pad; + uint64_t last_eight_frames_offset; + int64_t temp_duration; + + if(sscanf((const char *)value8, "%" PRIx32 " %" PRIx32 " %" PRIx32 " %" PRIx64 " %" PRIx32 " %" PRIx64, &zero, &start_pad, &end_pad, &temp_duration, &zero, &last_eight_frames_offset) == 6 && + temp_duration >= 0 && + start_pad <= (576 * 2 * 32) && + end_pad <= (576 * 2 * 64) && + (_fileSize && (last_eight_frames_offset < (_fileSize - id3_length)))) { + if(end_pad >= 528 + 1) { + _startPadding = start_pad + 528 + 1; + _endPadding = end_pad - (528 + 1); + totalFrames = temp_duration; + _foundiTunSMPB = YES; + } + } + + free(value8); + } + free(description8); + } + } + } + + id3_tag_delete(tag); + } + + free(tagBuffer); + } + + continue; + } else if(stream.error == MAD_ERROR_BUFLEN && inputEOF) { + break; + } else if(stream.error == MAD_ERROR_BUFLEN) { + continue; + } else { + // DLog(@"Unrecoverable error: %s", mad_stream_errorstr(&stream)); + break; + } + } + framesDecoded++; + + if(framesDecoded == 1) { + sampleRate = frame.header.samplerate; + channels = MAD_NCHANNELS(&frame.header); + + if(MAD_FLAG_LSF_EXT & frame.header.flags || MAD_FLAG_MPEG_2_5_EXT & frame.header.flags) { + switch(frame.header.layer) { + case MAD_LAYER_I: + samplesPerMPEGFrame = 384; + layer = 1; + break; + case MAD_LAYER_II: + samplesPerMPEGFrame = 1152; + layer = 2; + break; + case MAD_LAYER_III: + samplesPerMPEGFrame = 576; + layer = 3; + break; + } + } else { + switch(frame.header.layer) { + case MAD_LAYER_I: + samplesPerMPEGFrame = 384; + layer = 1; + break; + case MAD_LAYER_II: + samplesPerMPEGFrame = 1152; + layer = 2; + break; + case MAD_LAYER_III: + samplesPerMPEGFrame = 1152; + layer = 3; + break; + } + } + + unsigned ancillaryBitsRemaining = stream.anc_bitlen; + + if(32 > ancillaryBitsRemaining) + continue; + + uint32_t magic = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + ancillaryBitsRemaining -= 32; + + if('Xing' == magic || 'Info' == magic) { + unsigned i; + uint32_t flags = 0, frames = 0, bytes = 0, vbrScale = 0; + + if(32 > ancillaryBitsRemaining) + continue; + + flags = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + ancillaryBitsRemaining -= 32; + + // 4 byte value containing total frames + if(FRAMES_FLAG & flags) { + if(32 > ancillaryBitsRemaining) + continue; + + frames = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + ancillaryBitsRemaining -= 32; + + // Determine number of samples, discounting encoder delay and padding + // Our concept of a frame is the same as CoreAudio's- one sample across all channels + totalFrames = frames * samplesPerMPEGFrame; + // DLog(@"TOTAL READ FROM XING"); + } + + // 4 byte value containing total bytes + if(BYTES_FLAG & flags) { + if(32 > ancillaryBitsRemaining) + continue; + + bytes = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + ancillaryBitsRemaining -= 32; + } + + // 100 bytes containing TOC information + if(TOC_FLAG & flags) { + if(8 * 100 > ancillaryBitsRemaining) + continue; + + for(i = 0; i < 100; ++i) + /*_xingTOC[i] = */ mad_bit_read(&stream.anc_ptr, 8); + + ancillaryBitsRemaining -= (8 * 100); + } + + // 4 byte value indicating encoded vbr scale + if(VBR_SCALE_FLAG & flags) { + if(32 > ancillaryBitsRemaining) + continue; + + vbrScale = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + ancillaryBitsRemaining -= 32; + } + + framesDecoded = frames; + + _foundXingHeader = YES; + + // Loook for the LAME header next + // http://gabriel.mp3-tech.org/mp3infotag.html + if(32 > ancillaryBitsRemaining) + continue; + magic = (uint32_t)mad_bit_read(&stream.anc_ptr, 32); + + ancillaryBitsRemaining -= 32; + + if('LAME' == magic) { + if(LAME_HEADER_SIZE > ancillaryBitsRemaining) + continue; + + /*unsigned char versionString [5 + 1]; + memset(versionString, 0, 6);*/ + + for(i = 0; i < 5; ++i) + /*versionString[i] =*/mad_bit_read(&stream.anc_ptr, 8); + + /*uint8_t infoTagRevision =*/mad_bit_read(&stream.anc_ptr, 4); + /*uint8_t vbrMethod =*/mad_bit_read(&stream.anc_ptr, 4); + + /*uint8_t lowpassFilterValue =*/mad_bit_read(&stream.anc_ptr, 8); + + /*float peakSignalAmplitude =*/mad_bit_read(&stream.anc_ptr, 32); + /*uint16_t radioReplayGain =*/mad_bit_read(&stream.anc_ptr, 16); + /*uint16_t audiophileReplayGain =*/mad_bit_read(&stream.anc_ptr, 16); + + /*uint8_t encodingFlags =*/mad_bit_read(&stream.anc_ptr, 4); + /*uint8_t athType =*/mad_bit_read(&stream.anc_ptr, 4); + + /*uint8_t lameBitrate =*/mad_bit_read(&stream.anc_ptr, 8); + + _startPadding = mad_bit_read(&stream.anc_ptr, 12); + _endPadding = mad_bit_read(&stream.anc_ptr, 12); + + _startPadding += 528 + 1; // MDCT/filterbank delay + _endPadding -= 528 + 1; + + /*uint8_t misc =*/mad_bit_read(&stream.anc_ptr, 8); + + uint8_t mp3Gain = mad_bit_read(&stream.anc_ptr, 8); + DLog(@"Gain: %i", mp3Gain); + + /*uint8_t unused =*/mad_bit_read(&stream.anc_ptr, 2); + /*uint8_t surroundInfo =*/mad_bit_read(&stream.anc_ptr, 3); + /*uint16_t presetInfo =*/mad_bit_read(&stream.anc_ptr, 11); + + /*uint32_t musicGain =*/mad_bit_read(&stream.anc_ptr, 32); + + /*uint32_t musicCRC =*/mad_bit_read(&stream.anc_ptr, 32); + + /*uint32_t tagCRC =*/mad_bit_read(&stream.anc_ptr, 32); + + ancillaryBitsRemaining -= LAME_HEADER_SIZE; + + _foundLAMEHeader = YES; + break; + } + } + } else if(_foundiTunSMPB) { + break; + } + + mad_timer_add(&duration, frame.header.duration); + } + + if(!_foundiTunSMPB && (!_foundXingHeader || !_foundLAMEHeader)) { + totalFrames = mad_timer_count(duration, sampleRate); + } + + bitrate = ((double)((_fileSize - id3_length) * 8) / 1000.0) * (sampleRate / (double)totalFrames); + + mad_frame_finish(&frame); + mad_stream_finish(&stream); + + [_source seek:0 whence:SEEK_SET]; + inputEOF = NO; + + DLog(@"Mad properties: %@", [self properties]); + + return YES; +} + +- (BOOL)open:(id)source { + _source = source; + + /* First the structures used by libmad must be initialized. */ + mad_stream_init(&_stream); + mad_frame_init(&_frame); + mad_synth_init(&_synth); + + _firstFrame = YES; + // DLog(@"OPEN: %i", _firstFrame); + + inputEOF = NO; + + genre = @""; + album = @""; + artist = @""; + title = @""; + + if(![_source seekable]) { + // Decode the first frame to get the channels, samplerate, etc. + int r; + do { + r = [self decodeMPEGFrame]; + DLog(@"Decoding first frame: %i", r); + } while(r == 0); + + return (r == -1 ? NO : YES); + } + + framesToSkip = 0; + + BOOL ret = [self scanFile]; + + if(_foundLAMEHeader || _foundiTunSMPB) { + framesToSkip = _startPadding; + } + + return ret; +} + +- (void)writeOutput { + unsigned long startingSample = 0; + unsigned long sampleCount = _synth.pcm.length; + + // DLog(@"Position: %li/%li", _framesDecoded, totalFrames); + // DLog(@"<%i, %i>", _startPadding, _endPadding); + if(framesToSkip > 0) { + startingSample = framesToSkip; + } + + // DLog(@"Counts: %i, %i", startingSample, sampleCount); + if(_foundLAMEHeader || _foundiTunSMPB) { + // Past the end of the file. + if(totalFrames - _endPadding <= _framesDecoded) { + // DLog(@"End of file. Not writing."); + return; + } + + // We are at the end of the file and need to read the last few frames + if(_framesDecoded + (sampleCount - startingSample) > totalFrames - _endPadding) { + // DLog(@"End of file. %li", totalFrames - _endPadding - _framesDecoded); + sampleCount = totalFrames - _endPadding - _framesDecoded + startingSample; + } + } + + // We haven't even gotten to the start yet + if(startingSample >= sampleCount) { + // DLog(@"Skipping entire sample"); + _framesDecoded += sampleCount; + framesToSkip -= sampleCount; + return; + } + + framesToSkip = 0; + + // DLog(@"Revised: %i, %i", startingSample, sampleCount); + + _framesDecoded += _synth.pcm.length; + + if(_outputFrames > 0) { + DLog(@"LOSING FRAMES!"); + } + _outputFrames = (sampleCount - startingSample); + + if(_currentOutputFrames < _outputFrames) { + _outputBuffer = (float *)realloc(_outputBuffer, _outputFrames * channels * sizeof(float)); + _currentOutputFrames = _outputFrames; + } + + int ch; + + // samples [0 ... n] + float scale = (float)MAD_F_ONE; + for(ch = 0; ch < channels; ch++) { + vDSP_vflt32(&_synth.pcm.samples[ch][startingSample], 1, &_outputBuffer[ch], channels, _outputFrames); + vDSP_vsdiv(&_outputBuffer[ch], channels, &scale, &_outputBuffer[ch], channels, _outputFrames); + } + + // Output to a file + // FILE *f = fopen("data.raw", "a"); + // fwrite(_outputBuffer, channels * 2, _outputFrames, f); + // fclose(f); +} + +- (int)decodeMPEGFrame { + if(_stream.buffer == NULL || _stream.error == MAD_ERROR_BUFLEN) { + int inputToRead; + int inputRemaining; + + if(_stream.next_frame != NULL) { + inputRemaining = (int)(_stream.bufend - _stream.next_frame); + + memmove(_inputBuffer, _stream.next_frame, inputRemaining); + + inputToRead = INPUT_BUFFER_SIZE - inputRemaining; + } else { + inputToRead = INPUT_BUFFER_SIZE; + inputRemaining = 0; + } + + long inputRead = [_source read:_inputBuffer + inputRemaining amount:INPUT_BUFFER_SIZE - inputRemaining]; + if(inputRead == 0) { + memset(_inputBuffer + inputRemaining + inputRead, 0, MAD_BUFFER_GUARD); + inputRead += MAD_BUFFER_GUARD; + inputEOF = YES; + } + + mad_stream_buffer(&_stream, _inputBuffer, inputRead + inputRemaining); + _stream.error = MAD_ERROR_NONE; + // DLog(@"Read stream."); + } + + if(mad_frame_decode(&_frame, &_stream) == -1) { + if(MAD_RECOVERABLE(_stream.error)) { + const uint8_t *buffer = _stream.this_frame; + unsigned long buflen = _stream.bufend - _stream.this_frame; + uint32_t id3_length = 0; + + // No longer need ID3Tag framework + if(10 <= buflen && 0x49 == buffer[0] && 0x44 == buffer[1] && 0x33 == buffer[2]) { + id3_length = (((buffer[6] & 0x7F) << (3 * 7)) | ((buffer[7] & 0x7F) << (2 * 7)) | + ((buffer[8] & 0x7F) << (1 * 7)) | ((buffer[9] & 0x7F) << (0 * 7))); + + // Add 10 bytes for ID3 header + id3_length += 10; + + mad_stream_skip(&_stream, id3_length); + } + + DLog(@"recoverable error"); + return 0; + } else if(MAD_ERROR_BUFLEN == _stream.error && inputEOF) { + DLog(@"EOF"); + return -1; + } else if(MAD_ERROR_BUFLEN == _stream.error) { + // DLog(@"Bufferlen"); + return 0; + } else { + // DLog(@"Unrecoverable stream error: %s", mad_stream_errorstr(&_stream)); + return -1; + } + } + + signed long frameDuration = mad_timer_count(_frame.header.duration, sampleRate); + if((framesToSkip - 1152 * 4) >= frameDuration) { + framesToSkip -= frameDuration; + _framesDecoded += frameDuration; + return 0; + } + + // DLog(@"Decoded buffer."); + mad_synth_frame(&_synth, &_frame); + // DLog(@"first frame: %i", _firstFrame); + if(_firstFrame) { + _firstFrame = NO; + + if(![_source seekable]) { + sampleRate = _frame.header.samplerate; + channels = MAD_NCHANNELS(&_frame.header); + + switch(_frame.header.layer) { + case MAD_LAYER_I: + layer = 1; + break; + case MAD_LAYER_II: + layer = 2; + break; + case MAD_LAYER_III: + layer = 3; + break; + default: + break; + } + + [self willChangeValueForKey:@"properties"]; + [self didChangeValueForKey:@"properties"]; + } + // DLog(@"FIRST FRAME!!! %i %i", _foundXingHeader, _foundLAMEHeader); + if(_foundXingHeader) { + // DLog(@"Skipping xing header."); + return 0; + } + } + + return 1; +} + +- (int)readAudio:(void *)buffer frames:(UInt32)frames { + int framesRead = 0; + + for(;;) { + long framesRemaining = frames - framesRead; + long framesToCopy = (_outputFrames > framesRemaining ? framesRemaining : _outputFrames); + + if(framesToCopy) { + memcpy(buffer + (framesRead * channels * sizeof(float)), _outputBuffer, framesToCopy * channels * sizeof(float)); + framesRead += framesToCopy; + + if(framesToCopy != _outputFrames) { + memmove(_outputBuffer, _outputBuffer + (framesToCopy * channels), (_outputFrames - framesToCopy) * channels * sizeof(float)); + } + + _outputFrames -= framesToCopy; + } + + if(framesRead == frames) + break; + + int r = [self decodeMPEGFrame]; + // DLog(@"Decoding frame: %i", r); + if(r == 0) // Recoverable error. + continue; + else if(r == -1) // Unrecoverable error + break; + + [self writeOutput]; + // DLog(@"Wrote output"); + } + + [self updateMetadata]; + + // DLog(@"Read: %i/%i", bytesRead, size); + return framesRead; +} + +- (void)close { + if(_source) { + [_source close]; + _source = nil; + } + + if(_outputBuffer) { + free(_outputBuffer); + _outputBuffer = NULL; + } + + mad_synth_finish(&_synth); + mad_frame_finish(&_frame); + mad_stream_finish(&_stream); +} + +- (long)seek:(long)frame { + if(frame > totalFrames) + frame = totalFrames; + + framesToSkip = 0; + + if(frame > _framesDecoded) { + _framesDecoded = 0; + _firstFrame = YES; + if(_foundLAMEHeader || _foundiTunSMPB) + framesToSkip = _startPadding; + [_source seek:0 whence:SEEK_SET]; + + mad_stream_buffer(&_stream, NULL, 0); + } + + framesToSkip += frame - _framesDecoded; + + return frame; +} + +- (void)updateMetadata { + NSString *_artist = artist; + NSString *_album = album; + NSString *_title = title; + NSString *_genre = genre; + + Class sourceClass = [_source class]; + if([sourceClass isEqual:NSClassFromString(@"HTTPSource")]) { + HTTPSource *httpSource = (HTTPSource *)_source; + if([httpSource hasMetadata]) { + NSDictionary *metadata = [httpSource metadata]; + _genre = [metadata valueForKey:@"genre"]; + _album = [metadata valueForKey:@"album"]; + _artist = [metadata valueForKey:@"artist"]; + _title = [metadata valueForKey:@"title"]; + } + } + + if(![_artist isEqual:artist] || + ![_album isEqual:album] || + ![_title isEqual:title] || + ![_genre isEqual:genre]) { + artist = _artist; + album = _album; + title = _title; + genre = _genre; + if(![_source seekable]) { + [self willChangeValueForKey:@"metadata"]; + [self didChangeValueForKey:@"metadata"]; + } + } +} + +- (NSDictionary *)properties { + const NSString *layers[3] = { @"MP1", @"MP2", @"MP3" }; + return @{ @"channels": [NSNumber numberWithInt:channels], + @"bitsPerSample": [NSNumber numberWithInt:32], + @"sampleRate": [NSNumber numberWithFloat:sampleRate], + @"floatingPoint": [NSNumber numberWithBool:YES], + @"bitrate": [NSNumber numberWithInt:bitrate], + @"totalFrames": [NSNumber numberWithLong:totalFrames - (_startPadding + _endPadding)], + @"seekable": [NSNumber numberWithBool:[_source seekable]], + @"codec": layers[layer - 1], + @"endian": @"host", + @"encoding": @"lossy" }; +} + +- (NSDictionary *)metadata { + return @{ @"artist": artist, @"album": album, @"title": title, @"genre": genre }; +} + ++ (NSArray *)fileTypes { + return @[@"mp3", @"m2a", @"mpa"]; +} + ++ (NSArray *)mimeTypes { + return @[@"audio/mpeg", @"audio/x-mp3"]; +} + ++ (NSArray *)fileTypeAssociations { + return @[@[@"MPEG Audio File", @"mp3.icns", @"mp3", @"m2a", @"mpa"]]; +} + ++ (float)priority { + return 2.0; +} + +@end diff --git a/ThirdParty/libid3tag/README.md b/ThirdParty/libid3tag/README.md new file mode 100644 index 000000000..a983836af --- /dev/null +++ b/ThirdParty/libid3tag/README.md @@ -0,0 +1,21 @@ +Built with the Arch Linux defaults, sort of: + +``` +patch -Np1 -i 10_utf16.diff +patch -Np1 -i 11_unknown_encoding.diff +patch -Np0 -i CVE-2008-2109.patch +patch -Np1 -i libid3tag-gperf.patch +rm compat.c frametype.c + +touch NEWS +touch AUTHORS +touch ChangeLog + +autoreconf -fiv +./configure +make -j8 CFLAGS="-Os -arch x86_64 -arch arm64 -mmacosx-version-min=10.12" LDFLAGS="-arch x86_64 -arch arm64 -mmacosx-version-min=10.12" +``` + +Version 0.15.1b was used, with Arch Linux patches. I also had to tweak +the compat.c and frametype.c to change the function definitions to match +the gperf patch used above. diff --git a/ThirdParty/libid3tag/include/id3tag.h b/ThirdParty/libid3tag/include/id3tag.h new file mode 100644 index 000000000..4f4c6819a --- /dev/null +++ b/ThirdParty/libid3tag/include/id3tag.h @@ -0,0 +1,364 @@ +/* + * libid3tag - ID3 tag manipulation library + * Copyright (C) 2000-2004 Underbit Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * If you would like to negotiate alternate licensing terms, you may do + * so by contacting: Underbit Technologies, Inc. + * + * $Id: id3tag.h,v 1.17 2004/01/23 23:22:46 rob Exp $ + */ + +# ifndef LIBID3TAG_ID3TAG_H +# define LIBID3TAG_ID3TAG_H + +# ifdef __cplusplus +extern "C" { +# endif + +# define ID3_TAG_VERSION 0x0400 +# define ID3_TAG_VERSION_MAJOR(x) (((x) >> 8) & 0xff) +# define ID3_TAG_VERSION_MINOR(x) (((x) >> 0) & 0xff) + +typedef unsigned char id3_byte_t; +typedef unsigned long id3_length_t; + +typedef unsigned long id3_ucs4_t; + +typedef unsigned char id3_latin1_t; +typedef unsigned short id3_utf16_t; +typedef signed char id3_utf8_t; + +struct id3_tag { + unsigned int refcount; + unsigned int version; + int flags; + int extendedflags; + int restrictions; + int options; + unsigned int nframes; + struct id3_frame **frames; + id3_length_t paddedsize; +}; + +# define ID3_TAG_QUERYSIZE 10 + +/* ID3v1 field frames */ + +# define ID3_FRAME_TITLE "TIT2" +# define ID3_FRAME_ARTIST "TPE1" +# define ID3_FRAME_ALBUM "TALB" +# define ID3_FRAME_TRACK "TRCK" +# define ID3_FRAME_YEAR "TDRC" +# define ID3_FRAME_GENRE "TCON" +# define ID3_FRAME_COMMENT "COMM" + +/* special frames */ + +# define ID3_FRAME_OBSOLETE "ZOBS" /* with apologies to the French */ + +/* tag flags */ + +enum { + ID3_TAG_FLAG_UNSYNCHRONISATION = 0x80, + ID3_TAG_FLAG_EXTENDEDHEADER = 0x40, + ID3_TAG_FLAG_EXPERIMENTALINDICATOR = 0x20, + ID3_TAG_FLAG_FOOTERPRESENT = 0x10, + + ID3_TAG_FLAG_KNOWNFLAGS = 0xf0 +}; + +/* tag extended flags */ + +enum { + ID3_TAG_EXTENDEDFLAG_TAGISANUPDATE = 0x40, + ID3_TAG_EXTENDEDFLAG_CRCDATAPRESENT = 0x20, + ID3_TAG_EXTENDEDFLAG_TAGRESTRICTIONS = 0x10, + + ID3_TAG_EXTENDEDFLAG_KNOWNFLAGS = 0x70 +}; + +/* tag restrictions */ + +enum { + ID3_TAG_RESTRICTION_TAGSIZE_MASK = 0xc0, + ID3_TAG_RESTRICTION_TAGSIZE_128_FRAMES_1_MB = 0x00, + ID3_TAG_RESTRICTION_TAGSIZE_64_FRAMES_128_KB = 0x40, + ID3_TAG_RESTRICTION_TAGSIZE_32_FRAMES_40_KB = 0x80, + ID3_TAG_RESTRICTION_TAGSIZE_32_FRAMES_4_KB = 0xc0 +}; + +enum { + ID3_TAG_RESTRICTION_TEXTENCODING_MASK = 0x20, + ID3_TAG_RESTRICTION_TEXTENCODING_NONE = 0x00, + ID3_TAG_RESTRICTION_TEXTENCODING_LATIN1_UTF8 = 0x20 +}; + +enum { + ID3_TAG_RESTRICTION_TEXTSIZE_MASK = 0x18, + ID3_TAG_RESTRICTION_TEXTSIZE_NONE = 0x00, + ID3_TAG_RESTRICTION_TEXTSIZE_1024_CHARS = 0x08, + ID3_TAG_RESTRICTION_TEXTSIZE_128_CHARS = 0x10, + ID3_TAG_RESTRICTION_TEXTSIZE_30_CHARS = 0x18 +}; + +enum { + ID3_TAG_RESTRICTION_IMAGEENCODING_MASK = 0x04, + ID3_TAG_RESTRICTION_IMAGEENCODING_NONE = 0x00, + ID3_TAG_RESTRICTION_IMAGEENCODING_PNG_JPEG = 0x04 +}; + +enum { + ID3_TAG_RESTRICTION_IMAGESIZE_MASK = 0x03, + ID3_TAG_RESTRICTION_IMAGESIZE_NONE = 0x00, + ID3_TAG_RESTRICTION_IMAGESIZE_256_256 = 0x01, + ID3_TAG_RESTRICTION_IMAGESIZE_64_64 = 0x02, + ID3_TAG_RESTRICTION_IMAGESIZE_64_64_EXACT = 0x03 +}; + +/* library options */ + +enum { + ID3_TAG_OPTION_UNSYNCHRONISATION = 0x0001, /* use unsynchronisation */ + ID3_TAG_OPTION_COMPRESSION = 0x0002, /* use compression */ + ID3_TAG_OPTION_CRC = 0x0004, /* use CRC */ + + ID3_TAG_OPTION_APPENDEDTAG = 0x0010, /* tag will be appended */ + ID3_TAG_OPTION_FILEALTERED = 0x0020, /* audio data was altered */ + + ID3_TAG_OPTION_ID3V1 = 0x0100 /* render ID3v1/ID3v1.1 tag */ +}; + +struct id3_frame { + char id[5]; + char const *description; + unsigned int refcount; + int flags; + int group_id; + int encryption_method; + id3_byte_t *encoded; + id3_length_t encoded_length; + id3_length_t decoded_length; + unsigned int nfields; + union id3_field *fields; +}; + +enum { + /* frame status flags */ + ID3_FRAME_FLAG_TAGALTERPRESERVATION = 0x4000, + ID3_FRAME_FLAG_FILEALTERPRESERVATION = 0x2000, + ID3_FRAME_FLAG_READONLY = 0x1000, + + ID3_FRAME_FLAG_STATUSFLAGS = 0xff00, + + /* frame format flags */ + ID3_FRAME_FLAG_GROUPINGIDENTITY = 0x0040, + ID3_FRAME_FLAG_COMPRESSION = 0x0008, + ID3_FRAME_FLAG_ENCRYPTION = 0x0004, + ID3_FRAME_FLAG_UNSYNCHRONISATION = 0x0002, + ID3_FRAME_FLAG_DATALENGTHINDICATOR = 0x0001, + + ID3_FRAME_FLAG_FORMATFLAGS = 0x00ff, + + ID3_FRAME_FLAG_KNOWNFLAGS = 0x704f +}; + +enum id3_field_type { + ID3_FIELD_TYPE_TEXTENCODING, + ID3_FIELD_TYPE_LATIN1, + ID3_FIELD_TYPE_LATIN1FULL, + ID3_FIELD_TYPE_LATIN1LIST, + ID3_FIELD_TYPE_STRING, + ID3_FIELD_TYPE_STRINGFULL, + ID3_FIELD_TYPE_STRINGLIST, + ID3_FIELD_TYPE_LANGUAGE, + ID3_FIELD_TYPE_FRAMEID, + ID3_FIELD_TYPE_DATE, + ID3_FIELD_TYPE_INT8, + ID3_FIELD_TYPE_INT16, + ID3_FIELD_TYPE_INT24, + ID3_FIELD_TYPE_INT32, + ID3_FIELD_TYPE_INT32PLUS, + ID3_FIELD_TYPE_BINARYDATA +}; + +enum id3_field_textencoding { + ID3_FIELD_TEXTENCODING_ISO_8859_1 = 0x00, + ID3_FIELD_TEXTENCODING_UTF_16 = 0x01, + ID3_FIELD_TEXTENCODING_UTF_16BE = 0x02, + ID3_FIELD_TEXTENCODING_UTF_8 = 0x03 +}; + +union id3_field { + enum id3_field_type type; + struct { + enum id3_field_type type; + signed long value; + } number; + struct { + enum id3_field_type type; + id3_latin1_t *ptr; + } latin1; + struct { + enum id3_field_type type; + unsigned int nstrings; + id3_latin1_t **strings; + } latin1list; + struct { + enum id3_field_type type; + id3_ucs4_t *ptr; + } string; + struct { + enum id3_field_type type; + unsigned int nstrings; + id3_ucs4_t **strings; + } stringlist; + struct { + enum id3_field_type type; + char value[9]; + } immediate; + struct { + enum id3_field_type type; + id3_byte_t *data; + id3_length_t length; + } binary; +}; + +/* file interface */ + +enum id3_file_mode { + ID3_FILE_MODE_READONLY = 0, + ID3_FILE_MODE_READWRITE +}; + +struct id3_file *id3_file_open(char const *, enum id3_file_mode); +struct id3_file *id3_file_fdopen(int, enum id3_file_mode); +int id3_file_close(struct id3_file *); + +struct id3_tag *id3_file_tag(struct id3_file const *); + +int id3_file_update(struct id3_file *); + +/* tag interface */ + +struct id3_tag *id3_tag_new(void); +void id3_tag_delete(struct id3_tag *); + +unsigned int id3_tag_version(struct id3_tag const *); + +int id3_tag_options(struct id3_tag *, int, int); +void id3_tag_setlength(struct id3_tag *, id3_length_t); + +void id3_tag_clearframes(struct id3_tag *); + +int id3_tag_attachframe(struct id3_tag *, struct id3_frame *); +int id3_tag_detachframe(struct id3_tag *, struct id3_frame *); + +struct id3_frame *id3_tag_findframe(struct id3_tag const *, + char const *, unsigned int); + +signed long id3_tag_query(id3_byte_t const *, id3_length_t); + +struct id3_tag *id3_tag_parse(id3_byte_t const *, id3_length_t); +id3_length_t id3_tag_render(struct id3_tag const *, id3_byte_t *); + +/* frame interface */ + +struct id3_frame *id3_frame_new(char const *); +void id3_frame_delete(struct id3_frame *); + +union id3_field *id3_frame_field(struct id3_frame const *, unsigned int); + +/* field interface */ + +enum id3_field_type id3_field_type(union id3_field const *); + +int id3_field_setint(union id3_field *, signed long); +int id3_field_settextencoding(union id3_field *, enum id3_field_textencoding); +int id3_field_setstrings(union id3_field *, unsigned int, id3_ucs4_t **); +int id3_field_addstring(union id3_field *, id3_ucs4_t const *); +int id3_field_setlanguage(union id3_field *, char const *); +int id3_field_setlatin1(union id3_field *, id3_latin1_t const *); +int id3_field_setfulllatin1(union id3_field *, id3_latin1_t const *); +int id3_field_setstring(union id3_field *, id3_ucs4_t const *); +int id3_field_setfullstring(union id3_field *, id3_ucs4_t const *); +int id3_field_setframeid(union id3_field *, char const *); +int id3_field_setbinarydata(union id3_field *, + id3_byte_t const *, id3_length_t); + +signed long id3_field_getint(union id3_field const *); +enum id3_field_textencoding id3_field_gettextencoding(union id3_field const *); +id3_latin1_t const *id3_field_getlatin1(union id3_field const *); +id3_latin1_t const *id3_field_getfulllatin1(union id3_field const *); +id3_ucs4_t const *id3_field_getstring(union id3_field const *); +id3_ucs4_t const *id3_field_getfullstring(union id3_field const *); +unsigned int id3_field_getnstrings(union id3_field const *); +id3_ucs4_t const *id3_field_getstrings(union id3_field const *, + unsigned int); +char const *id3_field_getframeid(union id3_field const *); +id3_byte_t const *id3_field_getbinarydata(union id3_field const *, + id3_length_t *); + +/* genre interface */ + +id3_ucs4_t const *id3_genre_index(unsigned int); +id3_ucs4_t const *id3_genre_name(id3_ucs4_t const *); +int id3_genre_number(id3_ucs4_t const *); + +/* ucs4 interface */ + +id3_latin1_t *id3_ucs4_latin1duplicate(id3_ucs4_t const *); +id3_utf16_t *id3_ucs4_utf16duplicate(id3_ucs4_t const *); +id3_utf8_t *id3_ucs4_utf8duplicate(id3_ucs4_t const *); + +void id3_ucs4_putnumber(id3_ucs4_t *, unsigned long); +unsigned long id3_ucs4_getnumber(id3_ucs4_t const *); + +/* latin1/utf16/utf8 interfaces */ + +id3_ucs4_t *id3_latin1_ucs4duplicate(id3_latin1_t const *); +id3_ucs4_t *id3_utf16_ucs4duplicate(id3_utf16_t const *); +id3_ucs4_t *id3_utf8_ucs4duplicate(id3_utf8_t const *); + +/* version interface */ + +# define ID3_VERSION_MAJOR 0 +# define ID3_VERSION_MINOR 15 +# define ID3_VERSION_PATCH 1 +# define ID3_VERSION_EXTRA " (beta)" + +# define ID3_VERSION_STRINGIZE(str) #str +# define ID3_VERSION_STRING(num) ID3_VERSION_STRINGIZE(num) + +# define ID3_VERSION ID3_VERSION_STRING(ID3_VERSION_MAJOR) "." \ + ID3_VERSION_STRING(ID3_VERSION_MINOR) "." \ + ID3_VERSION_STRING(ID3_VERSION_PATCH) \ + ID3_VERSION_EXTRA + +# define ID3_PUBLISHYEAR "2000-2004" +# define ID3_AUTHOR "Underbit Technologies, Inc." +# define ID3_EMAIL "info@underbit.com" + +extern char const id3_version[]; +extern char const id3_copyright[]; +extern char const id3_author[]; +extern char const id3_build[]; + +# ifdef __cplusplus +} +# endif + +# endif diff --git a/ThirdParty/libid3tag/lib/libid3tag.a b/ThirdParty/libid3tag/lib/libid3tag.a new file mode 100644 index 0000000000000000000000000000000000000000..040ae74ddddf8aa7d6e409c502b4534cfe438644 GIT binary patch literal 238872 zcmeFaeSB5bl|Fs~Aq0%MsHkW~FO@2&5yFdtf+Uc@xtc&qf}qtVF}aXvNMdrYptUtL zpt;0Y+Oe(EcBb@o?Aw&K7Ab8th=t%-i`I4+ZEHkpq0tuWTR=;G&)WN0H|L(*%Z;7y z{66!?>`zXfyY^ap?X_RdIs5%QaeU_^j^m8TaGcS=k+`Ni8M~_FH~eyd4(KgT#!DUI zH)&pVOHJKXW6#f@He-5l(B)q?YxZSxFPk%CRxmhwdOjGIoj-m0WwYQn^YU49taR1b z%F0X2uPZGoUK}i6w!EUaNTMjnl>d%%DAz_RxE&Tv_@(3Y5YHt43)zn2UZ3F{LzuSJ zjuRMVaT4(gVi~cX_(|gZ#BUM1iN7KC5wo(a-ZO|766X?^6YGc@h+iOnm$;jFfcP45 zB+@1JpG$majN?4;l?-R}Sc?;g7ZPU^bCLcz^D>+uaR#x7xPn+qj1uo5UW)jReA#iX zCRP#G6YnK{jrcrp`fHB!D)BwyY*dg5=Q_?};&sGkVh8bGi9aCr5DyUhi0=|l8DaH) zkoY`mWpJ_Myha>>au@m(;`zkc#1Qd1VA%@CX&`=*_!;6ih>sATA^wp#3guDOnBkmG zyok7fxQtjyj1cc3-cS4n@gd@F;;)IX5ND!(_nhK53yIefQALdZ9mM;I-y-fLK1KXJ z@onN*Rztc^A|)Ynu;!XCfy+UAH?W=%NK7+rf) zn6Vi(4b_qQ#{6WVEvL2q4zJ3FaO0XtohOdw=un-$Fww~B{L7NXU>HM%=cJIGGbn0p z^W*_NYQr^6wX`?EtER4+sg8TMhFj{Z8{)}R|HOQxZ@6)YUh6ePFY?&t4nuk~j9$pH z1d-&13`wjMmp^ADXDhvlHd#uaLEF^V7nAk&rp@c)4<1jM74jy``oz;^$)u4DrpgK> zPt+WLn$#n~Ch;5^$(%}Gg4Dwo)|;F;mA=%>sq`jhPGz!a5|T2fGD%9Bt6N&bl{eKl zR=4mrv_AD~*M@8BE(-GeSHDF7Eq+Qy0$i4>ovr~h#N=0Bx0=z2CuFUH`G=_rB~8=uC8yaZ{=gg z`k=UMM%GqGs%<938LL~W*M{r);2iXgHZ*wCkiZxkB_fDtU0gJ2_(mJJ)n`RgmB~dT z;q?(yOXGQFV??T12`p`j)EkY>TCY!Qs(b+>Nxq10(tIIfXd=My*yoRQxTcXW=-=>>d zn;OFUhBTRDG)b&}*=XY}jZN$Lz8w^ewlJ=mrnSx0k;>Ke>op$wc%xnuZfprx*5fu@ zZ}nS`MkFDD_Pmo#RB}(WgjaiP!jsNtx%l{GOfh%^HHO!DNpEeEtg1|?O~&Uoybx>k zPO53C!5elho`f_v8mVtEJ}u!^)_&t9FQB!}Lp-C6a=+KLG~r(MYDnTAsa}(iXhTOL z)ire{Lu@LGm)Y)Zuxc!gy0i&;)cxw%Ysb-T%0QFWK{MPz7sIKNA3pU=C|*?&Cx`q{eI7=e=QqOFpu{3^uT=Wf9?>Uh zOXVhmF;18{Xsl=CIAZq%x$r~6tpd&go`kCmm)8mZM7q7Q{@m|WZW6h-rQJg?7IIq5ObyGov0QrtoZNuNWSBs)C5 zo{hKvlW>RF&X9yf{m!4k8Y{r@o0Ro?=JdG~uNo`OGOgUn>a{7*C7rV=}H}_gypMKMlOCxE<@DE7^T_GWc?_sPJp}ZiO5Bqr11ee_&w1ZNGDLw&Qjc zWJlk0clD3FarX(B?m+i2`JDlG)4s?hZu{Qs{BC!{F2_Ms8;(kH-S+(s6uA%q7h=&D zK=zH=A(=+?Hh9Da-zf|PZUeNG?36kws!$19uG%TtYZPZVEz@^O{u?Ujw0v+UO4CwK zX3O~eXWVyShSL_f|1q~~{AZ1tjQt)nKJPc9@Y-@W_O82kFEi>&$*8+bMh%Q~2lgI< zIwus{<8JDXoKzBf$Bq5Lc$LJCe5CNBHYv~%iXC@5&vZ9E6Uh&CEj9V^n9Yx43Hfn~ z+rA6=@eJ~#YaX&`?})xpkBXT_sT3z#>|5LwJjg+32zt8O)f07#;pRES})op(~`y(v7_E)F7 zos#vA+v&Km;{N=7p&h?`(mFSGB=kdI-09VwdH6D#W4?+)y8+mDZN zW4~SZoLf`W^(3sC?#5soD#^gUXrH@R9zReT*L`Jie>4kGPrq@uvCh<7RGqHE{cd~z zm~|hr^~deXY{OLug{HW>J`6ULwjUeY@>1W3eAH=CoWxDEep3Gu9Q~c3^&P^WPw7C%DoJ^FH%ly zHBRkY)Sh`Co@|ni9HjeU%1L<|mqczBjmKwf_sK zXDjU*m&x{ewryL(BudznrECB9G9gnKY8#Bww26k{w*Tu8Kb~LCD)a*;z_t^${}T+f zW~TkmCceA`+U^{kA(%&Ivm)w@tNowp0=U3EMo_x0oFFhM)SrYF<2V6r{?bqY&T8I9%&Au zDSX5eI=?%x9ahA0_DJ^u{e~mfl)!d)W_i008;%b^7ukf<$cX1yExI42n_m9JM0a2}x*eg|d7G~p=*Zr< zFLIJ((!lP}z>{|!-s3p=17Ih~b=#{rEx)@EnJc}4-OSv-qC;b%K@0hLH-?_Z4TT>q ztW0Pt%NP;dkUO9L@{Uf*zsUMKr>Ed+`wG+6P@XYFzm9yRYJdKa`cv5_?>}+!-i8~Z z|9R_g+M3Du?~pI!LU2RE2kFE2@euxe`bZx?S@<&YuS>!I7WvX9J>{g#A^OMLa4Fl* z4%=Z`PRZJ_(k4B^_8-e}NPA7%f6{(_j&dx|q;g{GUdl$J%+G? zGR`Tug4hOs{AE=U3y49YF!7hw3wgnA;#OiCv5Htg3=#n*9KxD*tv(;LU99(WhkQI*e}9m)-j7wJ0mezam+(O`3{Kj|LhJq6N?Pk*59tU{ z+(BFnYUo@LUfQ;U*`OP2`O+gkGfz4`kx$w-3I}KV>1|g@4Dt51hbcMOs*MNr&Ht<5 z`&dCDEoo1qc6CdbQ)1MWq$#WGI{x8y>&zLt>=EPOvQ&fv;s4!sYgM)>Hb>i;O8=wn z*7Hpx73;iM38s&A95nHgj)R}5-8zMOs;H+Q?Q6NE*F&GQ72$A454v>i)(*DM4^ZDK zr28Lfx9&&$c%C?0VT9a!$=a>rCs%@jpoin6NfvlGkl(!;gUeUPp4f2E>35tB$D9L> z6U_@eyl=zN0o>c`J`{L(o)wmb0fvJv9b z_XFFG#EAHDw1`(@M0|ua1xH{+{OSILc362C+F+70@aO$PYKI{>27FFQ?2Qt%(KrlT z+BI*9+b(0MAIXmX$uz$(N@^QXk`gmC{I-lRdxmto&RG;{zsf1?x(#9Cqq{|chesF1 zx<4ezoo`aRz>W161|IGSJX|({sXi_C^oAED%_bux(UGYb^BiHk5wI|}AH(Lzs>q%` zwDkImVvhwLeq=6#a`4?j`3p?3hK9@^DAcEgM2R~H)b8y=Hq)=#9k+}IiJ)PBj6 zj2>ngTH0tsuN$>Gc6r}iSEzB$x{JH+h7r!LLt}p;Y9{rZEU~VRjh^(>hNr}?)vpV^0{u=v_I& z%nwknojK^5x6*A#a~nN|Z`!u~6v_VBk@jOFqSEN@$Ot^#z3WhR-zXs_$-lx3w|(@8 z8;z0L;ty=kZa+REniJSwma*$#HgdUdY~bOi<>z)cW6aZ%*BG!4JiNx^Oiu2#@JE!mwlZ|NWpMpsCWMEz(u%|EsL+ztSxSi*^o1PDB{CCM{m|JLbVgp{~ z$l%P_fxhckqhsNU2Xdk`cA#id_sNo*(s#JR-LPA7#@*F7HuhYR=1$dvBpD z*bs{CEr}g++k20@T{$C*H@zLHE{Uz}abuh z{#&7x(HIZ|D44#{yIw)*ln;#gTPSwU4@EE zpCW^XNWD7zJ99JQmpU0YgyU1)67rw^&Uw~r2>*79ei&GtAzKa-owmO&hIg|0g|{gF zfW;xy6t^iE@Wd(^s2;FPtv$}~}iEYFxVgWHo1eox0-%0;N??35B z3$6FtTGCp7caYZmN$Q!%>-{Hd4}{kHlez^@V@ZEs$NKuaI@Z_Q)3H8-9UTql>*r7`v72K(Q}$;p z+uNN{<#q{uyf^dy$KhvT;SUDk;Y@#KPO5c1(hcaA3=ZOgI}6twZ-yJ+!GA}j;SJYI z8KwWx{>--QL4EQ_-H*ngVu+O=h@?SD+cAOub36Whj@u0Jyl;l+8=$w#{J zht4|lga0N2z3XsfTu10O#4kyd$S2_H04@ESRT!M_1&VEDxV%pMohiJJuaNZ}ZBGwu9Ym$J(M;*YftRa|55< z6_FJw9Z$F!`}=++f=Akp^+qwMyDlU4H_Fc3ymAD8PHB5F5ZL~-yX#<1`zt|r*DG0A z)iLI`fzLh`*mxOYmVVLUJp2$<{cXpNL`xD>T{Wl*T1O6Q9c{Iq+WyLPXw4ba+KY5U z>&V0Zi65f%y|!ch(elBRxPvO^52~E8d1WTGUkKH)-?qOp5{f6ZADjc@F=612`J1u2 z&FatWyF-*8Z#(v0VAF0ih~g0hHa%oWWtGg?6}I;- z2#wia63Ys0=pVo{Cvf-oQNs?)Xov*tZ##ML0>bnD7KH$TrnB-O`HjarDJxL#BxKnI~llJhWZYN8RL6xNBaYt+EH^7VvYJ@4f|qU0lGZ1 zD4uJ@lSf)BP%9;|rw&??Ln}hNUd)0eg%Btm^F&GP44D}kI1gFyUBrG^1|%g5j<+2} zwKcC%PqCmfg6}hGozJK>KBHEG{>Z4J*ncsrmQ2pDMxyG9krM`uJay2>92yxyk-^Zy z_LpGquS;U*hNRy)Fmm0Mn-}3>wEOUn{x0`Jw@$ptxIo4MECI9K`Xf8!aocxz2O3UJ z-@zU7qUw8ohYU0IJu6Q+EcLo;-N^+Vmz%Et;cHPKGJ1eYv2GI9h`GBCW#x2tj4o(< zWkEsPQ*8wu>oSby!pnhWKK?R2kN#7GYC2VTV7X5^I3#ZQGgb0*8&Xec&*az{pJV2|5X z{3~IO+ngQh91mU#c(W#VjFryvfXs>hPq3V!c682^WJww~U5a|qHxemq|M;^`+4 z5bDf?aW0I@nY;&S8`v|n8^7gi2-tyZEw1IbF2{8?E>mD9n*MDX?)0xt=K6*$_sXn0 z#wFe;#VCx7LcTIsA?8iSute=-GcLiIV5AKr9sNV5f}ccD!rA}kr~OC&l=HxUUf1-G0oS~3%Cz^MaafZt% z$MPEz?N?d5_yOSq-P$b+@{F8960wr7lP<{r9LI~Xpdjz|QTZwJNDq;aK zNCcR0{dhl5fF<3arQfgj=M2(%KdvFI_51sz^?s9bk??wd%33F(^?q7H8ekk)hOhVI z$4Tq`wTiUf2bd%<^7?%F7HH9-?rHq+((!Q!|8{8aD1@%d8=P51e?P^3ZQl?C_EpEX z-!stA0f^+AuTM1mpcZ+|A2O9{lKg(x0nVH=V~!bq!1#mN4VYp+Rho6<1T>5PhPudo0em076llfI930;^tiI5bm2O|rILR2eHde9%Bu*N{`*E}5J{6asGTnH_7PW_=x{;6n$auzdL@whP zqDIgKEziF77}RKntuk(*&wfdQTv9G#v*7!6(ta6us{MFoYcuAAHfMDAk9Gr(bhjTL zx$Z`{>+~C;&#jsDLpS5M1FxVHm(A60f$d}5F_`JW@Wemp#|@b`88}=CAsS^Sk?&V#*6J)$JUezpqbbw6LoLEA!CZ9OLeKae~`b zChPRD`VTga6KlJ!h6g&mr=o9_jlNY}KEoZepZ08p4d21_LtHK4*8NH+Z z_^3z@GAr6(V;!FmYx|1vhkW0?sOBiw<#o3{QCAR9Eo0rF*9y!yuVR~&W2eXdAy`^ z8hRAyVZ;s^G0Y)i6I996J~VSffui5JT_3YcCquEvrR958NeuJye{o~a8S%nBnddmB z?LINoK7a|#=LbR==a$5J%_7vnX*c+6&Tcz8Hj;()u%r5Zy~hcn*U{G}Iapqn-`##} zz$Uz^>Grw3j%vGkp0`n<8nEH%o&rsty{GHr1;w#)6rPOxKRBco*j z?3lij-Mtw>(SqG!eJ^o6?CLEKq5ep{{wc0~xX=TMED#Iq5R>VB9e25gQ!)bS%|)lr zEKsoNHHquDi8D((AC>3TVO+K{bj|;Q#M?FdD+W&fD&Xe4>y5#twsg&Z&dQcQPob*`A<-M~dJG zfoPbqL1<1wkVFOX`7RhQuFd>UY=Vf_7VDpqAC&Te>#{(~67v6h^!aWI{&jqRNTDR_ zkNlPVTfk4&pK9PsXDRr}`fFx4CU}!@!40ub&I}WmivM03{zSg-Q-!}O4L{wyZ5jI^ zZN^Ic({?`T$-p99JBA_G0J$LNCs|%e^~v1fCd#qghR9t48JV{o!+waApK)s6)rs?% zV&|*4nkX;jX`IS?_HT_xDLqa(DOclkUe?p^n+G{vZ_E52VyDDg3%Qr5??iI(L?0>dJRqi^@?<|fnrwOBK_nt4 zo0%otoxoFoD}XR5uM7y$JXs%$pLx=U#$Vo@wv_X#Ed4*WFRl&ojDscP5Rc#uFh+19 zXsm_J)aOMOX?;E{BdyPanWXjpKLEWFUhj9XO@B|HPx2O#{-iz+FD4BzP6mU8ug^ni z^9rrcKe^Y04&oB`0bD}s^LZg?vV`q?%15vF(Kq?%{XY5%A1!TiuYTLXv#&ZmWovDC zZH*p`XE}o>Vhz3&D@CjhC&E=$R=1+h8L4cE@Z1$EppAF@pF76>Y?Cl>N=si%E_O4A-Cy2{hk`iK zCn|f;;hQ2J@3X(GdiF?IxS$y0aWpsXQ(4(i9|^ZqH{@St{QUjzW+nvBFyoFuA5Aqh zo_Pr_UH`j{`nGD`X50R9HXfSz6PI9Oy8gGOPxtk0MY-Tn7I(c}YCycm5l?F3s7^zsrt(9he0eqMrS zmW#O>zgHsd)4X}HReUSDnwNKE#I*B#2xggnNo+rR%y-H(RjU~Of%apgqV;wv?3~Gg zlFrc~+f^;>z^Y}Le>;8hT}ga%llqSK`C?M-uEE|ab^^w2k__&;dZ7JiW^1(=v#R~* z$aOe0l3A%qD2*rLY%gJHLX>RA0C9%JmJS)kVX=bH{EX1wA`egK+k0UJR z;{vGBC4u7Ox(XFN=fd{)q!;XzLis77&Z|lw%f2%Dj^0gytZ7)Q+9`|Dq)M%uh=G*Y zGZ{1PzZh>>>%8mW$VY>cj7`scVsc5>$8dVc(Xnoz=vQv+B#{@H_Q(3M!dI4= z|5xA0Q0xViZ^_i7pg%Dk%Y)r_FdT3Wq+aUB@iWNQ$ME|ge$Uc(Y883veH8!-@ zJW<`QABzQ;yvu*a6s6l~9$#+f828H3-soxWhQ}q1+*Dvh;a4(bL|{>Zzz?jz5-adS5m=ER@DnR=ffd*d*!d9t z88f8|Zr_)cgZ*m0Kx>@$)xq|t(s%k`-#oE5ZoBguFGdbhju@DJKLrzx1hwP)K@2O* zoQ}k(3-X7e`affTprjHV{Z0E3oFV*b`n1?!L-;S#X9oDm=10%qTdo59Wb=zRlV6%b ze-HW6|4gR;P4Z=hbh7b)qkKtDN}>O3zT{K!uS~f0b^Sd%0a6jeZE96zKWN=-&j0fDBre7}h$#}rc z!;q8lfSO^*$#}pG!;s5F9bQ2>){`Om@+H(GJb3fujCzQl-bvg@yq)}8N#9JYA+937 zjI^AEFM1XdFDHK*=_$lX#52gxB|VxbjbzdD7Va|{7m#rWc;!6{M3ZvB_sn|$w1m42cq-&p0#64$7bxQkc|h?RLH}PN zuc0#UMj*WMoq;O~EY|M0VjM8+3nshHq*K+8CRK8K1(>vN}vv_5Ad zr1iPdNm`#HNV^#a(C6-(q-`>B-;&nnwxEm~=ySN1e0^?iA+66@o!8dqvV0>z!t3*= z2=XA~Zn=*>4@@tg`xN5xU-!w2tXE#j%S->*M^Ek^IbK)$$Z^Xkc@Ar9X$i%G!nhqU# zuoK)^$4gYtCffC58Q}9cddGcaeB(st`|f0Tz1Ob5L;OT8-FQhi z^>uTdK>_sPdG7RFj5dZ3N{n-Mhr3>BilGmED0;mSp$6wRcITM5LU)-_fJ**Z8q&)heg& znLP+(iB)~S*s~-@giWBnhfP1|+h}9z^>fefr||nfarNSQ&Ev1KG6yUd`^V@U2R3ei zE$G{JjvnY~@6TO#E>aK`^E3sa&QD;q>OjQKI~U4?@H?_e;IJg3u>BL6PULs_&xbk} zXS<#A4jA*W-n+1Kai%+Wcgvsp9}OCjLa|@Ev0sN`Z)3HwiMJ3-Zn01m3yK4QdnzD-ENB#{8IMAIV&I_J zXWfS6BI%FFJ!FD~Vnvg)3)|;S#xCD;Azm0Ob`GD4ANkK<+zjUjKw7u<_nleTxdLYk z$eQK*vA-bBkXiPrM$=(AoY2P!7)~g5!{l*?e+qWtqsWMX!`sYH*n#1N=L7eB1!QUG zrJ;=9+u-c`TVX^H*mxHtFgz3Lyb~68MkZ%sjBVE|BW+=cfGp;*>FF$)oQZYQg|Ujs zSov{IPf4sVbn&^8J)54t>&u5{Cq{jNgzL=0j_V1s(b`6dbGiZ>$A}=(Oq2Ev#`QO` z`$WdP1cBtnNK~CS?suo+#I5J=`uyRqLz2mCe|Kcylb@H6?T=?7(nsX^(KjQ`&20I& za^z0xn-J$@x6~*n8ysB=(sy-SVnj=!XhhLEeHX=jN48uXk7s<`H?!q*@s&6RYYDQi zD8_{ogPXCrn!fL4BltyZka&XEGz{XrfZuX`8^7nE)UU5`x~=PM_Rk6^H?}zYWk&y#1rfEUHFCj{gc=W=EkBuvC?M;dPArt*(I^P zu_v(J!?TCn-1dfPOBcJ1lCwjd6_dw7K@xspr`$QXT{IGN?!w_oFhf|GQX{3QoBur4 z#&6n(&1#|y&zD)xVcq}S-GR?^XZHlQV`tD_lXab?&z5u+_k=QV&>NmS&>)YVJ$=im zEwUH|kf7@7&RNIA{(+v*+`UwXs_s`88rW-8K&a(09TQDV5VlT9eZ$!UubA1%zM#j$ z)U<%dLn>He_`&>y5_=ZKIq_^Ub@=2sDe97hHhHk+JE#N8clOu zM0EO)D9`+F>aX$W&y1oVd`Y?#Npd^ow30}U3^GS1SZH}(|AUJ2p7g$JxD2zhzlgjY#X zEc|S7{>!+@uj#yVzJ2aq9m~8@_~*&+c;Ud4rE`x*UvxW5u}t*3?9Sq6V}+TJ?>k>~ zkGs0_&MWPK<&f^jA(E^#)++nx_B;azPY>tXIn=DRo?^<1ei#!2@wp9MR43-lk(G6w zAIt7+^}T~5XGn$XyhdKWv2r|7=JlZV_2Ch04+t4vJ!CG9mI904H8LABF`j4b{Uf8N zVha-9?l0)U@ZR^6S=g7Po}<>sODQ`#*XXy!fMi`1&#}!}9g8vxG5goCXcS;X$D%C2 z$c{y$_bkfBfhmJ8!l4nFnqltaT8ZrEwn_w|MVQF()O!@QB6jxw~h|GEI3D zV@`_mJh2+&VC%Tz{MU-)a2UCf<1b*7$aqTS@o{En01rHOudI{AB;Ck$n4Mgb?P*Sm z5Fdsg}oG8y7EW}+VHzcOA9!9Uj4HWMhvTk-D0?`p((R)*iexQ9pCJGJF$>RwV zNTy?&L?;AC4NEWwt4L__h;3hp04@7z{?PGQ!+$}_W4tQ zoAVPUj`moA?^=QHiNGxh0E`Y=TFVG&v86PaN} zWT+P+veRd$3cbsIaE`b4D6V9RPNvPMKIeIj*MWRVqV0kyN)CsJ%hf>xwbM4~Dp zGq3i;c;>5qc08}fu^(x}_{SLA=7V>Gq*=!0k+)-xR+p^iHm9w~sO?}7 zj1kM~?*xy8&+8>{I7ph{=lM=xfU}M7M+F=YYxPvtDTobNj@t4RTHJprJCgZo0-wJ-R`S!QTuS&tc zHX97Mb-0p+|0VfVDfoF~z<`tIRkHN`o%{{pC)5844DX7o!j+8w2lDGv@R!JdFP!L4 z7Qd`#6o+AYaV#xM$p6>KmvLgaA^fp9mT|F#A^h2C_*LXjO%XnphW|tIIeb1O{wK+w zl|sKRZcLTFi6`5DZi?_>@+YO>-<^j4Z{(k!BK#9+_^+kmkK;nnRQhM8;a{7Ee|sAK zm(uVbO~XH!hCd3E^5RmZZ%P{eHEH;bY51Q`!+$6Z|3B04kEP*H9CzaM7o_3Wq~YJ4 zhX1WJ{3p}!|C)w>D(4eZl`qy{7?a*qUr=s8)y3mYl0V~-=V6)rgWKSj_ryOBa*t51>I8DNkb9eQ z@}4!$mmab6UdUZ8i*S?0>nnFD$DcvIgYta;4wj>h#jJ~e8FHH_$M;lHxtx)Xa|h-4 zK29n(3vwSHhMep@YNH(A&q?)dgxrQ<$jP|GCn?AGby9t@7ArzIzPFRg$zCV5??m|` zd(ooQ$M<+reX_Uhvy_{}{Eyc&PkBTjci%ANWDVRslso?f`W}az=F5rXUWJ^N+ll1H zV{B~wFyfsDxz=IG)k3au7;^VQu6`JD4?(VW7;?XZT;(w2GSNr4ei(9>KyJk_48IPXFr9_ObA ziDwaW$iRL1H>-!+ezO^j1q4qzl!vA#O1^#pe1QD>NZ&)0^LQn`DEYULt|i_`Tu#1Ax{!DUaT@s_ zB7H9LOkxiCBS^oCeyPO!Ch;&(()R-C1H`9^d&vJ8=^qpSo%l8KzexIiB4!RuJf9^0 z4$`f}24Xev9K?SE5POsJN`YvDOgsySJ*9c?<(Tzyd9MQ(WBqmy@J#ssI}l6z^1ep@ zO+Z=KeFy0qfartdl>#Nb`9LfU%=;keEFk&{d51BMf?GT9aUiOE-lITNiM)RSy1-8Y zmjGLU=K>c2k(GJ5q(=bff_@I;Juo@%ap2X!?*p#^eibO;?f@dnyfwf%z#?D>coDD| z_(7ng@8}qNj@s{lBKH*W^FWdN7*On~0gB$KKm^UpBL8(f^TdB25MFuT1WLF&=)W9@ zzr1PqcLnfl`u`2ja{T4}3jf6a-+-d$E+AfOdGd}C`f?y%|9KaZz6VS+fAT&FTnH=z z76PAvP!X^lxCl5CSO7eY{%<0X_`AT7z(Sy;_dMVN-~o7IO?F->Fa*2=conc4g(>tu z1Lp(foVF{0R{@3pA^OWXa-v7R115IMEEiaLR|D~vcRBt^d~)8t;NQ^>oC^F4Q0Rzl z7v^n6dLWY3Myw(h5Q9XA*o*Xud^d3`v5io}m)W1)52Pxi?Ot>b)BUxn6jy#b)4=y)TiTe^8E(k z>o}b3pAkAf?neDO&h|snI$q4o!|OQMYKGTwudkBU zajw0zPsg=JGQ5ss$$2GWzm8kUc^5+KIMr*E*KsL4lbu}Hr0c^kVthI-bvf+OpCmZqyLJ09ru=LWZ~;L{lt3>HC8gb&eOpT?7 zTJF!d`xN+IdY6wb^wEnD(knl~$Co7*UcRi`^wMEp_~|}c_J4Wh|Jld?kx&1>`Si=; z0&jTv?WJXs-%H=<;&C$iW$I9F}<+Qeg(ncRfkH%eOxGpX(g0UbKS>hXp3$$jHsv3s{77_L3qrw zT2pM)oUQkSj7RPji^uKtgrsM#+@k{0$r*za=0;k#8%0{;yR>Y!+jRQkN|^mljBO~3 zs^hz7vHIZK)8=9Vv?ugx;MfWc#cS>WKIkuUKj0F{Fu$F!j((>PJ? z2_iX`;44HWcE{J(Vn#iFmQG99e)ioH68dZ_zB!o!VWo9i*2$+O#l840! z+%pyr0pMFG+)XX5!?x_zAb!TKNrcB2!IBsHPn}BOQ;=cqq=OV|EdWCTDeVZS`Z@Hw7T#PG8vf+DT z=h?v_=O^D5*uG>WmQ_li!1khSeE4SNh`{#oV{rfxSRiL*=53jha@>8MLR9FA6+ihc^;}S8l@BiyKgJPdEHQ4Q=<~{G*kt)DHAyZ>ujfY?o036U7R^B-xKJ(*&_oZC!95QR`CbVJU3(1*sI1n z=bUrKY12lI^$7hh{<)&@md2)ajX`;R2J0JFH?^#-j?_0b2F=^tQTB@ECBcUJ##`uJ zyuKO7QmhR(MyeZpk~ZA3n_8P1!jZ7bFI}|UDQ>K3xxLvaM?0aesW#XWUQ>_PqKVKc zTUJ);lr=R+8>&S$4ykZfE?QRVENVi>simeKF?sBB%8QGyamvGCHEBh8@p7jk+_JVc z*t9wrZ4En1ikB^PmV_JSct}~_UESOY-H~u@u<53o!!;47g6f-_aP)=)V!1amn-KWY zgvLm#gjfoh#t2d#G##+AMN2E3vWDv0gEdW2__rV(<>g36YrRRS92r*E($rYr>dn?- zC~}H#Gg|7`q8p0PwPENlE1uyjtZuBG*3?o{7nZ!4R$Wumw6?jr(PXz%eqF^Pr#!9{ ziHTrDp-ICRFI^=03}v-AW!$MKTDII-)>6Nwz7cuQ5^e}rw}yiesB)IATw3fbTZi0f zt*dWlITcFy!f0)MlVli63tEboTCHNK30+ZMUhI@Nt&Xg#ZV6ATt8S^4A3<0iMC%i6 z)-|nC2DL#{sKK@M70b()Iw8rW#&9IqQZ4bcMr_73qVb5-l~g3AuHp8U`kHB`akp|= zAriBCb-k$z)h!X!ooT3tQfI?0!FA!Anyc4@9he3k(BB%pDN-M4fDh8@EUs?|2T{|* zEz=t6Yr>7KVKA1LFH2>Q5p^m`ko1ypWxQ$u}g9dZrTjHV36ysW~h zkSK$#O)ZgNQ%f!CL&dViO9#tfHOw$cttel<$O++Ja0+^l$PtqbC?#Y_V=Xci#Z?0h zS~;dV6{W>RPHDKdzS>s3<<~A>=qwN47H+u-k(69F7>UU=ssWLRFDuX zL$Pa(u$d@g@q9EwWy_a2Wi3s$(HazCV^ahfhPvrZK60b*I;X7qc6kVZw+wY2+T`A= zmMY+^T(-P?u(VPXdR^1nur0LGWy_q>rlwky$)anVik9k{TY`a48n~iy@U}$;4A#LQZpg;gnwEO=7(*Hh7Z0Yf+T1r%z=L(M zsA7pzQN0HDA8(xU(2}K2dHos`cN8~_eaJwMC$FrY)~0AnjYm^iaXufi%e?>uR$qzAIx}$&9XODa|@p0wU?kG zudQD%KkzJQis0T^SC6OA+NRoi44~NOROzA;r!?9sw{~N&rUjKe(ux;OE2`E)ycTc; zr`!~-h9`^);)xlJgiQgKNFfhC)hd=1mUyan%G@Y(%HoOh+^g3wTUhQCe|W_Vr})+= zhQavIHkBnI-NCit)>e7il!TUEt}sQ(6MDw5)hZu%U?>8k(AJf!;{NNEb|_s`6tZO< zTvX(>sUlQXf{KHC^)|67+|&%4Z58%^i&<1FS~fimqM_Q_M%Qkb?a9 z%X^I}8n5AC&veT9&Y0%mp#H{dzqT6_I=ku#)PB5rNgF>97w)183zfDYK-}lM?8IfR>c>eDq zJeus!Bjjgr08092$y^rs0b;6n$CE#am@5A+Ab(~meL-u*9P(GD zk-LHXrc`oFRD}Fbr;=m5pCkYKY2+Rv|It)(jQ4T!pChKq=NHKTYbrU~Cu>5*jgmnC zxK!mami!56u$2`AtNcVU3XgLHjd8{=LLh_2ARw|A?3>9XrVXMH;y$$p1qc zxtGW{112zeNW4tPC>cC~leMPeQl;Y*^7Dv8^x5Ff4DxX@gmJ0lT=K6^BUefOy=mk= zP5zgNGDefkeT95ImoAlk-=o~q#8h&>CI9U-a_^FV5+78l^o=9`Y+|bNIFI}b)9AZ| z{43JvTR?tY8hvZYZ%HG!j{N)6$o(_<-$*0(ZSsGTN-k(i`w{YgpGuCE;vo626H`5} z-X{NCR;X0vaX$GAh^fj~)-Q_ta2mO5$zM%O74I$N$I|G#kNoeXk=sW8-ZXMglK=ZO zatF!(OB%U1$UjvESm9Eo_e}C<5>w^#9P-zsk!v7d)~kw3rSBf{|22)=*T~U4hvejqvY%Qt5oR?$N)CnB;pW#mhD_X{@gTjSCOyl zx>Cg(rd%sAmE3yrKS@mWp1z0tucp!WZ{+_hjodEs4-nbBWNr+?@5%p5D!HJQeS`e5 zoG3_@-T?VCh^flsa`MZGsqUjy_nJQlURSL)XKIK!%Jw*PKY2uZ2 z^y2!`$mzVPm3ADNH%@l00M@h{mug>a_e*wGLg$_1`{cO4Qr5>_jAeV3K;+fLYki8N=)J^)~D59w~=Hu`TR{Q$88I2rQmNjDR#fak-%jI>LfV=;FM=^$|& z@PjgqN4g*NO6)lVoCJTVuR`x9c3aHdM*2bG1Hd5UJ4m+?n}L{;&XxOD^sFMfKuihe z&LJ(|7Z!fdV(vK7*~ET4f3UYP_YhFzdWrH~WYD?Yq<0V>1Y!z0_W{ydh;2aZd&q4j zT}NC6#6E~zmvjMfy2ace=?TPaAl5eI_T&8{_8cMh0x@r$yPtFqafij+2T5-wZlQl0 z>Gi}q`mZ8gMl7KJbkb9Z6X>5!+94i6J4EuQ*J9QIVh<2)m)sqsw-L8m%-uq|gSejl z($16gRuRkSUqE^eaSHt>kRC^L=zj$5TG4ZecmOE&^pNf*ZUf?8$=yo&0b+;6-1VfJ ziB&++Q%2e)&H-ZoO70ZWLE<=zxejUhPQ9@Uh#CFd1Elv8yDjE!BmE%p0s424ZX-6+ zzl!uKqD%idq^A>uK(T)u>1<*@UQ|+!hb(6G688f|zMJ$8;)51*A0RE?0he^O(Z88= z9dQ-?UD5@_>GThhoW=N%s(U(EmZwTZvof-$r^pv5x+$ zNS6@{fRf(nq^A%kSj^2P?GTSZSn{pcV%7m-5B+zL-bUO?|1G3Di0gs)%dI0_MJxki zpHprD={dwH7IP<%9!C@q$2gt1RZ0k#>o5=s$&YkT?#AbvL;V>3+PV@H6X>#oPm=_Y=E;SpSf_jr4=W2Y^@$ zlG{PLjo1vtt0lLJ^eUojF?SB>>BJxqkNn(mq_c_rcxmF1n=9wQiG97q{T6e(N$(&& z2*e{W_W{ydh;2YTf^wTl*AZ6%@d(IuNf!{O15sqTLDCb5*+ATyx&3&Fi#bN|GhO#T+qzky!>^`(mSMOM(r zeiC)B3l07@@&$y}b%+MB^84;`*6*%qwLIOf#jzOO(kJqH@e~6eY}R3MI_Mwi0GiQ3bo?T&&^N1PI^xM?8~rt z8m?-rS z>f4G&Zh?5DT_2se{kyWa)AKEE>8# z+RT#=hG6&%2JA*-N%B6GOSe8cTQ*3-b({ZqPoU8!uihSXCYc2ZCZ<~--9vrSo)Fi8 z#x!5$hDKYb&ivrN$v|lX=yz@;GW0W@e#9?Jt#_bvJOQ2v7hfN(bwp&*=8<;l`*ylM zy0D_$?OOVGS*Uz8BXCa)irm;6_|!%ukg#MrGdr+-*$7CcBaUv(lrvz@WXYym^^gDg8tI6eV`>XgC$%+H*cg-0Q*mMxVLb0dJ2Vd~v z*3y^vnyhy_?<#P+q6hSx@b-Ru7`Ps;|NzTA=@|7b~MWhk}>2hF>k z_+)Yal<3V^(v8niEW#IA`=><0I8EIgYaIYNH4-pVyKw|R{QLW|-Mx#Xy@-!pAkOx^ z6HHPNVe|*)ixNMTp(Hua90!%ZV|cLx_9GAGfOJ<9o&S8_?~(DULBA@K|GcQ#-S;yS zOmo1VufO5d2Tju7OZcAce)$T~)Z%Tpw&L1?t1U2flYCbMP-UUaLIJ?tTih+S<3!*) zaj)h-uiurGPjtxcUgS&R&m~LonV^_u08!j~H)pqvn)0nfBvrwvL4Hm!p#Vv1xmzJ@y;X|PtsHpxd+jB)3{ zI8&ILgl)VE5X{ZkUDEYqkwQT{B5ATAFa8($A=_h*4OWW4M)};HDB^cRQ2HYScfW>! z*07s!`>Cys*6T)(`5&=fHw=}U=aoVcY^jhUK;4TKKVWKItavNDAH)$7h#$43d)!at zG2(Wu*oIoYqpvbBZY0Xnlwbn?vr@LmmsNnixj)G>3c94+p?91c+f-+N;tn#E!i{yU zhtE$WHzcO66>W&1!|eoxuWo1lhn(Q9A4}-EF{32*Clr!QR~5znY|<_jB=&pBK*d?+Hu=Ae~ z&MP7(g+N3mJR#C5B7g9S6j+g~t%y{Pov)|}(ChTQDCetqT{UT)_fX!=^l$XZ>%54{ zDXyd3$9(c_q&NEfb$`BwSL~wPr+xCDBmD)R|CdS2c`{xnnI&&N1>jIo~Lm({o4aef&n!Ek6Hsq(A2KZzH|Y=N}_&w~h^3@EQ7l&L=PDH;MbQ z&;RSBAN2Wu&qv$Pj`PD5{@dxl)5m|5^lqPjkB?UUzofs;tEvBQ>HnNBoSbVV?j@i9 zA=0n<{9h;ime2nf>Ek~CksMDLO|-G0S?r_LU&kkuRy>{Z{`>cA`pdaqUUxp}3w{2V zke=@IpG|tM&;KgY3w{1eNMGag*L+b_o60Cx;gi3Pw47(=bvKb-?emv&(8M+Q{3E2- z`}{vndV|mZZql25{+}Z4*Mof*cJBqo792CautL`5%i{cs>%dwJly%Y-i%RV_9(2=X z2ajB(*f%5>sEU$8xt3z7KYm;%JA@XN*(K!_7{I_T98j`pLzaz0ra~5fLlV1Y%+{He zi^@ci2#GJYPGAJUslY;Evs$>K6hUQI2F5w;{v`~oIA(AKaz)Of<*);rR?N;7vEA-( zksUm;jRzYUb4H#u;2N8mq3& z((9GjEMay`n6>Bf593&Jt#UBBCD$rvdGWQ#;^mSSXqDYi6=eu6n;*>5Zuuw6#LZf9 zjMLanUL~>yUl!tnRqmJ}EICfY4zytGW_`5T;i$_R+0=j!Ryfy5J-SZn#dR>+G3QvA z4IyTWhwKxpH0d-uH1e)$v_pGAd?{jvy(P?lv@YXLMlfYxWhO@Q?QY6cdnpG7PPChH zVBp02DJ8-g&cJ}|svH>5eU$?Py0da%U_Sh>!Zk3k0RIcjuR{D^Xnu+Rz`!E>F2ZH^ zU0T0n|7AyJD(51 zatY#-@uLYmw^h>-U&pefJ?q|4_hrh5ti;JUR0*yxQeM()oSp+7YB$oNH-anrS6jCv z-Nvb0S^MaFv%2D%Meo;fJ@7Xx&wRk)hKc9Oi`n%UeJ?AD9DL&K}45mAt!vB6ln42GSoTeI04} z(wE3DCN1CW!g`jxbAcEV&dUbMd7n>VgaohfydMHZ{(C?X`7-G*kd`ywg?|s}+eyoO zl*q3pT}`^2^it9?&xIk|yoo?b-+21}3iV6!=?6e0HScRcGzs(W07|+)N?PW>#O~Kn z<`^f<`zIiVM)TGKp=x3+5F!)j0^ufJMC?JKz`m?*;x^)g#1!i%veuJdN30^25nbXO zBG*x51xZgJjmJthxbBIA=HnAU>X7Y{L zOFTgAA$AkD5g#NzK-@xXBd#ab5vz!0M3*?77$i<0W)mIa5nHcyeMQy*())=rF9Xr6 z9mEHTTZuAXEBp>(GjSEsB^D5;6J?G`!c8EKBg)Mo{{6T)1bc}x?=7^yT^R=dN95G79agb zpZr&Rd|ChD4L{dM&+~=P@$oP8(V|N(b;t0-OH2F0OY@vz6?ZDZ^zxte$$!m9f5%6A z=IbjP!|N=`{>G4{2+|j^r^-dKpO!)E!wt2S*eGw0g~IZL!O`Y>i4L_#ddBK9m^ zFl!g$ix?^^u^uAa5~*y7;55d{N}M!Mb4z7S-7S@?tLwR9!5m9yzl!HIG=5^6^|Yz6 zrhCQY><1hqg0myAxf>r-99+0jiEa7V4ek{-N~}kudQD}u*^O*B#G7#9iH*0l^s+}9 zdacI3^%fjcnDC82BP@p(Cio5>v*uL#`gcaqo6GjVv>8^zPzKH)Ow^zUteLun^V9NY zn0bEtkLRadHgj(BbpbP`=U;B+tH!PgH@1ZBvVf%Lrj_A&-~>%H(iU?Lcq_2=j{n~= z)Bcp_zc{6J&X=yaH$IR5 zdHj|O?=$BMxDpHmJsh`TKw8A>PLp{od?mii469<=4xebw@7^uG?UL#6UHcJa z%)06FMS6UO9;%{$)>$|=woB#^HykxajiVm+~f z<{k@dybs=?*t?+HhNE(41U9Wf`uaXl6zl0bLsEr_)m`p`{WGsyM52i({TFc>zQvO9{|ou6ffyyKd~00N{!slYUroNs zDXM)nKhvvr}q!m?8v6Mg59?fqJ zuk}FXm-^(_kq#0IiK)`LjC|EwOIp*bc4)bf9S04scGi)j;WXbhKpB6e$}g?27f?>` z7Y(m`%@2QmD_`T+bSr8&<*Qyr4X^fTJxo=Kf@hFD)L*+F8wVrCe zYyP%SUdu<*qvfZ16}9}8uX@y8)u-{RK9$pW{LeMjU(O$zKN?>7dVgzt%2)lGPeBHF zzx7}1lcq!UYkJf!%}2FMQSI0A(R|nNS{`bzKOQY_jYst=7W0Sd)$kghK1V7jr}?CM zHGk9|4X64G`C~2dCZd*`>eKL=4h^sIs$CjR?<=*>WdMy|`Km|pTA!SzL(4_$p~|Ow zK3+`0;Xe2Ma$4@1F126tL+w!X=ZD&@@|qsaR}H7Qh(9!)8eZ*CRC`pP%4s;&7vc|% zU&CuTYPo6s(t4owX*iWn6_3VO$RBE#+Nt+}$|?Hmh1#KZsvRo7gg?{{zr8A_Sk50> zZmM6?rFI1==g)t&KUIBIdsM&Lt@3KWzg*P5r9S&KKGmb)RbKN~^=Y}NoR+7iZ@Evu zmP@MVjlM56f7K2}wL`Jor(g3|?Nd3$GX79GwKJ7Hs$cU{?b38;x>bKEf2hBfujZ@f zm+Dbk`KjJhsz1aZYPaT#>e2ky^!e+jhEsX9L-Q+0{hCi&uQdH?hvNTV_6)Zk71J!H?* zRP{#Fr}k;R(EQQ-Re!%-nqQi3wM*-r>eqCrUd2@PPSd6DN7bu#X#T1mMYUJc?YB$w zMboQxs(qS1)u-jFdX%r>^?p-%eSWCDYKP{NmZR!Xy=q60ik1^qkJ{%?_adL1+N1h4 zz5aeLgUPo_jZ-@{f7M=!;?Q>i3tE>eKe4UtaT1^IywP!znK154Bgz zNz>_nz62>>Nc7hafBtDbQ~jDA29MVl>B!ttT3v-VaJ^erx_|IMwg3AL;DT`(NYLdamiz{P35*+N0^v_$&BB^HuXj z?N$3Vyvk|#68=y-{LfX@qw@avlEZ`9ssC<*E6g`J(Y?{2E^4Q@tv$_5~?; z0a0mxIMu62arySQaT>p-!(TpreSSMspFaQ8UX4%fRXN3U^3y0d-1zl*qUq7{(fn4s z^f{(-YG;t~rL#-z*ZW)VXN^bo>vLS?Rj${^8NRbKEKo+l~;S! zU+vTMD{B0jewBN_cF^qj+6mSF|LXnwkJ?jC!_*FK?=;h2%R%!^%U$zD^ZmaYzt&fc zN1qq(SFhH8wNJ}g^(bHKsisHkDU%(CMf~N@2dy`He`$Hf1M){PQR7oN&F>)jB}BDb z<@A2gdZ+fPoYI<3s)>W%zgkY3zka(l9@VSzaYg*0??Vl*^~JAO^T!`v>zmduO_!p^ ztNHB@?=KI{SIq~_H?>FoRnId1@W-$Asy>xZ6`!VC-xq4X>IqUoDN*xF?Ms!N~ z)h;b3rPWSF4X^b}?bP&YzWVj6yy{WZ`$gpy)ea38WB`>{`!v0Zs#md$KQ!MoU({}Y zzG*l`4X<{o9xeAE1@%3ne3e)9Ki^fq=BK7d)2()@J}rL@r>No6J>UH8aZSJKQPldV z`ZRyE9;%#T1%IghnlJji(DbXk+N<(vhw4{QTG&J*>3y)8&`H{%CkbjX%}% z+Fu{^J)-5K@dufJ|89KCsYmZCy&trmsK4f;)*F4!sU4c{nonA;nr=qpXnt!tG+m0V z6x8_D9@V3As;`JYG(P2Pc$HJs{8f3aPg>qV3TnP+dNjQ%r}{L0O^@o;{8D}X{L%EN ze$`jV9~w^Y7p*tVT^)-(s0Vx_%&T>x4%3tV1OX;|6}gkl5p98fK)*j z1x>)!Ah)E7>_S3zVM8zpUMQFZ2!uO^4T7Qs6O?6*1uuQA){3>h1?_85L=hDOA~$d0 zQUz~BYb_D2;HwB$$nX1|^UUtqlcmu1{o^;EY`*82dFGk><;;0z#@>!}IyGwfx;%9J zw0zya{HOV6&kvoB$r1sbk2?L@UFWNgr$*g>YIn`A(Jn{()99B6U5+{)x*yPTHNVbB zEnoBL_Nd#R4p-M>?SHg9Xt}zd*R+pJSEpCU zPuEACUd^Xb*B{-l>h$P*((%&%wY`?B)9Dg{x;@z4b-vlQPov&gYSwFI; zPtP}W|E%TZi$~3`)1l?-{MYhz{%L#7r|Y@BeEwDWI=^*3>w2g2MWeRY>C*An{&ak` zJk77mL#I>w)BTOkPtC98>2zw^o{u`5|FoXycx(K>lIs$Ig@QVLlZ4jgCS(Nc<)_oH z^G)ZcuD`k+YWIjBc_~@@{T0iDJzq7S_NU!l!f%haE^qBmhpWTU=#>YZ zF5RAW{jjG?&!crer1MqRBP~~>PQR`{IvgE8oeu5)O!9Dd1dYRl=zp;{cpkCCaI|oL zRam)KGM;;9aX;OC9~<5>&nM8~82*;$6L4&QM)(*HW%M})!)g*q_ri~5(fe&vUgWH0 z8z1-EK7xJhZOxSQcoBXQuz!6O5T?g+{Gh`URs-(`E&$#KoC{nDwrGsJwOjI4CH=n#GykbFa%5o zE(5xNcLTct?*gU)mjaW4wLk+{13Zr0xD$8;xCD3zSPg6hE(Y!g-T`a?-VWRWTm-BK z-Ui$N#J7|VYk{a+9aaOOTdvN_$2&=fhd`sR?63leHrins5OuCYH4tq`ou7}k-C-{1 zn}HQT)WHs=K-9qwHvmyr)p`183mtr*QEnYPK=d6QvVhZpnLxCe4(UMD0 z*8*<@t_GqmbXWzv9{3ROI^YW6Sl}{XF|ZnlHrZhT5Pf5Zxxj0I6~HmTQeXk_2H*knJQJxEh!RTm>8qdaRx`2(q3xWHA=xfw{0zH5`Kz9e$ z1J4I;0GyHLx3S74Tf(L%^=U6~HdQWx&qBYT!A*1;9?gxxkLV3Sb(r6zBxr z0PKLjF~IgfAFv(J18fV-0;U2pfhoXrU^37JYy<2DYz>4=9wE^IZfyDxsrEA}Imn9E zF3?2U6ITGaKfVD34dP~WNJQII9I8$zdX>-*f{*SELSF$S%}CH}#83Gbn)kwx<~=Sn zo$yS$QRv=`ENI>jL(^9HJwmgc(7jsdN5Mn7Ug+LTBNjzY5%)9{{8`kyQGI7#m+q4x^iAoMK~KYf0~cM^UnD>6)2 z`xm-a(%&HTb&@}sthg}GX#Yb0RpPfo=qVCEo>NY9LgXD0x{JhT3>quVn>v4lPLlGP zi$+b;Tj;eyUoP=IBJ@fL--FJ8=35EBLFk)AekM8%nz7;2|qgYuE zZqh2zv%2~-j(!uguXz+UnO**gm*;f?}c_@(4d(u^jx7|7ypeyUoG;}Fxb%W zY+}ZDuFwVIzDno>iC=@z?@Ikh!=OcztMf}}-n&J4tAxH;!Z%!s-QYdibT1Y9Mxl=g zJzVJOo+ke{Q5A?ixQE^GERlr;9k8lq!7+sv3 zKc=A2TXs>EuedKRn2=-j;ALaW6Hi+^@OD0Hj9F){Rrf`BD3 zxLIhHdBJEjDywB7%1p;jm41vx!B{p@GzAM+q%OtS#LSW`jYFtQBOJE!ckVb(Bg)6oI5&iY$O0*0q$$lvQ;k>V>3K3b{INH3(x2Rf7Anu zC{R!s5x|ldZlQ}1�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 z
    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

    f3jU_UW@$5auw!j7L!BA{mIl; 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 literal 0 HcmV?d00001 diff --git a/ThirdParty/libid3tag/patches/10_utf16.diff b/ThirdParty/libid3tag/patches/10_utf16.diff new file mode 100644 index 000000000..a3218d26d --- /dev/null +++ b/ThirdParty/libid3tag/patches/10_utf16.diff @@ -0,0 +1,48 @@ +#! /bin/sh -e +## 10_utf16.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Handle bogus UTF16 sequences that have a length that is not +## DP: an even number of 8 bit characters. + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c +--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100 ++++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100 +@@ -282,5 +282,18 @@ + + free(utf16); + ++ if (end == *ptr && length % 2 != 0) ++ { ++ /* We were called with a bogus length. It should always ++ * be an even number. We can deal with this in a few ways: ++ * - Always give an error. ++ * - Try and parse as much as we can and ++ * - return an error if we're called again when we ++ * already tried to parse everything we can. ++ * - tell that we parsed it, which is what we do here. ++ */ ++ (*ptr)++; ++ } ++ + return ucs4; + } diff --git a/ThirdParty/libid3tag/patches/11_unknown_encoding.diff b/ThirdParty/libid3tag/patches/11_unknown_encoding.diff new file mode 100644 index 000000000..7387f2f7d --- /dev/null +++ b/ThirdParty/libid3tag/patches/11_unknown_encoding.diff @@ -0,0 +1,37 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 11_unknown_encoding.dpatch by Andreas Henriksson +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: In case of an unknown/invalid encoding, id3_parse_string() will +## DP: return NULL, but the return value wasn't checked resulting +## DP: in segfault in id3_ucs4_length(). This is the only place +## DP: the return value wasn't checked. + +@DPATCH@ +diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf +--- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000 ++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000 +@@ -236,6 +236,10 @@ + + encoding = id3_parse_uint(&data, 1); + string = id3_parse_string(&data, end - data, encoding, 0); ++ if (!string) ++ { ++ continue; ++ } + + if (id3_ucs4_length(string) < 4) { + free(string); +diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c +--- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000 ++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000 +@@ -165,6 +165,9 @@ + case ID3_FIELD_TEXTENCODING_UTF_8: + ucs4 = id3_utf8_deserialize(ptr, length); + break; ++ default: ++ /* FIXME: Unknown encoding! Print warning? */ ++ return NULL; + } + + if (ucs4 && !full) { diff --git a/ThirdParty/libid3tag/patches/CVE-2008-2109.patch b/ThirdParty/libid3tag/patches/CVE-2008-2109.patch new file mode 100644 index 000000000..26c54c5d2 --- /dev/null +++ b/ThirdParty/libid3tag/patches/CVE-2008-2109.patch @@ -0,0 +1,11 @@ +--- field.c.orig 2008-05-05 09:49:15.000000000 -0400 ++++ field.c 2008-05-05 09:49:25.000000000 -0400 +@@ -291,7 +291,7 @@ + + end = *ptr + length; + +- while (end - *ptr > 0) { ++ while (end - *ptr > 0 && **ptr != '\0') { + ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0); + if (ucs4 == 0) + goto fail; diff --git a/ThirdParty/libid3tag/patches/libid3tag-gperf.patch b/ThirdParty/libid3tag/patches/libid3tag-gperf.patch new file mode 100644 index 000000000..9dfad6c72 --- /dev/null +++ b/ThirdParty/libid3tag/patches/libid3tag-gperf.patch @@ -0,0 +1,26 @@ +Index: libid3tag-0.15.1b/frametype.h +=================================================================== +--- libid3tag-0.15.1b.orig/frametype.h ++++ libid3tag-0.15.1b/frametype.h +@@ -37,6 +37,6 @@ extern struct id3_frametype const id3_fr + extern struct id3_frametype const id3_frametype_obsolete; + + struct id3_frametype const *id3_frametype_lookup(register char const *, +- register unsigned int); ++ register size_t); + + # endif +Index: libid3tag-0.15.1b/compat.h +=================================================================== +--- libid3tag-0.15.1b.orig/compat.h ++++ libid3tag-0.15.1b/compat.h +@@ -34,7 +34,7 @@ struct id3_compat { + }; + + struct id3_compat const *id3_compat_lookup(register char const *, +- register unsigned int); ++ register size_t); + + int id3_compat_fixup(struct id3_tag *); + + diff --git a/ThirdParty/libmad/README.md b/ThirdParty/libmad/README.md new file mode 100644 index 000000000..8e6dbd2e8 --- /dev/null +++ b/ThirdParty/libmad/README.md @@ -0,0 +1,12 @@ +Built with the Homebrew defaults, sort of: + +``` +touch NEWS +touch AUTHORS +touch ChangeLog +autoreconf -fiv +./configure --disable-debugging --enable-fpm=64bit +make -j8 CFLAGS="-Os -arch x86_64 -arch arm64 -mmacosx-version-min=10.12" LDFLAGS="-arch x86_64 -arch arm64 -mmacosx-version-min=10.12" +``` + +Version 0.15.1b was used. diff --git a/ThirdParty/libmad/include/MAD/mad.h b/ThirdParty/libmad/include/MAD/mad.h new file mode 100644 index 000000000..9a449cd47 --- /dev/null +++ b/ThirdParty/libmad/include/MAD/mad.h @@ -0,0 +1,964 @@ +/* + * libmad - MPEG audio decoder library + * Copyright (C) 2000-2004 Underbit Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * If you would like to negotiate alternate licensing terms, you may do + * so by contacting: Underbit Technologies, Inc. + */ + +# ifdef __cplusplus +extern "C" { +# endif + +# define FPM_64BIT + + + +# define SIZEOF_INT 4 +# define SIZEOF_LONG 8 +# define SIZEOF_LONG_LONG 8 + + +/* Id: version.h,v 1.26 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_VERSION_H +# define LIBMAD_VERSION_H + +# define MAD_VERSION_MAJOR 0 +# define MAD_VERSION_MINOR 15 +# define MAD_VERSION_PATCH 1 +# define MAD_VERSION_EXTRA " (beta)" + +# define MAD_VERSION_STRINGIZE(str) #str +# define MAD_VERSION_STRING(num) MAD_VERSION_STRINGIZE(num) + +# define MAD_VERSION MAD_VERSION_STRING(MAD_VERSION_MAJOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_MINOR) "." \ + MAD_VERSION_STRING(MAD_VERSION_PATCH) \ + MAD_VERSION_EXTRA + +# define MAD_PUBLISHYEAR "2000-2004" +# define MAD_AUTHOR "Underbit Technologies, Inc." +# define MAD_EMAIL "info@underbit.com" + +extern char const mad_version[]; +extern char const mad_copyright[]; +extern char const mad_author[]; +extern char const mad_build[]; + +# endif + +/* Id: fixed.h,v 1.38 2004/02/17 02:02:03 rob Exp */ + +# ifndef LIBMAD_FIXED_H +# define LIBMAD_FIXED_H + +# if SIZEOF_INT >= 4 +typedef signed int mad_fixed_t; + +typedef signed int mad_fixed64hi_t; +typedef unsigned int mad_fixed64lo_t; +# else +typedef signed long mad_fixed_t; + +typedef signed long mad_fixed64hi_t; +typedef unsigned long mad_fixed64lo_t; +# endif + +# if defined(_MSC_VER) +# define mad_fixed64_t signed __int64 +# elif 1 || defined(__GNUC__) +# define mad_fixed64_t signed long long +# endif + +# if defined(FPM_FLOAT) +typedef double mad_sample_t; +# else +typedef mad_fixed_t mad_sample_t; +# endif + +/* + * Fixed-point format: 0xABBBBBBB + * A == whole part (sign + 3 bits) + * B == fractional part (28 bits) + * + * Values are signed two's complement, so the effective range is: + * 0x80000000 to 0x7fffffff + * -8.0 to +7.9999999962747097015380859375 + * + * The smallest representable value is: + * 0x00000001 == 0.0000000037252902984619140625 (i.e. about 3.725e-9) + * + * 28 bits of fractional accuracy represent about + * 8.6 digits of decimal accuracy. + * + * Fixed-point numbers can be added or subtracted as normal + * integers, but multiplication requires shifting the 64-bit result + * from 56 fractional bits back to 28 (and rounding.) + * + * Changing the definition of MAD_F_FRACBITS is only partially + * supported, and must be done with care. + */ + +# define MAD_F_FRACBITS 28 + +# if MAD_F_FRACBITS == 28 +# define MAD_F(x) ((mad_fixed_t) (x##L)) +# else +# if MAD_F_FRACBITS < 28 +# warning "MAD_F_FRACBITS < 28" +# define MAD_F(x) ((mad_fixed_t) \ + (((x##L) + \ + (1L << (28 - MAD_F_FRACBITS - 1))) >> \ + (28 - MAD_F_FRACBITS))) +# elif MAD_F_FRACBITS > 28 +# error "MAD_F_FRACBITS > 28 not currently supported" +# define MAD_F(x) ((mad_fixed_t) \ + ((x##L) << (MAD_F_FRACBITS - 28))) +# endif +# endif + +# define MAD_F_MIN ((mad_fixed_t) -0x80000000L) +# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL) + +# define MAD_F_ONE MAD_F(0x10000000) + +# define mad_f_tofixed(x) ((mad_fixed_t) \ + ((x) * (double) (1L << MAD_F_FRACBITS) + 0.5)) +# define mad_f_todouble(x) ((double) \ + ((x) / (double) (1L << MAD_F_FRACBITS))) + +# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS) +# define mad_f_fracpart(x) ((x) & ((1L << MAD_F_FRACBITS) - 1)) + /* (x should be positive) */ + +# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS) + +# define mad_f_add(x, y) ((x) + (y)) +# define mad_f_sub(x, y) ((x) - (y)) + +# if defined(FPM_FLOAT) +# error "FPM_FLOAT not yet supported" + +# undef MAD_F +# define MAD_F(x) mad_f_todouble(x) + +# define mad_f_mul(x, y) ((x) * (y)) +# define mad_f_scale64 + +# undef ASO_ZEROCHECK + +# elif defined(FPM_64BIT) + +/* + * This version should be the most accurate if 64-bit types are supported by + * the compiler, although it may not be the most efficient. + */ +# if defined(OPT_ACCURACY) +# define mad_f_mul(x, y) \ + ((mad_fixed_t) \ + ((((mad_fixed64_t) (x) * (y)) + \ + (1L << (MAD_F_SCALEBITS - 1))) >> MAD_F_SCALEBITS)) +# else +# define mad_f_mul(x, y) \ + ((mad_fixed_t) (((mad_fixed64_t) (x) * (y)) >> MAD_F_SCALEBITS)) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Intel --------------------------------------------------------------- */ + +# elif defined(FPM_INTEL) + +# if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable: 4035) /* no return value */ +static __forceinline +mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) +{ + enum { + fracbits = MAD_F_FRACBITS + }; + + __asm { + mov eax, x + imul y + shrd eax, edx, fracbits + } + + /* implicit return of eax */ +} +# pragma warning(pop) + +# define mad_f_mul mad_f_mul_inline +# define mad_f_scale64 +# else +/* + * This Intel version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("imull %3" \ + : "=a" (lo), "=d" (hi) \ + : "%a" (x), "rm" (y) \ + : "cc") + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addl %2,%0\n\t" \ + "adcl %3,%1" \ + : "=rm" (lo), "=rm" (hi) \ + : "r" (__lo), "r" (__hi), "0" (lo), "1" (hi) \ + : "cc"); \ + }) +# endif /* OPT_ACCURACY */ + +# if defined(OPT_ACCURACY) +/* + * Surprisingly, this is faster than SHRD followed by ADC. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed64hi_t __hi_; \ + mad_fixed64lo_t __lo_; \ + mad_fixed_t __result; \ + asm ("addl %4,%2\n\t" \ + "adcl %5,%3" \ + : "=rm" (__lo_), "=rm" (__hi_) \ + : "0" (lo), "1" (hi), \ + "ir" (1L << (MAD_F_SCALEBITS - 1)), "ir" (0) \ + : "cc"); \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (__lo_), "r" (__hi_), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# elif defined(OPT_INTEL) +/* + * Alternate Intel scaling that may or may not perform better. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrl %3,%1\n\t" \ + "shll %4,%2\n\t" \ + "orl %2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), \ + "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("shrdl %3,%2,%1" \ + : "=rm" (__result) \ + : "0" (lo), "r" (hi), "I" (MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif /* OPT_ACCURACY */ + +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- ARM ----------------------------------------------------------------- */ + +# elif defined(FPM_ARM) + +/* + * This ARM V4 version is as accurate as FPM_64BIT but much faster. The + * least significant bit is properly rounded at no CPU cycle cost! + */ +# if 1 +/* + * This is faster than the default implementation via MAD_F_MLX() and + * mad_f_scale64(). + */ +# define mad_f_mul(x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + mad_fixed_t __result; \ + asm ("smull %0, %1, %3, %4\n\t" \ + "movs %0, %0, lsr %5\n\t" \ + "adc %2, %0, %1, lsl %6" \ + : "=&r" (__lo), "=&r" (__hi), "=r" (__result) \ + : "%r" (x), "r" (y), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) +# endif + +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smull %0, %1, %2, %3" \ + : "=&r" (lo), "=&r" (hi) \ + : "%r" (x), "r" (y)) + +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("smlal %0, %1, %2, %3" \ + : "+r" (lo), "+r" (hi) \ + : "%r" (x), "r" (y)) + +# define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %2, #0\n\t" \ + "rsc %1, %3, #0" \ + : "=r" (lo), "=r" (hi) \ + : "0" (lo), "1" (hi) \ + : "cc") + +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("movs %0, %1, lsr %3\n\t" \ + "adc %0, %0, %2, lsl %4" \ + : "=&r" (__result) \ + : "r" (lo), "r" (hi), \ + "M" (MAD_F_SCALEBITS), "M" (32 - MAD_F_SCALEBITS) \ + : "cc"); \ + __result; \ + }) + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- MIPS ---------------------------------------------------------------- */ + +# elif defined(FPM_MIPS) + +/* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" (x), "r" (y)) + +# if defined(HAVE_MADD_ASM) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" (x), "r" (y)) +# elif defined(HAVE_MADD16_ASM) +/* + * This loses significant accuracy due to the 16-bit integer limit in the + * multiply/accumulate instruction. + */ +# define MAD_F_ML0(hi, lo, x, y) \ + asm ("mult %2,%3" \ + : "=l" (lo), "=h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLA(hi, lo, x, y) \ + asm ("madd16 %2,%3" \ + : "+l" (lo), "+h" (hi) \ + : "%r" ((x) >> 12), "r" ((y) >> 16)) +# define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) +# endif + +# if defined(OPT_SPEED) +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* --- SPARC --------------------------------------------------------------- */ + +# elif defined(FPM_SPARC) + +/* + * This SPARC V8 version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + asm ("smul %2, %3, %0\n\t" \ + "rd %%y, %1" \ + : "=r" (lo), "=r" (hi) \ + : "%r" (x), "rI" (y)) + +/* --- PowerPC ------------------------------------------------------------- */ + +# elif defined(FPM_PPC) + +/* + * This PowerPC version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). + */ +# define MAD_F_MLX(hi, lo, x, y) \ + do { \ + asm ("mullw %0,%1,%2" \ + : "=r" (lo) \ + : "%r" (x), "r" (y)); \ + asm ("mulhw %0,%1,%2" \ + : "=r" (hi) \ + : "%r" (x), "r" (y)); \ + } \ + while (0) + +# if defined(OPT_ACCURACY) +/* + * This gives best accuracy but is not very fast. + */ +# define MAD_F_MLA(hi, lo, x, y) \ + ({ mad_fixed64hi_t __hi; \ + mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + asm ("addc %0,%2,%3\n\t" \ + "adde %1,%4,%5" \ + : "=r" (lo), "=r" (hi) \ + : "%r" (lo), "r" (__lo), \ + "%r" (hi), "r" (__hi) \ + : "xer"); \ + }) +# endif + +# if defined(OPT_ACCURACY) +/* + * This is slower than the truncating version below it. + */ +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result, __round; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("extrwi %0,%1,1,0" \ + : "=r" (__round) \ + : "r" (__result)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + asm ("add %0,%1,%2" \ + : "=r" (__result) \ + : "%r" (__result), "r" (__round)); \ + __result; \ + }) +# else +# define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ + asm ("rotrwi %0,%1,%2" \ + : "=r" (__result) \ + : "r" (lo), "i" (MAD_F_SCALEBITS)); \ + asm ("insrwi %0,%1,%2,0" \ + : "+r" (__result) \ + : "r" (hi), "i" (MAD_F_SCALEBITS)); \ + __result; \ + }) +# endif + +# define MAD_F_SCALEBITS MAD_F_FRACBITS + +/* --- Default ------------------------------------------------------------- */ + +# elif defined(FPM_DEFAULT) + +/* + * This version is the most portable but it loses significant accuracy. + * Furthermore, accuracy is biased against the second argument, so care + * should be taken when ordering operands. + * + * The scale factors are constant as this is not used with SSO. + * + * Pre-rounding is required to stay within the limits of compliance. + */ +# if defined(OPT_SPEED) +# define mad_f_mul(x, y) (((x) >> 12) * ((y) >> 16)) +# else +# define mad_f_mul(x, y) ((((x) + (1L << 11)) >> 12) * \ + (((y) + (1L << 15)) >> 16)) +# endif + +/* ------------------------------------------------------------------------- */ + +# else +# error "no FPM selected" +# endif + +/* default implementations */ + +# if !defined(mad_f_mul) +# define mad_f_mul(x, y) \ + ({ register mad_fixed64hi_t __hi; \ + register mad_fixed64lo_t __lo; \ + MAD_F_MLX(__hi, __lo, (x), (y)); \ + mad_f_scale64(__hi, __lo); \ + }) +# endif + +# if !defined(MAD_F_MLA) +# define MAD_F_ML0(hi, lo, x, y) ((lo) = mad_f_mul((x), (y))) +# define MAD_F_MLA(hi, lo, x, y) ((lo) += mad_f_mul((x), (y))) +# define MAD_F_MLN(hi, lo) ((lo) = -(lo)) +# define MAD_F_MLZ(hi, lo) ((void) (hi), (mad_fixed_t) (lo)) +# endif + +# if !defined(MAD_F_ML0) +# define MAD_F_ML0(hi, lo, x, y) MAD_F_MLX((hi), (lo), (x), (y)) +# endif + +# if !defined(MAD_F_MLN) +# define MAD_F_MLN(hi, lo) ((hi) = ((lo) = -(lo)) ? ~(hi) : -(hi)) +# endif + +# if !defined(MAD_F_MLZ) +# define MAD_F_MLZ(hi, lo) mad_f_scale64((hi), (lo)) +# endif + +# if !defined(mad_f_scale64) +# if defined(OPT_ACCURACY) +# define mad_f_scale64(hi, lo) \ + ((((mad_fixed_t) \ + (((hi) << (32 - (MAD_F_SCALEBITS - 1))) | \ + ((lo) >> (MAD_F_SCALEBITS - 1)))) + 1) >> 1) +# else +# define mad_f_scale64(hi, lo) \ + ((mad_fixed_t) \ + (((hi) << (32 - MAD_F_SCALEBITS)) | \ + ((lo) >> MAD_F_SCALEBITS))) +# endif +# define MAD_F_SCALEBITS MAD_F_FRACBITS +# endif + +/* C routines */ + +mad_fixed_t mad_f_abs(mad_fixed_t); +mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t); + +# endif + +/* Id: bit.h,v 1.12 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_BIT_H +# define LIBMAD_BIT_H + +struct mad_bitptr { + unsigned char const *byte; + unsigned short cache; + unsigned short left; +}; + +void mad_bit_init(struct mad_bitptr *, unsigned char const *); + +# define mad_bit_finish(bitptr) /* nothing */ + +unsigned int mad_bit_length(struct mad_bitptr const *, + struct mad_bitptr const *); + +# define mad_bit_bitsleft(bitptr) ((bitptr)->left) +unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *); + +void mad_bit_skip(struct mad_bitptr *, unsigned int); +unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); +void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); + +unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); + +# endif + +/* Id: timer.h,v 1.16 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_TIMER_H +# define LIBMAD_TIMER_H + +typedef struct { + signed long seconds; /* whole seconds */ + unsigned long fraction; /* 1/MAD_TIMER_RESOLUTION seconds */ +} mad_timer_t; + +extern mad_timer_t const mad_timer_zero; + +# define MAD_TIMER_RESOLUTION 352800000UL + +enum mad_units { + MAD_UNITS_HOURS = -2, + MAD_UNITS_MINUTES = -1, + MAD_UNITS_SECONDS = 0, + + /* metric units */ + + MAD_UNITS_DECISECONDS = 10, + MAD_UNITS_CENTISECONDS = 100, + MAD_UNITS_MILLISECONDS = 1000, + + /* audio sample units */ + + MAD_UNITS_8000_HZ = 8000, + MAD_UNITS_11025_HZ = 11025, + MAD_UNITS_12000_HZ = 12000, + + MAD_UNITS_16000_HZ = 16000, + MAD_UNITS_22050_HZ = 22050, + MAD_UNITS_24000_HZ = 24000, + + MAD_UNITS_32000_HZ = 32000, + MAD_UNITS_44100_HZ = 44100, + MAD_UNITS_48000_HZ = 48000, + + /* video frame/field units */ + + MAD_UNITS_24_FPS = 24, + MAD_UNITS_25_FPS = 25, + MAD_UNITS_30_FPS = 30, + MAD_UNITS_48_FPS = 48, + MAD_UNITS_50_FPS = 50, + MAD_UNITS_60_FPS = 60, + + /* CD audio frames */ + + MAD_UNITS_75_FPS = 75, + + /* video drop-frame units */ + + MAD_UNITS_23_976_FPS = -24, + MAD_UNITS_24_975_FPS = -25, + MAD_UNITS_29_97_FPS = -30, + MAD_UNITS_47_952_FPS = -48, + MAD_UNITS_49_95_FPS = -50, + MAD_UNITS_59_94_FPS = -60 +}; + +# define mad_timer_reset(timer) ((void) (*(timer) = mad_timer_zero)) + +int mad_timer_compare(mad_timer_t, mad_timer_t); + +# define mad_timer_sign(timer) mad_timer_compare((timer), mad_timer_zero) + +void mad_timer_negate(mad_timer_t *); +mad_timer_t mad_timer_abs(mad_timer_t); + +void mad_timer_set(mad_timer_t *, unsigned long, unsigned long, unsigned long); +void mad_timer_add(mad_timer_t *, mad_timer_t); +void mad_timer_multiply(mad_timer_t *, signed long); + +signed long mad_timer_count(mad_timer_t, enum mad_units); +unsigned long mad_timer_fraction(mad_timer_t, unsigned long); +void mad_timer_string(mad_timer_t, char *, char const *, + enum mad_units, enum mad_units, unsigned long); + +# endif + +/* Id: stream.h,v 1.20 2004/02/05 09:02:39 rob Exp */ + +# ifndef LIBMAD_STREAM_H +# define LIBMAD_STREAM_H + + +# define MAD_BUFFER_GUARD 8 +# define MAD_BUFFER_MDLEN (511 + 2048 + MAD_BUFFER_GUARD) + +enum mad_error { + MAD_ERROR_NONE = 0x0000, /* no error */ + + MAD_ERROR_BUFLEN = 0x0001, /* input buffer too small (or EOF) */ + MAD_ERROR_BUFPTR = 0x0002, /* invalid (null) buffer pointer */ + + MAD_ERROR_NOMEM = 0x0031, /* not enough memory */ + + MAD_ERROR_LOSTSYNC = 0x0101, /* lost synchronization */ + MAD_ERROR_BADLAYER = 0x0102, /* reserved header layer value */ + MAD_ERROR_BADBITRATE = 0x0103, /* forbidden bitrate value */ + MAD_ERROR_BADSAMPLERATE = 0x0104, /* reserved sample frequency value */ + MAD_ERROR_BADEMPHASIS = 0x0105, /* reserved emphasis value */ + + MAD_ERROR_BADCRC = 0x0201, /* CRC check failed */ + MAD_ERROR_BADBITALLOC = 0x0211, /* forbidden bit allocation value */ + MAD_ERROR_BADSCALEFACTOR = 0x0221, /* bad scalefactor index */ + MAD_ERROR_BADMODE = 0x0222, /* bad bitrate/mode combination */ + MAD_ERROR_BADFRAMELEN = 0x0231, /* bad frame length */ + MAD_ERROR_BADBIGVALUES = 0x0232, /* bad big_values count */ + MAD_ERROR_BADBLOCKTYPE = 0x0233, /* reserved block_type */ + MAD_ERROR_BADSCFSI = 0x0234, /* bad scalefactor selection info */ + MAD_ERROR_BADDATAPTR = 0x0235, /* bad main_data_begin pointer */ + MAD_ERROR_BADPART3LEN = 0x0236, /* bad audio data length */ + MAD_ERROR_BADHUFFTABLE = 0x0237, /* bad Huffman table select */ + MAD_ERROR_BADHUFFDATA = 0x0238, /* Huffman data overrun */ + MAD_ERROR_BADSTEREO = 0x0239 /* incompatible block_type for JS */ +}; + +# define MAD_RECOVERABLE(error) ((error) & 0xff00) + +struct mad_stream { + unsigned char const *buffer; /* input bitstream buffer */ + unsigned char const *bufend; /* end of buffer */ + unsigned long skiplen; /* bytes to skip before next frame */ + + int sync; /* stream sync found */ + unsigned long freerate; /* free bitrate (fixed) */ + + unsigned char const *this_frame; /* start of current frame */ + unsigned char const *next_frame; /* start of next frame */ + struct mad_bitptr ptr; /* current processing bit pointer */ + + struct mad_bitptr anc_ptr; /* ancillary bits pointer */ + unsigned int anc_bitlen; /* number of ancillary bits */ + + unsigned char (*main_data)[MAD_BUFFER_MDLEN]; + /* Layer III main_data() */ + unsigned int md_len; /* bytes in main_data */ + + int options; /* decoding options (see below) */ + enum mad_error error; /* error code (see above) */ +}; + +enum { + MAD_OPTION_IGNORECRC = 0x0001, /* ignore CRC errors */ + MAD_OPTION_HALFSAMPLERATE = 0x0002 /* generate PCM at 1/2 sample rate */ +# if 0 /* not yet implemented */ + MAD_OPTION_LEFTCHANNEL = 0x0010, /* decode left channel only */ + MAD_OPTION_RIGHTCHANNEL = 0x0020, /* decode right channel only */ + MAD_OPTION_SINGLECHANNEL = 0x0030 /* combine channels */ +# endif +}; + +void mad_stream_init(struct mad_stream *); +void mad_stream_finish(struct mad_stream *); + +# define mad_stream_options(stream, opts) \ + ((void) ((stream)->options = (opts))) + +void mad_stream_buffer(struct mad_stream *, + unsigned char const *, unsigned long); +void mad_stream_skip(struct mad_stream *, unsigned long); + +int mad_stream_sync(struct mad_stream *); + +char const *mad_stream_errorstr(struct mad_stream const *); + +# endif + +/* Id: frame.h,v 1.20 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_FRAME_H +# define LIBMAD_FRAME_H + + +enum mad_layer { + MAD_LAYER_I = 1, /* Layer I */ + MAD_LAYER_II = 2, /* Layer II */ + MAD_LAYER_III = 3 /* Layer III */ +}; + +enum mad_mode { + MAD_MODE_SINGLE_CHANNEL = 0, /* single channel */ + MAD_MODE_DUAL_CHANNEL = 1, /* dual channel */ + MAD_MODE_JOINT_STEREO = 2, /* joint (MS/intensity) stereo */ + MAD_MODE_STEREO = 3 /* normal LR stereo */ +}; + +enum mad_emphasis { + MAD_EMPHASIS_NONE = 0, /* no emphasis */ + MAD_EMPHASIS_50_15_US = 1, /* 50/15 microseconds emphasis */ + MAD_EMPHASIS_CCITT_J_17 = 3, /* CCITT J.17 emphasis */ + MAD_EMPHASIS_RESERVED = 2 /* unknown emphasis */ +}; + +struct mad_header { + enum mad_layer layer; /* audio layer (1, 2, or 3) */ + enum mad_mode mode; /* channel mode (see above) */ + int mode_extension; /* additional mode info */ + enum mad_emphasis emphasis; /* de-emphasis to use (see above) */ + + unsigned long bitrate; /* stream bitrate (bps) */ + unsigned int samplerate; /* sampling frequency (Hz) */ + + unsigned short crc_check; /* frame CRC accumulator */ + unsigned short crc_target; /* final target CRC checksum */ + + int flags; /* flags (see below) */ + int private_bits; /* private bits (see below) */ + + mad_timer_t duration; /* audio playing time of frame */ +}; + +struct mad_frame { + struct mad_header header; /* MPEG audio header */ + + int options; /* decoding options (from stream) */ + + mad_fixed_t sbsample[2][36][32]; /* synthesis subband filter samples */ + mad_fixed_t (*overlap)[2][32][18]; /* Layer III block overlap data */ +}; + +# define MAD_NCHANNELS(header) ((header)->mode ? 2 : 1) +# define MAD_NSBSAMPLES(header) \ + ((header)->layer == MAD_LAYER_I ? 12 : \ + (((header)->layer == MAD_LAYER_III && \ + ((header)->flags & MAD_FLAG_LSF_EXT)) ? 18 : 36)) + +enum { + MAD_FLAG_NPRIVATE_III = 0x0007, /* number of Layer III private bits */ + MAD_FLAG_INCOMPLETE = 0x0008, /* header but not data is decoded */ + + MAD_FLAG_PROTECTION = 0x0010, /* frame has CRC protection */ + MAD_FLAG_COPYRIGHT = 0x0020, /* frame is copyright */ + MAD_FLAG_ORIGINAL = 0x0040, /* frame is original (else copy) */ + MAD_FLAG_PADDING = 0x0080, /* frame has additional slot */ + + MAD_FLAG_I_STEREO = 0x0100, /* uses intensity joint stereo */ + MAD_FLAG_MS_STEREO = 0x0200, /* uses middle/side joint stereo */ + MAD_FLAG_FREEFORMAT = 0x0400, /* uses free format bitrate */ + + MAD_FLAG_LSF_EXT = 0x1000, /* lower sampling freq. extension */ + MAD_FLAG_MC_EXT = 0x2000, /* multichannel audio extension */ + MAD_FLAG_MPEG_2_5_EXT = 0x4000 /* MPEG 2.5 (unofficial) extension */ +}; + +enum { + MAD_PRIVATE_HEADER = 0x0100, /* header private bit */ + MAD_PRIVATE_III = 0x001f /* Layer III private bits (up to 5) */ +}; + +void mad_header_init(struct mad_header *); + +# define mad_header_finish(header) /* nothing */ + +int mad_header_decode(struct mad_header *, struct mad_stream *); + +void mad_frame_init(struct mad_frame *); +void mad_frame_finish(struct mad_frame *); + +int mad_frame_decode(struct mad_frame *, struct mad_stream *); + +void mad_frame_mute(struct mad_frame *); + +# endif + +/* Id: synth.h,v 1.15 2004/01/23 09:41:33 rob Exp */ + +# ifndef LIBMAD_SYNTH_H +# define LIBMAD_SYNTH_H + + +struct mad_pcm { + unsigned int samplerate; /* sampling frequency (Hz) */ + unsigned short channels; /* number of channels */ + unsigned short length; /* number of samples per channel */ + mad_fixed_t samples[2][1152]; /* PCM output samples [ch][sample] */ +}; + +struct mad_synth { + mad_fixed_t filter[2][2][2][16][8]; /* polyphase filterbank outputs */ + /* [ch][eo][peo][s][v] */ + + unsigned int phase; /* current processing phase */ + + struct mad_pcm pcm; /* PCM output */ +}; + +/* single channel PCM selector */ +enum { + MAD_PCM_CHANNEL_SINGLE = 0 +}; + +/* dual channel PCM selector */ +enum { + MAD_PCM_CHANNEL_DUAL_1 = 0, + MAD_PCM_CHANNEL_DUAL_2 = 1 +}; + +/* stereo PCM selector */ +enum { + MAD_PCM_CHANNEL_STEREO_LEFT = 0, + MAD_PCM_CHANNEL_STEREO_RIGHT = 1 +}; + +void mad_synth_init(struct mad_synth *); + +# define mad_synth_finish(synth) /* nothing */ + +void mad_synth_mute(struct mad_synth *); + +void mad_synth_frame(struct mad_synth *, struct mad_frame const *); + +# endif + +/* Id: decoder.h,v 1.17 2004/01/23 09:41:32 rob Exp */ + +# ifndef LIBMAD_DECODER_H +# define LIBMAD_DECODER_H + + +enum mad_decoder_mode { + MAD_DECODER_MODE_SYNC = 0, + MAD_DECODER_MODE_ASYNC +}; + +enum mad_flow { + MAD_FLOW_CONTINUE = 0x0000, /* continue normally */ + MAD_FLOW_STOP = 0x0010, /* stop decoding normally */ + MAD_FLOW_BREAK = 0x0011, /* stop decoding and signal an error */ + MAD_FLOW_IGNORE = 0x0020 /* ignore the current frame */ +}; + +struct mad_decoder { + enum mad_decoder_mode mode; + + int options; + + struct { + long pid; + int in; + int out; + } async; + + struct { + struct mad_stream stream; + struct mad_frame frame; + struct mad_synth synth; + } *sync; + + void *cb_data; + + enum mad_flow (*input_func)(void *, struct mad_stream *); + enum mad_flow (*header_func)(void *, struct mad_header const *); + enum mad_flow (*filter_func)(void *, + struct mad_stream const *, struct mad_frame *); + enum mad_flow (*output_func)(void *, + struct mad_header const *, struct mad_pcm *); + enum mad_flow (*error_func)(void *, struct mad_stream *, struct mad_frame *); + enum mad_flow (*message_func)(void *, void *, unsigned int *); +}; + +void mad_decoder_init(struct mad_decoder *, void *, + enum mad_flow (*)(void *, struct mad_stream *), + enum mad_flow (*)(void *, struct mad_header const *), + enum mad_flow (*)(void *, + struct mad_stream const *, + struct mad_frame *), + enum mad_flow (*)(void *, + struct mad_header const *, + struct mad_pcm *), + enum mad_flow (*)(void *, + struct mad_stream *, + struct mad_frame *), + enum mad_flow (*)(void *, void *, unsigned int *)); +int mad_decoder_finish(struct mad_decoder *); + +# define mad_decoder_options(decoder, opts) \ + ((void) ((decoder)->options = (opts))) + +int mad_decoder_run(struct mad_decoder *, enum mad_decoder_mode); +int mad_decoder_message(struct mad_decoder *, void *, unsigned int *); + +# endif + +# ifdef __cplusplus +} +# endif diff --git a/ThirdParty/libmad/lib/libmad.a b/ThirdParty/libmad/lib/libmad.a new file mode 100644 index 0000000000000000000000000000000000000000..4122a9d1d746cef1fb248a30930cfcec2dfa5c42 GIT binary patch literal 262896 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 AUjP6A literal 0 HcmV?d00001