Compare commits

..

No commits in common. "47f50052be4ba9f1b3caaa410eb6b008f579b773" and "972a7604bd93ce261246b57d64b05f396641934c" have entirely different histories.

86 changed files with 498 additions and 119 deletions

View file

@ -872,7 +872,7 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes
if(!inputChanged) {
memcpy(&tempData[buffer_adder], inputBuffer, samplesRead * 2);
inputBuffer = &tempData[buffer_adder];
//inputChanged = YES;
inputChanged = YES;
}
convert_u16_to_s16((int16_t *)inputBuffer, samplesRead);
}
@ -912,10 +912,10 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes
vDSP_vflt32((const int *)inputBuffer, 1, (float *)(&tempData[buffer_adder]), 1, samplesRead);
float scale = (1ULL << 31) / gain;
vDSP_vsdiv((const float *)(&tempData[buffer_adder]), 1, &scale, (float *)(&tempData[buffer_adder]), 1, samplesRead);
//bitsPerSample = 32;
bitsPerSample = 32;
bytesReadFromInput = samplesRead * sizeof(float);
//isUnsigned = NO;
//isFloat = YES;
isUnsigned = NO;
isFloat = YES;
inputBuffer = &tempData[buffer_adder];
}

View file

@ -146,6 +146,7 @@ static OSStatus eqRenderCallback(void *inRefCon, AudioUnitRenderActionFlags *ioA
- (BOOL)fullInit {
if(enableEqualizer) {
AudioComponentDescription desc;
NSError *err;
desc.componentType = kAudioUnitType_Effect;
desc.componentSubType = kAudioUnitSubType_GraphicEQ;
@ -160,8 +161,8 @@ static OSStatus eqRenderCallback(void *inRefCon, AudioUnitRenderActionFlags *ioA
return NO;
}
OSStatus status = AudioComponentInstanceNew(comp, &_eq);
if(status != noErr) {
OSStatus _err = AudioComponentInstanceNew(comp, &_eq);
if(err) {
return NO;
}
@ -208,8 +209,8 @@ static OSStatus eqRenderCallback(void *inRefCon, AudioUnitRenderActionFlags *ioA
AudioUnitReset(_eq, kAudioUnitScope_Global, 0);
status = AudioUnitInitialize(_eq);
if(status != noErr) {
_err = AudioUnitInitialize(_eq);
if(_err != noErr) {
return NO;
}

View file

@ -19,7 +19,7 @@
#include <AvailabilityMacros.h>
#if defined(MAC_OS_VERSION_14_0) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_14_0
#if defined(MAC_OS_X_VERSION_14_0) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_14_0
#define MOTION_MANAGER 1
#endif
@ -27,7 +27,6 @@ static void * kDSPHRTFNodeContext = &kDSPHRTFNodeContext;
static NSString *CogPlaybackDidResetHeadTracking = @"CogPlaybackDigResetHeadTracking";
#ifdef MOTION_MANAGER
static simd_float4x4 convertMatrix(CMRotationMatrix r) {
simd_float4x4 matrix = {
simd_make_float4(r.m33, -r.m31, r.m32, 0.0f),
@ -38,6 +37,7 @@ static simd_float4x4 convertMatrix(CMRotationMatrix r) {
return matrix;
}
#ifdef MOTION_MANAGER
static NSLock *motionManagerLock = nil;
API_AVAILABLE(macos(14.0)) static CMHeadphoneMotionManager *motionManager = nil;
static DSPHRTFNode *registeredMotionListener = nil;

View file

@ -157,8 +157,6 @@ static void downmix_to_mono(const float *inBuffer, int channels, uint32_t config
}
cblas_scopy((int)count, inBuffer, 2, outBuffer, 1);
vDSP_vadd(outBuffer, 1, inBuffer + 1, 2, outBuffer, 1, count);
const float scale = 0.5f;
vDSP_vsmul(outBuffer, 1, &scale, outBuffer, 1, count);
}
static void upmix(const float *inBuffer, int inchannels, uint32_t inconfig, float *outBuffer, int outchannels, uint32_t outconfig, size_t count) {

View file

@ -191,7 +191,7 @@
- (void)reconnectInputAndReplumb {
Node *finalNode = nil;
if(DSPsLaunched) {
if(rubberbandNode) {
finalNode = [[controller bufferChain] finalNode];
if(finalNode) {
[rubberbandNode setPreviousNode:finalNode];

View file

@ -694,6 +694,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8DC2EF4F0486A6940098B216 = {
LastSwiftMigration = 1330;
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "CogAudio" */;
compatibilityVersion = "Xcode 12.0";
@ -885,6 +891,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
@ -937,6 +944,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_NO_COMMON_BLOCKS = YES;

View file

@ -351,9 +351,17 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
AudioObjectAddPropertyListener(kAudioObjectSystemObject, &theAddress, default_device_changed, (__bridge void *_Nullable)(self));
defaultdevicelistenerapplied = YES;
}
} else {
err = noErr;
}
return noErr;
if(err != noErr) {
DLog(@"No output device with ID %d could be found.", deviceID);
return err;
}
return err;
}
- (BOOL)setOutputDeviceWithDeviceDict:(NSDictionary *)deviceDict {
@ -407,18 +415,15 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
.mElement = kAudioObjectPropertyElementMaster
};
OSStatus status = AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize);
if(status != noErr) return;
__Verify_noErr(AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize));
UInt32 nDevices = propsize / (UInt32)sizeof(AudioDeviceID);
AudioDeviceID *devids = (AudioDeviceID *)malloc(propsize);
status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, devids);
if(status != noErr) return;
__Verify_noErr(AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, devids));
theAddress.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
AudioDeviceID systemDefault;
propsize = sizeof(systemDefault);
status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, &systemDefault);
if(status != noErr) return;
__Verify_noErr(AudioObjectGetPropertyData(kAudioObjectSystemObject, &theAddress, 0, NULL, &propsize, &systemDefault));
theAddress.mScope = kAudioDevicePropertyScopeOutput;
@ -426,23 +431,17 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
UInt32 isAlive = 0;
propsize = sizeof(isAlive);
theAddress.mSelector = kAudioDevicePropertyDeviceIsAlive;
status = AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, &isAlive);
if(status != noErr) return;
__Verify_noErr(AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, &isAlive));
if(!isAlive) continue;
CFStringRef name = NULL;
propsize = sizeof(name);
theAddress.mSelector = kAudioDevicePropertyDeviceNameCFString;
status = AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, &name);
if(status != noErr) return;
__Verify_noErr(AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, &name));
propsize = 0;
theAddress.mSelector = kAudioDevicePropertyStreamConfiguration;
status = AudioObjectGetPropertyDataSize(devids[i], &theAddress, 0, NULL, &propsize);
if(status != noErr) {
if(name) CFRelease(name);
return;
}
__Verify_noErr(AudioObjectGetPropertyDataSize(devids[i], &theAddress, 0, NULL, &propsize));
if(propsize < sizeof(UInt32)) {
if(name) CFRelease(name);
@ -450,15 +449,7 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
}
AudioBufferList *bufferList = (AudioBufferList *)malloc(propsize);
if(!bufferList) {
if(name) CFRelease(name);
return;
}
status = AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, bufferList);
if(status != noErr) {
if(name) CFRelease(name);
return;
}
__Verify_noErr(AudioObjectGetPropertyData(devids[i], &theAddress, 0, NULL, &propsize, bufferList));
UInt32 bufferCount = bufferList->mNumberBuffers;
free(bufferList);
@ -475,7 +466,7 @@ current_device_listener(AudioObjectID inObjectID, UInt32 inNumberAddresses, cons
systemDefault,
&stop);
if(name) CFRelease(name);
CFRelease(name);
if(stop) {
break;

View file

@ -60,6 +60,7 @@ static void
_init_buffers(int fft_size) {
if(fft_size != _fft_size) {
fft_free();
_fft_size = 0;
_dftSetup = vDSP_DFT_zrop_CreateSetup(NULL, fft_size * 2, vDSP_DFT_FORWARD);
if(!_dftSetup) return;
@ -135,5 +136,4 @@ void __attribute__((destructor)) fft_free(void) {
_window = NULL;
_rawSpectrum = NULL;
_dftSetup = NULL;
_fft_size = 0;
}

View file

@ -1044,8 +1044,8 @@ static int hdcd_envelope(int32_t *samples, int count, int stride, int gain, int
/* hold a steady level */
if (gain == 0x800000) {
/*if (count > 0)
samples += count * stride;*/
if (count > 0)
samples += count * stride;
} else {
while (--count >= 0) {
APPLY_GAIN(*samples, gain);

View file

@ -139,7 +139,7 @@ static void vorbis_lpc_predict(float *coeff, float *prime, int m, float *data, l
}
void lpc_extrapolate2(float *const data, const size_t data_len, const int nch, const int lpc_order, const size_t extra_bkwd, const size_t extra_fwd, void **extrapolate_buffer, size_t *extrapolate_buffer_size) {
//const size_t max_to_prime = (data_len < lpc_order) ? data_len : lpc_order;
const size_t max_to_prime = (data_len < lpc_order) ? data_len : lpc_order;
const size_t min_data_len = (data_len < lpc_order) ? lpc_order : data_len;
const size_t tdata_size = sizeof(float) * (extra_bkwd + min_data_len + extra_fwd);
@ -153,7 +153,6 @@ void lpc_extrapolate2(float *const data, const size_t data_len, const int nch, c
if(new_size > *extrapolate_buffer_size) {
*extrapolate_buffer = realloc(*extrapolate_buffer, new_size);
*extrapolate_buffer_size = new_size;
if(!*extrapolate_buffer) return;
}
double *aut = (double *)(*extrapolate_buffer);

View file

@ -44,7 +44,6 @@ static void samples_len(unsigned* r1, unsigned* r2, unsigned N, unsigned M)
{
if (r1 == 0 || r2 == 0) return;
unsigned v = local_gcd(*r1, *r2); // v = 300
if (v == 0) return;
*r1 /= v; *r2 /= v; // r1 = 147; r2 = 160 == 1/300th of second
unsigned n = (v + N-1) / N; // n = 300/20 = 15 times
unsigned z = max(*r1, *r2); // z = 160

View file

@ -130,7 +130,6 @@ static VisualizationController *_sharedController = nil;
@synchronized(self) {
if(!sampleRate) {
free(visAudioTemp);
if(outPCM) bzero(outPCM, 4096 * sizeof(float));
if(outFFT) bzero(outFFT, 2048 * sizeof(float));
return;

View file

@ -2038,6 +2038,13 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1500;
TargetAttributes = {
8D1107260486CEB800E47090 = {
DevelopmentTeam = "";
LastSwiftMigration = 1220;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cog" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -55,6 +55,7 @@
if(path) {
[panel setDirectoryURL:[NSURL fileURLWithPath:path]];
}
[panel setTitle:@"Open to choose tree path"];
NSInteger result = [panel runModal];
if(result == NSModalResponseOK) {
[[SandboxBroker sharedSandboxBroker] addFolderIfMissing:[panel URL]];

View file

@ -560,6 +560,11 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83D3C4D3201C654F005564CB = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83D3C4CE201C654F005564CB /* Build configuration list for PBXProject "libAdPlug" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -486,6 +486,12 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
TargetAttributes = {
8DC2EF4F0486A6940098B216 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Dumb" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -634,6 +634,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1640;
ORGANIZATIONNAME = "";
TargetAttributes = {
8359FF3B17FEF39F0060F3ED = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8359FF3617FEF39F0060F3ED /* Build configuration list for PBXProject "File_Extractor" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -629,6 +629,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8DC2EF4F0486A6940098B216 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "GME" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -251,6 +251,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8343793417F97BDB00584396 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8343792F17F97BDB00584396 /* Build configuration list for PBXProject "HighlyAdvanced" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -190,6 +190,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8360EF0F17F92C91005208A4 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8360EF0A17F92C91005208A4 /* Build configuration list for PBXProject "HighlyExperimental" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -162,6 +162,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
834378DD17F96E2600584396 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 834378D817F96E2600584396 /* Build configuration list for PBXProject "HighlyQuixotic" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -204,6 +204,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8343786D17F9658E00584396 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8343786817F9658E00584396 /* Build configuration list for PBXProject "HighlyTheoretical" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -144,6 +144,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
836FB555182053D700B3AD2D = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 836FB550182053D700B3AD2D /* Build configuration list for PBXProject "HivelyPlayer" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -244,6 +244,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8DC2EF4F0486A6940098B216 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "MPCDec" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -2349,6 +2349,11 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83E5EFBC1FFEF7CC00659F0F = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83E5EFB71FFEF7CC00659F0F /* Build configuration list for PBXProject "libOpenMPT" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -253,6 +253,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83848FB71807623F00E7332D = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83848FB21807623F00E7332D /* Build configuration list for PBXProject "SSEQPlayer" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -188,6 +188,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8DC2EF4F0486A6940098B216 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Shorten" */;
compatibilityVersion = "Xcode 12.0";
@ -274,7 +280,6 @@
INSTALL_PATH = "@loader_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.shorten;
PRODUCT_NAME = Shorten;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SKIP_INSTALL = YES;
WRAPPER_EXTENSION = framework;
@ -302,7 +307,6 @@
OTHER_CFLAGS = "-DHAVE_CONFIG_H";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.shorten;
PRODUCT_NAME = Shorten;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SHARED_PRECOMPS_DIR = "$(CACHE_ROOT)/SharedPrecompiledHeaders";
SKIP_INSTALL = YES;

View file

@ -443,7 +443,6 @@
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11";
PRODUCT_BUNDLE_IDENTIFIER = "org.cogx.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
};
name = Debug;
@ -476,7 +475,6 @@
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11";
PRODUCT_BUNDLE_IDENTIFIER = "org.cogx.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
};
name = Release;

View file

@ -599,7 +599,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83C8B62118AF57770071B040 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83C8B61C18AF57770071B040 /* Build configuration list for PBXProject "lazyusf" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -961,6 +961,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83C8B62118AF57770071B040 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83C8B61C18AF57770071B040 /* Build configuration list for PBXProject "lazyusf2" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -127,7 +127,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83D3C67A201D37D8005564CB = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83D3C675201D37D8005564CB /* Build configuration list for PBXProject "libbinio" */;
compatibilityVersion = "Xcode 8.0";

View file

@ -1107,6 +1107,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83CA24121D7BC47C00F2EA53 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83CA240D1D7BC47C00F2EA53 /* Build configuration list for PBXProject "mGBA" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -174,6 +174,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83B066AB180D56B9008E3612 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83B066A6180D56B9008E3612 /* Build configuration list for PBXProject "midi_processing" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -150,7 +150,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83F4D53918D82105009B2DE6 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83F4D53418D82105009B2DE6 /* Build configuration list for PBXProject "modplay" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -129,7 +129,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83A0F4971816CEAD00119DB4 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83A0F4921816CEAD00119DB4 /* Build configuration list for PBXProject "playptmod" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -148,6 +148,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8343781B17F93CB500584396 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8343781617F93CB500584396 /* Build configuration list for PBXProject "psflib" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -4076,6 +4076,7 @@
836F6B6218BDB8880095E648 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
COMBINE_HIDPI_IMAGES = YES;
DEAD_CODE_STRIPPING = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
@ -4092,6 +4093,7 @@
836F6B6318BDB8880095E648 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
COMBINE_HIDPI_IMAGES = YES;
DEAD_CODE_STRIPPING = YES;
DYLIB_COMPATIBILITY_VERSION = 1;

View file

@ -297,6 +297,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83DE0C05180A9BD400269051 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83DE0C00180A9BD400269051 /* Build configuration list for PBXProject "vio2sf" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -452,6 +452,8 @@ static void *playlistControllerContext = &playlistControllerContext;
float fontSize = [[[NSUserDefaultsController sharedUserDefaultsController] defaults] floatForKey:@"fontSize"];
BOOL cellRating = NO;
if(pe) {
cellIdentifier = [tableColumn identifier];
NSUInteger index = [cellIdentifiers indexOfObject:cellIdentifier];
@ -525,6 +527,7 @@ static void *playlistControllerContext = &playlistControllerContext;
rating = 5;
cellText = [@"" stringByPaddingToLength:rating withString:filledStar startingAtIndex:0];
cellText = [cellText stringByPaddingToLength:5 withString:emptyStar startingAtIndex:0];
cellRating = YES;
break;
}

View file

@ -536,7 +536,6 @@ NSURL *_Nullable urlForPath(NSString *_Nullable path) {
NSString *tagName = [PlaylistEntry metaTagForKey:key];
NSString *lowerKey = [tagName lowercaseString];
id valueObj = [metadata objectForKey:key];
id genericValue;
NSArray *values = nil;
NSString *firstValue = nil;
NSData *dataValue = nil;
@ -545,22 +544,15 @@ NSURL *_Nullable urlForPath(NSString *_Nullable path) {
if([values count]) {
firstValue = values[0];
}
genericValue = values;
} else if([valueObj isKindOfClass:[NSString class]]) {
firstValue = (NSString *)valueObj;
values = @[firstValue];
genericValue = values;
} else if([valueObj isKindOfClass:[NSNumber class]]) {
NSNumber *numberValue = (NSNumber *)valueObj;
firstValue = [numberValue stringValue];
values = @[firstValue];
genericValue = values;
} else if([valueObj isKindOfClass:[NSData class]]) {
dataValue = (NSData *)valueObj;
genericValue = dataValue;
} else {
// Unknown object in metadata block
genericValue = valueObj;
}
if([lowerKey isEqualToString:@"bitrate"]) {
self.bitrate = [firstValue intValue];
@ -601,7 +593,7 @@ NSURL *_Nullable urlForPath(NSString *_Nullable path) {
} else if([lowerKey isEqualToString:@"albumart"]) {
self.albumArt = dataValue;
} else {
[metaDict setObject:genericValue forKey:key];
[metaDict setObject:values forKey:key];
}
}
self.metadataBlob = [NSDictionary dictionaryWithDictionary:metaDict];

View file

@ -578,7 +578,6 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
[containerQueue waitUntilAllOperationsAreFinished];
progress = weakProgress;
[self setProgressJobStatus:progress];
[containerTask finish];
}
@ -683,6 +682,8 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
DLog(@"Valid urls: %@", validURLs);
progress = 0.0;
// Create actual entries
int count = (int)[validURLs count];
if(xmlData) count += [[xmlData objectForKey:@"entries"] count];
@ -866,10 +867,10 @@ NSURL *_Nullable urlForPath(NSString *_Nullable path);
double progressstep;
if(metadataLoadInProgress) {
if(metadataLoadInProgress && [queueThisJob count]) {
progressstep = 100.0 / (double)([queueThisJob count] + 1);
progress = progressstep;
} else {
} else if([queueThisJob count]) {
[self beginProgress:NSLocalizedString(@"ProgressActionLoadingMetadata", @"")];
[self beginProgressJob:NSLocalizedString(@"ProgressSubActionLoadingMetadata", @"") percentOfTotal:50.0];

View file

@ -157,6 +157,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
99B989F30CC7E10400C256E9 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -187,6 +187,11 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83D3C5F2201C674D005564CB = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83D3C5EE201C674D005564CB /* Build configuration list for PBXProject "AdPlug" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -191,6 +191,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8359FF1617FEF35C0060F3ED = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8359FF1217FEF35C0060F3ED /* Build configuration list for PBXProject "ArchiveSource" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -174,7 +174,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
839BCFD11965133E00947767 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 839BCFCD1965133E00947767 /* Build configuration list for PBXProject "BASSMODS" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -161,6 +161,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CoreAudio" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -166,7 +166,7 @@ static SInt64 getSizeProc(void *clientData) {
asbdSize = sizeof(asbd);
err = ExtAudioFileGetProperty(_in, kExtAudioFileProperty_FileDataFormat, &asbdSize, &asbd);
if(err != noErr) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
@ -174,7 +174,7 @@ static SInt64 getSizeProc(void *clientData) {
size = sizeof(total);
err = ExtAudioFileGetProperty(_in, kExtAudioFileProperty_FileLengthFrames, &size, &total);
if(err != noErr) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
totalFrames = total;
@ -182,7 +182,7 @@ static SInt64 getSizeProc(void *clientData) {
size = sizeof(afi);
err = ExtAudioFileGetProperty(_in, kExtAudioFileProperty_AudioFile, &size, &afi);
if(err != noErr) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
@ -193,7 +193,7 @@ static SInt64 getSizeProc(void *clientData) {
if(err == kAudioFileUnsupportedPropertyError) {
formatBitsPerSample = 0; // floating point formats apparently don't return this any more
} else {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
}
@ -202,36 +202,36 @@ static SInt64 getSizeProc(void *clientData) {
size = sizeof(_bitrate);
err = AudioFileGetProperty(afi, kAudioFilePropertyBitRate, &size, &_bitrate);
if(err != noErr) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
err = AudioFileGetPropertyInfo(afi, kAudioFilePropertyChannelLayout, &size, NULL);
if(err != noErr || size == 0) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
AudioChannelLayout *acl = malloc(size);
err = AudioFileGetProperty(afi, kAudioFilePropertyChannelLayout, &size, acl);
if(err != noErr) {
free(acl);
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
uint32_t config = 0;
for(uint32_t i = 0; i < acl->mNumberChannelDescriptions; ++i) {
int channelNumber = ffat_get_channel_id(acl->mChannelDescriptions[i].mChannelLabel);
if(channelNumber >= 0 && channelNumber <= 31) {
if(config & (1U << channelNumber)) {
if(channelNumber >= 0) {
if(config & (1 << channelNumber)) {
free(acl);
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
config |= 1 << channelNumber;
} else {
free(acl);
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
}
@ -246,7 +246,7 @@ static SInt64 getSizeProc(void *clientData) {
size = sizeof(formatName);
err = AudioFormatGetProperty(kAudioFormatProperty_FormatName, asbdSize, &asbd, &size, &formatName);
if(err != noErr) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}
@ -298,7 +298,7 @@ static SInt64 getSizeProc(void *clientData) {
err = ExtAudioFileSetProperty(_in, kExtAudioFileProperty_ClientDataFormat, sizeof(result), &result);
if(noErr != err) {
/*err =*/ ExtAudioFileDispose(_in);
err = ExtAudioFileDispose(_in);
return NO;
}

View file

@ -191,6 +191,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CueSheet" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -39,6 +39,7 @@
NSMutableArray *tracks = [NSMutableArray array];
BOOL embedded = NO;
CueSheet *cuesheet = nil;
NSDictionary *fileMetadata;
@ -78,6 +79,7 @@
if(sheetString && [sheetString length]) {
cuesheet = [CueSheet cueSheetWithString:sheetString withFilename:[url path]];
}
embedded = YES;
} else
cuesheet = [CueSheet cueSheetWithFile:[url path]];

View file

@ -287,6 +287,12 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Dumb" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -246,6 +246,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FFMPEG" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -47,6 +47,8 @@
AVFormatContext *formatCtx = NULL;
AVIOContext *ioCtx = NULL;
BOOL isStream = NO;
uint8_t *buffer = NULL;
FFMPEGReader *reader = nil;
@ -59,6 +61,8 @@
[source close];
source = nil;
isStream = YES;
formatCtx = avformat_alloc_context();
if(!formatCtx) {
ALog(@"Unable to allocate AVFormat context");
@ -108,8 +112,8 @@
}
int streamIndex = -1;
//int metadataIndex = -1;
//int attachedPicIndex = -1;
int metadataIndex = -1;
int attachedPicIndex = -1;
AVCodecParameters *codecPar;
for(i = 0; i < formatCtx->nb_streams; i++) {
@ -119,9 +123,9 @@
DLog(@"audio codec found");
streamIndex = i;
} else if(codecPar->codec_id == AV_CODEC_ID_TIMED_ID3) {
//metadataIndex = i;
metadataIndex = i;
} else if(stream->disposition & AV_DISPOSITION_ATTACHED_PIC) {
//attachedPicIndex = i;
attachedPicIndex = i;
} else {
stream->discard = AVDISCARD_ALL;
}

View file

@ -798,7 +798,7 @@ static void setDictionary(NSMutableDictionary *dict, NSString *tag, NSString *va
int seekBytesSkip = 0;
int errcode = 0;
int errcode;
int8_t *targetBuf = (int8_t *)buf;
memset(buf, 0, bytesToRead);

View file

@ -185,6 +185,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "FileSource" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -194,6 +194,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Flac" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -233,6 +233,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "GME" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -256,7 +256,7 @@ static size_t handle_icy_headers(size_t avail, HTTPSource *fp, char *ptr) {
fp->icyheader = 1;
// check for termination marker
// check for ternmination marker
if(avail >= 4 && !memcmp(ptr, "\r\n\r\n", 4)) {
avail -= 4;
ptr += 4;

View file

@ -184,6 +184,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "HTTPSource" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -428,6 +428,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8360EEE317F92AC8005208A4 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8360EEDF17F92AC8005208A4 /* Build configuration list for PBXProject "HighlyComplete" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -756,11 +756,9 @@ static int load_twosf_mapz(struct twosf_loader_state *state, int issave, const u
{
uLong ccrc = crc32(crc32(0L, Z_NULL, 0), rdata, (uInt)usize);
if(ccrc != zcrc) {
free(rdata);
if(ccrc != zcrc)
return -1;
}
}
ret = load_twosf_map(state, issave, rdata, (unsigned)usize);
free(rdata);

View file

@ -201,6 +201,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
836FB52C1820538700B3AD2D = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 836FB5281820538700B3AD2D /* Build configuration list for PBXProject "Hively" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -159,6 +159,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "M3u" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -399,6 +399,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83B06686180D5668008E3612 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83B06682180D5668008E3612 /* Build configuration list for PBXProject "MIDI" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -198,6 +198,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Musepack" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -182,6 +182,11 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83E5EFA21FFEF78100659F0F = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83E5EF9E1FFEF78100659F0F /* Build configuration list for PBXProject "OpenMPT" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -174,6 +174,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8375B03B17FFEA400092A79F = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8375B03717FFEA400092A79F /* Build configuration list for PBXProject "OpusPlugin" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -159,6 +159,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Pls" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -196,6 +196,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "Shorten" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -115,6 +115,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
83F9D7E61A884B44007ABEC2 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 83F9D7E21A884B44007ABEC2 /* Build configuration list for PBXProject "SilenceDecoder" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -203,6 +203,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "TagLib" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -218,6 +218,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "VorbisPlugin" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -170,6 +170,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "WavPack" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -218,6 +218,12 @@
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
TargetAttributes = {
8D5B49AC048680CD000E48DA = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "libvgmPlayer" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D5B49AC048680CD000E48DA"
BuildableName = "GME.bundle"
BlueprintName = "GME Plugin"
ReferencedContainer = "container:GME.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D5B49AC048680CD000E48DA"
BuildableName = "GME.bundle"
BlueprintName = "GME Plugin"
ReferencedContainer = "container:GME.xcodeproj">
</BuildableReference>
</MacroExpansion>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D5B49AC048680CD000E48DA"
BuildableName = "GME.bundle"
BlueprintName = "GME Plugin"
ReferencedContainer = "container:GME.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -15,9 +15,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8372C92227C785BD00E250C9"
BuildableName = "minimp3.bundle"
BlueprintName = "minimp3"
ReferencedContainer = "container:minimp3.xcodeproj">
BuildableName = "MAD.bundle"
BlueprintName = "MAD"
ReferencedContainer = "container:MAD.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
@ -33,9 +33,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8372C92227C785BD00E250C9"
BuildableName = "minimp3.bundle"
BlueprintName = "minimp3"
ReferencedContainer = "container:minimp3.xcodeproj">
BuildableName = "MAD.bundle"
BlueprintName = "MAD"
ReferencedContainer = "container:MAD.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
@ -69,9 +69,9 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8372C92227C785BD00E250C9"
BuildableName = "minimp3.bundle"
BlueprintName = "minimp3"
ReferencedContainer = "container:minimp3.xcodeproj">
BuildableName = "MAD.bundle"
BlueprintName = "MAD"
ReferencedContainer = "container:MAD.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>

View file

@ -227,7 +227,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83F4D51418D8206A009B2DE6 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83F4D51018D8206A009B2DE6 /* Build configuration list for PBXProject "modplay" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -236,7 +236,13 @@
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "";
ORGANIZATIONNAME = "Christopher Snowhill";
TargetAttributes = {
83A0F46E1816CE5E00119DB4 = {
DevelopmentTeam = "";
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83A0F46A1816CE5E00119DB4 /* Build configuration list for PBXProject "playptmod" */;
compatibilityVersion = "Xcode 3.2";

View file

@ -178,6 +178,12 @@
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1620;
ORGANIZATIONNAME = "";
TargetAttributes = {
8314D6301A354DFE00EEE8E6 = {
DevelopmentTeam = "";
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 8314D62C1A354DFE00EEE8E6 /* Build configuration list for PBXProject "sidplay" */;
compatibilityVersion = "Xcode 12.0";

View file

@ -197,6 +197,7 @@
[panel setCanChooseFiles:NO];
[panel setFloatingPanel:YES];
[panel setDirectoryURL:[NSURL fileURLWithPath:pi.path]];
[panel setTitle:@"Open to add path"];
NSInteger result = [panel runModal];
if(result == NSModalResponseOK) {
[sandboxPathBehaviorController addUrl:[panel URL]];

View file

@ -600,6 +600,7 @@
INSTALL_PATH = "$(HOME)/Library/Bundles";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences;
PRODUCT_NAME = Preferences;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
WRAPPER_EXTENSION = preferencePane;
ZERO_LINK = YES;
@ -620,6 +621,7 @@
INSTALL_PATH = "$(HOME)/Library/Bundles";
PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cog.preferences;
PRODUCT_NAME = Preferences;
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
WRAPPER_EXTENSION = preferencePane;
};

View file

@ -2,6 +2,6 @@
@interface NSDictionary (Optional)
+ (NSDictionary *_Nonnull)initWithOptionalObjects:(const id _Nullable [_Nullable])objects forKeys:(id<NSCopying> const _Nullable [_Nullable])keys count:(NSUInteger)cnt;
+ (NSDictionary *)initWithOptionalObjects:(const id _Nonnull [_Nullable])objects forKeys:(id<NSCopying> const[])keys count:(NSUInteger)cnt;
@end

View file

@ -2,15 +2,13 @@
@implementation NSDictionary (Optional)
+ (NSDictionary *_Nonnull)initWithOptionalObjects:(const id _Nullable [_Nullable])objects forKeys:(id<NSCopying> const _Nullable [_Nullable])keys count:(NSUInteger)cnt {
+ (NSDictionary *)initWithOptionalObjects:(const id _Nonnull [_Nullable])objects forKeys:(id<NSCopying> const[])keys count:(NSUInteger)cnt {
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
if(keys && objects && cnt) {
for(NSUInteger i = 0; i < cnt; ++i) {
if(keys[i] && objects[i]) {
[dictionary setObject:objects[i] forKey:keys[i]];
}
}
}
return [NSDictionary dictionaryWithDictionary:dictionary];
}

View file

@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (SandboxBroker *)sharedSandboxBroker;
+ (NSURL *_Nullable)urlWithoutFragment:(NSURL *)url;
+ (NSURL *)urlWithoutFragment:(NSURL *)url;
+ (BOOL)isPath:(NSURL *)path aSubdirectoryOf:(NSURL *)directory;
+ (void)cleanupFolderAccess;
@ -28,8 +28,8 @@ NS_ASSUME_NONNULL_BEGIN
- (void)requestFolderForFile:(NSURL *)fileUrl;
- (const void *_Nullable)beginFolderAccess:(NSURL *)fileUrl;
- (void)endFolderAccess:(const void *_Nullable)handle;
- (const void *)beginFolderAccess:(NSURL *)fileUrl;
- (void)endFolderAccess:(const void *)handle;
- (BOOL)areAllPathsSafe:(NSArray *)urls;

View file

@ -96,11 +96,11 @@ static SandboxBroker *kSharedSandboxBroker = nil;
return [NSClassFromString(@"PlaylistController") sharedPersistentContainer];
}
+ (NSURL *_Nullable)urlWithoutFragment:(NSURL *)url {
+ (NSURL *)urlWithoutFragment:(NSURL *)url {
if(![url isFileURL]) return url;
NSString *s = [url path];
if(!s) return nil; // Cool, the resource no longer exists!
if(!s) return NULL; // Cool, the resource no longer exists!
NSRange fragmentRange = [s rangeOfString:@"#"
options:NSBackwardsSearch];
@ -116,12 +116,12 @@ static SandboxBroker *kSharedSandboxBroker = nil;
}
- (id)init {
self = [super init];
if(self) {
id _self = [super init];
if(_self) {
storage = [[NSMutableArray alloc] init];
}
return self;
return _self;
}
- (void)shutdown {
@ -421,7 +421,7 @@ static inline void dispatch_async_reentrant(dispatch_queue_t queue, dispatch_blo
}];
}
- (const void *_Nullable)beginFolderAccess:(NSURL *)fileUrl {
- (const void *)beginFolderAccess:(NSURL *)fileUrl {
if(!fileUrl) return NULL;
NSURL *folderUrl = [SandboxBroker urlWithoutFragment:fileUrl];
if(!folderUrl || ![folderUrl isFileURL]) return NULL;
@ -459,7 +459,7 @@ static inline void dispatch_async_reentrant(dispatch_queue_t queue, dispatch_blo
return NULL;
}
- (void)endFolderAccess:(const void *_Nullable)handle {
- (void)endFolderAccess:(const void *)handle {
if(!handle) return;
SandboxEntry *entry = CFBridgingRelease(handle);
if(!entry) return;

View file

@ -17,7 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic) BOOL isListening;
@property(nonatomic) BOOL isWorking;
+ (SpectrumViewSK *_Nullable)createGuardWithFrame:(NSRect)frame;
+ (SpectrumViewSK *)createGuardWithFrame:(NSRect)frame;
- (void)enableCameraControl;
- (void)startPlayback;

View file

@ -56,7 +56,7 @@ extern NSString *CogPlaybackDidStopNotificiation;
@implementation SpectrumViewSK
+ (SpectrumViewSK *_Nullable)createGuardWithFrame:(NSRect)frame {
+ (SpectrumViewSK *)createGuardWithFrame:(NSRect)frame {
if (![NSUserDefaults.standardUserDefaults boolForKey:@"spectrumSceneKit"])
return nil;