From d898cf4f7133a110486718b7294bba397cb8d339 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Fri, 1 Nov 2013 12:24:59 -0700 Subject: [PATCH] Added MO3 support --- Info.plist | 14 +++++++ Plugins/Dumb/Dumb.xcodeproj/project.pbxproj | 40 ++++++++++++++++++ Plugins/Dumb/DumbDecoder.m | 21 ++++++++-- Plugins/Dumb/archive/j2b/j2b.h | 2 +- Plugins/Dumb/archive/mo3/mo3.c | 44 ++++++++++++++++++++ Plugins/Dumb/archive/mo3/mo3.h | 16 +++++++ ThirdParty/BASS/libunmo3.dylib | Bin 0 -> 91752 bytes ThirdParty/BASS/unmo3.h | 33 +++++++++++++++ 8 files changed, 165 insertions(+), 5 deletions(-) create mode 100644 Plugins/Dumb/archive/mo3/mo3.c create mode 100644 Plugins/Dumb/archive/mo3/mo3.h create mode 100755 ThirdParty/BASS/libunmo3.dylib create mode 100755 ThirdParty/BASS/unmo3.h diff --git a/Info.plist b/Info.plist index a00d7d4f0..5092a6acf 100644 --- a/Info.plist +++ b/Info.plist @@ -22,6 +22,20 @@ CFBundleTypeRole None + + CFBundleTypeExtensions + + mo3 + + LSTypeIsPackage + + CFBundleTypeRole + Viewer + CFBundleTypeIconFile + song.icns + CFBundleTypeName + MO3 Audio File + CFBundleTypeExtensions diff --git a/Plugins/Dumb/Dumb.xcodeproj/project.pbxproj b/Plugins/Dumb/Dumb.xcodeproj/project.pbxproj index a7d281006..ccd30fa76 100644 --- a/Plugins/Dumb/Dumb.xcodeproj/project.pbxproj +++ b/Plugins/Dumb/Dumb.xcodeproj/project.pbxproj @@ -19,6 +19,9 @@ 8337AAEE17FFA0000081AFF8 /* unrealfmtdata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8337AAEA17FFA0000081AFF8 /* unrealfmtdata.cpp */; }; 8337AAF117FFA2D30081AFF8 /* j2b.c in Sources */ = {isa = PBXBuildFile; fileRef = 8337AAEF17FFA2D30081AFF8 /* j2b.c */; }; 8337AAF317FFA7640081AFF8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8337AAF217FFA7640081AFF8 /* libz.dylib */; }; + 83527EE818242FD5002F170E /* libunmo3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 83527EE618242FD5002F170E /* libunmo3.dylib */; }; + 83527EEB18243069002F170E /* mo3.c in Sources */ = {isa = PBXBuildFile; fileRef = 83527EEA18243069002F170E /* mo3.c */; }; + 83527EED182432CA002F170E /* libunmo3.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 83527EE618242FD5002F170E /* libunmo3.dylib */; }; 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ @@ -53,6 +56,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 83527EEC182432BD002F170E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 83527EED182432CA002F170E /* libunmo3.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -78,6 +91,10 @@ 8337AAEF17FFA2D30081AFF8 /* j2b.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = j2b.c; sourceTree = ""; }; 8337AAF017FFA2D30081AFF8 /* j2b.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = j2b.h; sourceTree = ""; }; 8337AAF217FFA7640081AFF8 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 83527EE618242FD5002F170E /* libunmo3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libunmo3.dylib; path = ../../../ThirdParty/BASS/libunmo3.dylib; sourceTree = ""; }; + 83527EE718242FD5002F170E /* unmo3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unmo3.h; path = ../../../ThirdParty/BASS/unmo3.h; sourceTree = ""; }; + 83527EE918243029002F170E /* mo3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mo3.h; path = mo3/mo3.h; sourceTree = ""; }; + 83527EEA18243069002F170E /* mo3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mo3.c; path = mo3/mo3.c; sourceTree = ""; }; 8384912B1808155E00E7332D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = ../../Utils/Logging.h; sourceTree = ""; }; 8D5B49B6048680CD000E48DA /* Dumb.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Dumb.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -90,6 +107,7 @@ buildActionMask = 2147483647; files = ( 8337AAF317FFA7640081AFF8 /* libz.dylib in Frameworks */, + 83527EE818242FD5002F170E /* libunmo3.dylib in Frameworks */, 17C8F7B90CBEF380008D969D /* Dumb.framework in Frameworks */, 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, ); @@ -191,6 +209,7 @@ 8337AAE317FFA0000081AFF8 /* archive */ = { isa = PBXGroup; children = ( + 83527EE518242FBE002F170E /* mo3 */, 8337AAE417FFA0000081AFF8 /* j2b */, 8337AAE517FFA0000081AFF8 /* umx */, ); @@ -219,6 +238,17 @@ path = umx; sourceTree = ""; }; + 83527EE518242FBE002F170E /* mo3 */ = { + isa = PBXGroup; + children = ( + 83527EEA18243069002F170E /* mo3.c */, + 83527EE918243029002F170E /* mo3.h */, + 83527EE618242FD5002F170E /* libunmo3.dylib */, + 83527EE718242FD5002F170E /* unmo3.h */, + ); + name = mo3; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -230,6 +260,7 @@ 8D5B49B1048680CD000E48DA /* Sources */, 8D5B49B3048680CD000E48DA /* Frameworks */, 17C8F6A20CBEE86E008D969D /* CopyFiles */, + 83527EEC182432BD002F170E /* CopyFiles */, ); buildRules = ( ); @@ -303,6 +334,7 @@ 8337AAEC17FFA0000081AFF8 /* umx.mm in Sources */, 8335FF6717FF6FD9002D8DD2 /* DumbContainer.m in Sources */, 17C8F6950CBEE846008D969D /* DumbDecoder.m in Sources */, + 83527EEB18243069002F170E /* mo3.c in Sources */, 8337AAEE17FFA0000081AFF8 /* unrealfmtdata.cpp in Sources */, 17DA363E0CC0600E0003F6B2 /* DumbMetadataReader.m in Sources */, ); @@ -347,6 +379,10 @@ ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + /Users/Chris/Source/Repos/cog/ThirdParty/BASS, + ); OBJROOT = ../../build; PRODUCT_NAME = Dumb; SKIP_INSTALL = YES; @@ -369,6 +405,10 @@ ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + /Users/Chris/Source/Repos/cog/ThirdParty/BASS, + ); OBJROOT = ../../build; PRODUCT_NAME = Dumb; SKIP_INSTALL = YES; diff --git a/Plugins/Dumb/DumbDecoder.m b/Plugins/Dumb/DumbDecoder.m index af52f3c6a..f4d18a894 100755 --- a/Plugins/Dumb/DumbDecoder.m +++ b/Plugins/Dumb/DumbDecoder.m @@ -10,6 +10,7 @@ #import "umx.h" #import "j2b.h" +#import "mo3.h" #import "Logging.h" @@ -19,6 +20,7 @@ struct MEMANDFREEFILE { char *ptr, *ptr_begin; long left, size; + int is_mo3; }; static int dumb_maffile_skip(void *f, long n) @@ -51,7 +53,8 @@ static long dumb_maffile_getnc(char *ptr, long n, void *f) static void dumb_maffile_close(void *f) { struct MEMANDFREEFILE *m = f; - free(m->ptr_begin); + if (m->is_mo3) freeMo3(m->ptr_begin); + else free(m->ptr_begin); free(f); } @@ -83,17 +86,26 @@ static const DUMBFILE_SYSTEM maffile_dfs = { DUMBFILE *dumbfile_open_memory_and_free(char *data, long size) { - char * try_data = unpackUmx( data, &size ); + int is_mo3 = 0; + char * try_data = unpackMo3( data, &size ); if ( try_data ) { free( data ); data = try_data; + is_mo3 = 1; } else { - try_data = unpackJ2b( data, &size ); + try_data = unpackUmx( data, &size ); if ( try_data ) { free( data ); data = try_data; } + else { + try_data = unpackJ2b( data, &size ); + if ( try_data ) { + free( data ); + data = try_data; + } + } } struct MEMANDFREEFILE *m = malloc(sizeof(*m)); @@ -103,6 +115,7 @@ DUMBFILE *dumbfile_open_memory_and_free(char *data, long size) m->ptr = data; m->left = size; m->size = size; + m->is_mo3 = is_mo3; return dumbfile_open_ex(m, &maffile_dfs); } @@ -319,7 +332,7 @@ int callbackLoop(void *data) + (NSArray *)fileTypes { - return [NSArray arrayWithObjects:@"it", @"itz", @"xm", @"xmz", @"s3m", @"s3z", @"mod", @"mdz", @"stm", @"stz", @"ptm", @"mtm", @"669", @"psm", @"am", @"j2b", @"dsm", @"amf", @"okt", @"okta", @"umx", nil]; + return [NSArray arrayWithObjects:@"it", @"itz", @"xm", @"xmz", @"s3m", @"s3z", @"mod", @"mdz", @"stm", @"stz", @"ptm", @"mtm", @"669", @"psm", @"am", @"j2b", @"dsm", @"amf", @"okt", @"okta", @"umx", @"mo3", nil]; } + (NSArray *)mimeTypes diff --git a/Plugins/Dumb/archive/j2b/j2b.h b/Plugins/Dumb/archive/j2b/j2b.h index 6042b2a46..95c9b745b 100644 --- a/Plugins/Dumb/archive/j2b/j2b.h +++ b/Plugins/Dumb/archive/j2b/j2b.h @@ -1,5 +1,5 @@ // -// umx.h +// j2b.h // Dumb J2B Archive parser // // Created by Christopher Snowhill on 10/4/13. diff --git a/Plugins/Dumb/archive/mo3/mo3.c b/Plugins/Dumb/archive/mo3/mo3.c new file mode 100644 index 000000000..eacbdc2d0 --- /dev/null +++ b/Plugins/Dumb/archive/mo3/mo3.c @@ -0,0 +1,44 @@ +// +// mo3.c +// Dumb MO3 Archive parser +// +// Created by Christopher Snowhill on 11/1/13. +// Copyright 2013 __NoWork, Inc__. All rights reserved. +// + +#include "mo3.h" + +#include +typedef uint32_t DWORD; + +#include "unmo3.h" + +#include +#include + +void * unpackMo3( const void * in, long * size ) +{ + void * data; + int len; + + if ( *size > INT_MAX ) + return 0; + + if ( memcmp( in, "MO3", 3 ) != 0 ) + return 0; + + data = (void *) in; + len = (int) *size; + + if ( UNMO3_Decode( &data, &len, 0 ) != 0 ) + return 0; + + *size = len; + + return data; +} + +void freeMo3( void * in ) +{ + UNMO3_Free( in ); +} diff --git a/Plugins/Dumb/archive/mo3/mo3.h b/Plugins/Dumb/archive/mo3/mo3.h new file mode 100644 index 000000000..ad73dea22 --- /dev/null +++ b/Plugins/Dumb/archive/mo3/mo3.h @@ -0,0 +1,16 @@ +// +// mo3.h +// Dumb MO3 Archive parser +// +// Created by Christopher Snowhill on 11/1/13. +// Copyright 2013 __NoWork, Inc__. All rights reserved. +// + +#ifdef __cplusplus +extern "C" { +#endif + extern void * unpackMo3( const void * in, long * size ); + extern void freeMo3( void * in ); +#ifdef __cplusplus +}; +#endif diff --git a/ThirdParty/BASS/libunmo3.dylib b/ThirdParty/BASS/libunmo3.dylib new file mode 100755 index 0000000000000000000000000000000000000000..67e9ced3b82918863fb298ec1c7e259865624b0d GIT binary patch literal 91752 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 V#FQc{eSK3iLlaXIBTzJh0RWg&QO5uP literal 0 HcmV?d00001 diff --git a/ThirdParty/BASS/unmo3.h b/ThirdParty/BASS/unmo3.h new file mode 100755 index 000000000..88a2c114f --- /dev/null +++ b/ThirdParty/BASS/unmo3.h @@ -0,0 +1,33 @@ +/* + UNMO3 library C/C++ header file + Copyright (c) 2010-2013 Un4seen Developments Ltd. + + Free for non-commercial use +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _WIN32 +#define WINAPI +#endif + +// Get the UNMO3 library version +DWORD WINAPI UNMO3_GetVersion(); + +// Decode a MO3 file +// in: data/len = MO3 data/len +// out: data/len = decoded data/len (if successful) +// return: 0 = Success, 2 = It isn't a MO3 file, 3 = There was a problem decoding the MO3 file +int WINAPI UNMO3_Decode(void **data, int *len, DWORD flags); + +// UNMO3_Decode flags +#define UNMO3_DECODE_NOSAMPLES 1 // don't process sample data + +// Free the data returned by UNMO3_Decode +void WINAPI UNMO3_Free(void *data); + +#ifdef __cplusplus +} +#endif