From 777ab28d6a2d531a0ec75152b493ffd732aaad8e Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Fri, 4 Mar 2022 02:07:38 -0800 Subject: [PATCH] Replaced libsoxr with r8brain free source Replaced the free SoX resampler with the r8brain resampler source, which is also free. Signed-off-by: Christopher Snowhill --- .gitmodules | 3 + Audio/Chain/ConverterNode.h | 4 +- .../{ConverterNode.m => ConverterNode.mm} | 103 +++--- .../{HeadphoneFilter.m => HeadphoneFilter.mm} | 23 +- Audio/CogAudio.xcodeproj/project.pbxproj | 197 ++++++++-- Audio/ThirdParty/libsoxr/README.md | 22 -- Audio/ThirdParty/libsoxr/include/soxr.h | 344 ------------------ Audio/ThirdParty/libsoxr/lib/libsoxr.a | Bin 415576 -> 0 bytes Audio/ThirdParty/lvqcl/lpc.h | 8 + Audio/ThirdParty/r8brain-free-src | 1 + Audio/ThirdParty/r8bstate.h | 132 +++++++ 11 files changed, 362 insertions(+), 475 deletions(-) rename Audio/Chain/{ConverterNode.m => ConverterNode.mm} (87%) rename Audio/Chain/{HeadphoneFilter.m => HeadphoneFilter.mm} (96%) delete mode 100644 Audio/ThirdParty/libsoxr/README.md delete mode 100644 Audio/ThirdParty/libsoxr/include/soxr.h delete mode 100644 Audio/ThirdParty/libsoxr/lib/libsoxr.a create mode 160000 Audio/ThirdParty/r8brain-free-src create mode 100644 Audio/ThirdParty/r8bstate.h diff --git a/.gitmodules b/.gitmodules index a12986d3c..8d2278d5c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "Frameworks/libsidplayfp/sidplayfp"] path = Frameworks/libsidplayfp/sidplayfp url = https://github.com/kode54/libsidplayfp.git +[submodule "Audio/ThirdParty/r8brain-free-src"] + path = Audio/ThirdParty/r8brain-free-src + url = https://github.com/avaneev/r8brain-free-src diff --git a/Audio/Chain/ConverterNode.h b/Audio/Chain/ConverterNode.h index bf31c2631..155ad7ef7 100644 --- a/Audio/Chain/ConverterNode.h +++ b/Audio/Chain/ConverterNode.h @@ -12,8 +12,6 @@ #import #import -#import - #import "Node.h" #import "HeadphoneFilter.h" @@ -21,7 +19,7 @@ @interface ConverterNode : Node { NSDictionary *rgInfo; - soxr_t soxr; + void *_r8bstate; void *inputBuffer; size_t inputBufferSize; diff --git a/Audio/Chain/ConverterNode.m b/Audio/Chain/ConverterNode.mm similarity index 87% rename from Audio/Chain/ConverterNode.m rename to Audio/Chain/ConverterNode.mm index 51acc2f9d..47decf594 100644 --- a/Audio/Chain/ConverterNode.m +++ b/Audio/Chain/ConverterNode.mm @@ -22,6 +22,8 @@ #import "BadSampleCleaner.h" #endif +#import "r8bstate.h" + void PrintStreamDesc(AudioStreamBasicDescription *inDesc) { if(!inDesc) { DLog(@"Can't print a NULL desc!\n"); @@ -48,7 +50,7 @@ void PrintStreamDesc(AudioStreamBasicDescription *inDesc) { if(self) { rgInfo = nil; - soxr = 0; + _r8bstate = 0; inputBuffer = NULL; inputBufferSize = 0; floatBuffer = NULL; @@ -76,7 +78,7 @@ void PrintStreamDesc(AudioStreamBasicDescription *inDesc) { return self; } -void scale_by_volume(float *buffer, size_t count, float volume) { +extern "C" void scale_by_volume(float *buffer, size_t count, float volume) { if(volume != 1.0) { size_t unaligned = (uintptr_t)buffer & 15; if(unaligned) { @@ -147,6 +149,10 @@ static void dsd2pcm_reset(void *); static void *dsd2pcm_alloc() { struct dsd2pcm_state *state = (struct dsd2pcm_state *)calloc(1, sizeof(struct dsd2pcm_state)); + float *FILT_LOOKUP_TABLE; + double *temp; + uint8_t *REVERSE_BITS; + if(!state) return NULL; @@ -156,8 +162,8 @@ static void *dsd2pcm_alloc() { state->FILT_LOOKUP_TABLE = (float *)calloc(sizeof(float), FILT_LOOKUP_PARTS << 8); if(!state->FILT_LOOKUP_TABLE) goto fail; - float *FILT_LOOKUP_TABLE = state->FILT_LOOKUP_TABLE; - double *temp = (double *)calloc(sizeof(double), 0x100); + FILT_LOOKUP_TABLE = state->FILT_LOOKUP_TABLE; + temp = (double *)calloc(sizeof(double), 0x100); if(!temp) goto fail; for(int part = 0, sofs = 0, dofs = 0; part < FILT_LOOKUP_PARTS;) { @@ -190,7 +196,7 @@ static void *dsd2pcm_alloc() { state->REVERSE_BITS = (uint8_t *)calloc(1, 0x100); if(!state->REVERSE_BITS) goto fail; - uint8_t *REVERSE_BITS = state->REVERSE_BITS; + REVERSE_BITS = state->REVERSE_BITS; for(int i = 0, j = 0; i < 0x100; i++) { REVERSE_BITS[i] = (uint8_t)j; // "reverse-increment" of j @@ -507,7 +513,7 @@ tryagain: size_t bytesRead = frameCount * inf.mBytesPerPacket; if(frameCount) { NSData *samples = [chunk removeSamples:frameCount]; - memcpy(inputBuffer + bytesReadFromInput, [samples bytes], bytesRead); + memcpy(((uint8_t *)inputBuffer) + bytesReadFromInput, [samples bytes], bytesRead); lastChunkIn = [[AudioChunk alloc] init]; [lastChunkIn setFormat:inf]; [lastChunkIn setChannelConfig:config]; @@ -526,7 +532,7 @@ tryagain: if(!skipResampler && !is_postextrapolated_) { if(dsd2pcm) { uint32_t amountToSkip = dsd2pcmLatency * inputFormat.mBytesPerPacket; - memset(inputBuffer + bytesReadFromInput, 0x55, amountToSkip); + memset(((uint8_t *)inputBuffer) + bytesReadFromInput, 0x55, amountToSkip); bytesReadFromInput += amountToSkip; } is_postextrapolated_ = 1; @@ -559,14 +565,14 @@ tryagain: if(bytesReadFromInput && isBigEndian) { // Time for endian swap! - convert_be_to_le(inputBuffer, inputFormat.mBitsPerChannel, bytesReadFromInput); + convert_be_to_le((uint8_t *)inputBuffer, inputFormat.mBitsPerChannel, bytesReadFromInput); } if(bytesReadFromInput && isFloat && inputFormat.mBitsPerChannel == 64) { // Time for precision loss from weird inputs samplesRead = bytesReadFromInput / sizeof(double); - convert_f64_to_f32(inputBuffer + bytesReadFromInput, inputBuffer, samplesRead); - memmove(inputBuffer, inputBuffer + bytesReadFromInput, samplesRead * sizeof(float)); + convert_f64_to_f32((float *)(((uint8_t *)inputBuffer) + bytesReadFromInput), (const double *)inputBuffer, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + bytesReadFromInput, samplesRead * sizeof(float)); bytesReadFromInput = samplesRead * sizeof(float); } @@ -575,8 +581,8 @@ tryagain: if(bitsPerSample == 1) { samplesRead = bytesReadFromInput / inputFormat.mBytesPerPacket; size_t buffer_adder = (bytesReadFromInput + 15) & ~15; - convert_dsd_to_f32(inputBuffer + buffer_adder, inputBuffer, samplesRead, inputFormat.mChannelsPerFrame, dsd2pcm); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * inputFormat.mChannelsPerFrame * sizeof(float)); + convert_dsd_to_f32((float *)(((uint8_t *)inputBuffer) + buffer_adder), (const uint8_t *)inputBuffer, samplesRead, inputFormat.mChannelsPerFrame, dsd2pcm); + memmove(inputBuffer, ((const uint8_t *)inputBuffer) + buffer_adder, samplesRead * inputFormat.mChannelsPerFrame * sizeof(float)); bitsPerSample = 32; bytesReadFromInput = samplesRead * inputFormat.mChannelsPerFrame * sizeof(float); isFloat = YES; @@ -584,10 +590,10 @@ tryagain: samplesRead = bytesReadFromInput; size_t buffer_adder = (bytesReadFromInput + 1) & ~1; if(!isUnsigned) - convert_s8_to_s16(inputBuffer + buffer_adder, inputBuffer, samplesRead); + convert_s8_to_s16((int16_t *)(((uint8_t *)inputBuffer) + buffer_adder), (const uint8_t *)inputBuffer, samplesRead); else - convert_u8_to_s16(inputBuffer + buffer_adder, inputBuffer, samplesRead); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * 2); + convert_u8_to_s16((int16_t *)(((uint8_t *)inputBuffer) + buffer_adder), (const uint8_t *)inputBuffer, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + buffer_adder, samplesRead * 2); bitsPerSample = 16; bytesReadFromInput = samplesRead * 2; isUnsigned = NO; @@ -595,11 +601,11 @@ tryagain: if(hdcd_decoder) { // implied bits per sample is 16, produces 32 bit int scale samplesRead = bytesReadFromInput / 2; if(isUnsigned) - convert_u16_to_s16(inputBuffer, samplesRead); + convert_u16_to_s16((int16_t *)inputBuffer, samplesRead); size_t buffer_adder = (bytesReadFromInput + 3) & ~3; - convert_s16_to_hdcd_input(inputBuffer + buffer_adder, inputBuffer, samplesRead); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * 4); - hdcd_process_stereo((hdcd_state_stereo_t *)hdcd_decoder, inputBuffer, (int)(samplesRead / 2)); + convert_s16_to_hdcd_input((int32_t *)(((uint8_t *)inputBuffer) + buffer_adder), (int16_t *)inputBuffer, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + buffer_adder, samplesRead * 4); + hdcd_process_stereo((hdcd_state_stereo_t *)hdcd_decoder, (int32_t *)inputBuffer, (int)(samplesRead / 2)); if(((hdcd_state_stereo_t *)hdcd_decoder)->channel[0].sustain && ((hdcd_state_stereo_t *)hdcd_decoder)->channel[1].sustain) { [controller sustainHDCD]; @@ -611,12 +617,12 @@ tryagain: } else if(bitsPerSample <= 16) { samplesRead = bytesReadFromInput / 2; if(isUnsigned) - convert_u16_to_s16(inputBuffer, samplesRead); + convert_u16_to_s16((int16_t *)inputBuffer, samplesRead); size_t buffer_adder = (bytesReadFromInput + 15) & ~15; // vDSP functions expect aligned to four elements - vDSP_vflt16((const short *)inputBuffer, 1, (float *)(inputBuffer + buffer_adder), 1, samplesRead); + vDSP_vflt16((const short *)inputBuffer, 1, (float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, samplesRead); float scale = 1ULL << 15; - vDSP_vsdiv((const float *)(inputBuffer + buffer_adder), 1, &scale, (float *)(inputBuffer + buffer_adder), 1, samplesRead); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * sizeof(float)); + vDSP_vsdiv((const float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, &scale, (float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + buffer_adder, samplesRead * sizeof(float)); bitsPerSample = 32; bytesReadFromInput = samplesRead * sizeof(float); isUnsigned = NO; @@ -625,10 +631,10 @@ tryagain: samplesRead = bytesReadFromInput / 3; size_t buffer_adder = (bytesReadFromInput + 3) & ~3; if(isUnsigned) - convert_u24_to_s32(inputBuffer + buffer_adder, inputBuffer, samplesRead); + convert_u24_to_s32((int32_t *)(((uint8_t *)inputBuffer) + buffer_adder), (uint8_t *)inputBuffer, samplesRead); else - convert_s24_to_s32(inputBuffer + buffer_adder, inputBuffer, samplesRead); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * 4); + convert_s24_to_s32((int32_t *)(((uint8_t *)inputBuffer) + buffer_adder), (uint8_t *)inputBuffer, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + buffer_adder, samplesRead * 4); bitsPerSample = 32; bytesReadFromInput = samplesRead * 4; isUnsigned = NO; @@ -636,12 +642,12 @@ tryagain: if(!isFloat && bitsPerSample <= 32) { samplesRead = bytesReadFromInput / 4; if(isUnsigned) - convert_u32_to_s32(inputBuffer, samplesRead); + convert_u32_to_s32((int32_t *)inputBuffer, samplesRead); size_t buffer_adder = (bytesReadFromInput + 31) & ~31; // vDSP functions expect aligned to four elements - vDSP_vflt32((const int *)inputBuffer, 1, (float *)(inputBuffer + buffer_adder), 1, samplesRead); + vDSP_vflt32((const int *)inputBuffer, 1, (float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, samplesRead); float scale = (1ULL << 31) / gain; - vDSP_vsdiv((const float *)(inputBuffer + buffer_adder), 1, &scale, (float *)(inputBuffer + buffer_adder), 1, samplesRead); - memmove(inputBuffer, inputBuffer + buffer_adder, samplesRead * sizeof(float)); + vDSP_vsdiv((const float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, &scale, (float *)(((uint8_t *)inputBuffer) + buffer_adder), 1, samplesRead); + memmove(inputBuffer, ((uint8_t *)inputBuffer) + buffer_adder, samplesRead * sizeof(float)); bitsPerSample = 32; bytesReadFromInput = samplesRead * sizeof(float); isUnsigned = NO; @@ -678,9 +684,9 @@ tryagain: } } - memmove(inputBuffer + N_samples_to_add_ * floatFormat.mBytesPerPacket, inputBuffer + bytesToSkip, bytesReadFromInput); + memmove(((uint8_t *)inputBuffer) + N_samples_to_add_ * floatFormat.mBytesPerPacket, ((uint8_t *)inputBuffer) + bytesToSkip, bytesReadFromInput); - lpc_extrapolate_bkwd(inputBuffer + _N_samples_to_add_ * floatFormat.mBytesPerPacket, samples_in_buffer, prime, floatFormat.mChannelsPerFrame, LPC_ORDER, _N_samples_to_add_, &extrapolateBuffer, &extrapolateBufferSize); + lpc_extrapolate_bkwd((float *)(((uint8_t *)inputBuffer) + _N_samples_to_add_ * floatFormat.mBytesPerPacket), samples_in_buffer, prime, floatFormat.mChannelsPerFrame, LPC_ORDER, _N_samples_to_add_, &extrapolateBuffer, &extrapolateBufferSize); #ifdef _DEBUG [BadSampleCleaner cleanSamples:(float *)inputBuffer amount:_N_samples_to_add_ * floatFormat.mChannelsPerFrame @@ -707,7 +713,7 @@ tryagain: inputBuffer = realloc(inputBuffer, inputBufferSize = newSize * 3); } - lpc_extrapolate_fwd(inputBuffer, samples_in_buffer, prime, floatFormat.mChannelsPerFrame, LPC_ORDER, N_samples_to_add_, &extrapolateBuffer, &extrapolateBufferSize); + lpc_extrapolate_fwd((float *)inputBuffer, samples_in_buffer, prime, floatFormat.mChannelsPerFrame, LPC_ORDER, N_samples_to_add_, &extrapolateBuffer, &extrapolateBufferSize); #ifdef _DEBUG [BadSampleCleaner cleanSamples:(float *)(inputBuffer) + samples_in_buffer * floatFormat.mChannelsPerFrame amount:N_samples_to_add_ * floatFormat.mChannelsPerFrame @@ -748,14 +754,12 @@ tryagain: size_t outputDone = 0; if(!skipResampler) { - ioNumberPackets += soxr_delay(soxr); - #ifdef _DEBUG [BadSampleCleaner cleanSamples:(float *)(((uint8_t *)inputBuffer) + inpOffset) amount:inputSamples * floatFormat.mChannelsPerFrame location:@"resampler input"]; #endif - soxr_process(soxr, (float *)(((uint8_t *)inputBuffer) + inpOffset), inputSamples, &inputDone, floatBuffer, ioNumberPackets, &outputDone); + outputDone = ((r8bstate *)_r8bstate)->resample((float *)(((uint8_t *)inputBuffer) + inpOffset), inputSamples, &inputDone, (float *)floatBuffer, ioNumberPackets); #ifdef _DEBUG [BadSampleCleaner cleanSamples:(float *)floatBuffer amount:outputDone * floatFormat.mChannelsPerFrame @@ -764,10 +768,10 @@ tryagain: if(latencyEatenPost) { // Post file flush - size_t idone = 0, odone = 0; + size_t odone = 0; do { - soxr_process(soxr, NULL, 0, &idone, floatBuffer + outputDone * floatFormat.mBytesPerPacket, ioNumberPackets - outputDone, &odone); + odone = ((r8bstate *)_r8bstate)->flush((float *)(((uint8_t *)floatBuffer) + outputDone * floatFormat.mBytesPerPacket), ioNumberPackets - outputDone); #ifdef _DEBUG [BadSampleCleaner cleanSamples:(float *)(floatBuffer + outputDone * floatFormat.mBytesPerPacket) amount:odone * floatFormat.mChannelsPerFrame @@ -787,7 +791,7 @@ tryagain: if(latencyEaten) { if(outputDone > latencyEaten) { outputDone -= latencyEaten; - memmove(floatBuffer, floatBuffer + latencyEaten * floatFormat.mBytesPerPacket, outputDone * floatFormat.mBytesPerPacket); + memmove(floatBuffer, ((uint8_t *)floatBuffer) + latencyEaten * floatFormat.mBytesPerPacket, outputDone * floatFormat.mBytesPerPacket); latencyEaten = 0; } else { latencyEaten -= outputDone; @@ -821,7 +825,7 @@ tryagain: ioNumberPackets -= ioNumberPackets % outputFormat.mBytesPerPacket; - memcpy(dest + amountRead, floatBuffer + floatOffset, ioNumberPackets); + memcpy(((uint8_t *)dest) + amountRead, ((uint8_t *)floatBuffer) + floatOffset, ioNumberPackets); floatOffset += ioNumberPackets; amountRead += ioNumberPackets; @@ -924,7 +928,7 @@ static float db_to_scale(float db) { // Decimate this for speed floatFormat.mSampleRate *= 1.0 / 8.0; dsd2pcmCount = floatFormat.mChannelsPerFrame; - dsd2pcm = calloc(dsd2pcmCount, sizeof(void *)); + dsd2pcm = (void **)calloc(dsd2pcmCount, sizeof(void *)); dsd2pcm[0] = dsd2pcm_alloc(); dsd2pcmLatency = dsd2pcm_latency(dsd2pcm[0]); for(size_t i = 1; i < dsd2pcmCount; ++i) { @@ -951,16 +955,9 @@ static float db_to_scale(float db) { sampleRatio = (double)outputFormat.mSampleRate / (double)floatFormat.mSampleRate; if(!skipResampler) { - soxr_quality_spec_t q_spec = soxr_quality_spec(SOXR_HQ, 0); - soxr_io_spec_t io_spec = soxr_io_spec(SOXR_FLOAT32_I, SOXR_FLOAT32_I); - soxr_runtime_spec_t runtime_spec = soxr_runtime_spec(0); + const int channelCount = floatFormat.mChannelsPerFrame; - soxr_error_t error; - - soxr = soxr_create(floatFormat.mSampleRate, outputFormat.mSampleRate, floatFormat.mChannelsPerFrame, &error, &io_spec, &q_spec, &runtime_spec); - - if(error) - return NO; + _r8bstate = (void *)(new r8bstate(channelCount, 1024, floatFormat.mSampleRate, outputFormat.mSampleRate)); PRIME_LEN_ = max(floatFormat.mSampleRate / 20, 1024u); PRIME_LEN_ = min(PRIME_LEN_, 16384u); @@ -1035,9 +1032,9 @@ static float db_to_scale(float db) { free(hdcd_decoder); hdcd_decoder = NULL; } - if(soxr) { - soxr_delete(soxr); - soxr = NULL; + if(_r8bstate) { + delete(r8bstate *)_r8bstate; + _r8bstate = NULL; } if(dsd2pcm && dsd2pcmCount) { for(size_t i = 0; i < dsd2pcmCount; ++i) { diff --git a/Audio/Chain/HeadphoneFilter.m b/Audio/Chain/HeadphoneFilter.mm similarity index 96% rename from Audio/Chain/HeadphoneFilter.m rename to Audio/Chain/HeadphoneFilter.mm index 513b8230e..62c4df685 100644 --- a/Audio/Chain/HeadphoneFilter.m +++ b/Audio/Chain/HeadphoneFilter.mm @@ -10,9 +10,10 @@ #import "AudioDecoder.h" #import "AudioSource.h" -#import #import +#import "r8bstate.h" + #import "lpc.h" #import "util.h" @@ -197,12 +198,8 @@ static const int8_t speakers_to_hesuvi_14[11][2] = { double sampleRatio = sampleRate / sampleRateOfSource; int resampledCount = (int)ceil((double)sampleCount * sampleRatio); - soxr_quality_spec_t q_spec = soxr_quality_spec(SOXR_HQ, 0); - soxr_io_spec_t io_spec = soxr_io_spec(SOXR_FLOAT32_I, SOXR_FLOAT32_I); - soxr_runtime_spec_t runtime_spec = soxr_runtime_spec(0); - - soxr_error_t error; - + r8bstate *_r8bstate = new r8bstate(impulseChannels, 1024, sampleRateOfSource, sampleRate); + unsigned long PRIME_LEN_ = MAX(sampleRateOfSource / 20, 1024u); PRIME_LEN_ = MIN(PRIME_LEN_, 16384u); PRIME_LEN_ = MAX(PRIME_LEN_, 2 * LPC_ORDER + 1); @@ -244,13 +241,13 @@ static const int8_t speakers_to_hesuvi_14[11][2] = { size_t inputDone = 0; size_t outputDone = 0; - error = soxr_oneshot(sampleRateOfSource, sampleRate, impulseChannels, impulseBuffer, sampleCount + N_samples_to_add_ * 2, &inputDone, resampledImpulse, resampledCount, &outputDone, &io_spec, &q_spec, &runtime_spec); - - if(error) { - free(resampledImpulse); - free(impulseBuffer); - return nil; + outputDone = _r8bstate->resample(impulseBuffer, sampleCount + N_samples_to_add_ * 2, &inputDone, resampledImpulse, resampledCount); + + if (outputDone < resampledCount) { + outputDone += _r8bstate->flush(resampledImpulse + outputDone * impulseChannels, resampledCount - outputDone); } + + delete _r8bstate; outputDone -= N_samples_to_drop_ * 2; diff --git a/Audio/CogAudio.xcodeproj/project.pbxproj b/Audio/CogAudio.xcodeproj/project.pbxproj index 211d6ad23..6b35a73d3 100644 --- a/Audio/CogAudio.xcodeproj/project.pbxproj +++ b/Audio/CogAudio.xcodeproj/project.pbxproj @@ -61,11 +61,10 @@ 835C88AD2797DA5800E28EAE /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 835C88AC2797DA5800E28EAE /* util.h */; }; 835C88B1279811A500E28EAE /* hdcd_decode2.h in Headers */ = {isa = PBXBuildFile; fileRef = 835C88AF279811A500E28EAE /* hdcd_decode2.h */; }; 835C88B2279811A500E28EAE /* hdcd_decode2.c in Sources */ = {isa = PBXBuildFile; fileRef = 835C88B0279811A500E28EAE /* hdcd_decode2.c */; }; - 835EDD7B279FE23A001EDCCE /* HeadphoneFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.m */; }; + 835EDD7B279FE23A001EDCCE /* HeadphoneFilter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.mm */; }; 835EDD7D279FE307001EDCCE /* HeadphoneFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 835EDD7C279FE307001EDCCE /* HeadphoneFilter.h */; }; 835FAC5E27BCA14D00BA8562 /* BadSampleCleaner.h in Headers */ = {isa = PBXBuildFile; fileRef = 835FAC5C27BCA14D00BA8562 /* BadSampleCleaner.h */; }; 835FAC5F27BCA14D00BA8562 /* BadSampleCleaner.m in Sources */ = {isa = PBXBuildFile; fileRef = 835FAC5D27BCA14D00BA8562 /* BadSampleCleaner.m */; }; - 83725A8B27AA0DBF0003F694 /* soxr.h in Headers */ = {isa = PBXBuildFile; fileRef = 83725A8827AA0DBF0003F694 /* soxr.h */; }; 83725A9027AA16C90003F694 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83725A7B27AA0D8A0003F694 /* Accelerate.framework */; }; 83725A9127AA16D50003F694 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83725A7C27AA0D8E0003F694 /* AVFoundation.framework */; }; 8377C64C27B8C51500E8BC0F /* fft_accelerate.c in Sources */ = {isa = PBXBuildFile; fileRef = 8377C64B27B8C51500E8BC0F /* fft_accelerate.c */; }; @@ -77,12 +76,39 @@ 839366681815923C006DD712 /* CogPluginMulti.m in Sources */ = {isa = PBXBuildFile; fileRef = 839366661815923C006DD712 /* CogPluginMulti.m */; }; 8399CF2C27B5D1D5008751F1 /* NSDictionary+Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 8399CF2A27B5D1D4008751F1 /* NSDictionary+Merge.h */; }; 8399CF2D27B5D1D5008751F1 /* NSDictionary+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8399CF2B27B5D1D4008751F1 /* NSDictionary+Merge.m */; }; - 83FA145327CA1FEB00483F3C /* libsoxr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 83FA145227CA1FEB00483F3C /* libsoxr.a */; }; + 83F18B1E27D1E8EF00385946 /* CDSPHBDownsampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18ADF27D1E8EF00385946 /* CDSPHBDownsampler.h */; }; + 83F18B1F27D1E8EF00385946 /* pffft_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE127D1E8EF00385946 /* pffft_double.h */; }; + 83F18B2027D1E8EF00385946 /* pf_neon_double_from_avx.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE327D1E8EF00385946 /* pf_neon_double_from_avx.h */; }; + 83F18B2127D1E8EF00385946 /* pf_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE427D1E8EF00385946 /* pf_double.h */; }; + 83F18B2227D1E8EF00385946 /* pf_neon_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE527D1E8EF00385946 /* pf_neon_double.h */; }; + 83F18B2327D1E8EF00385946 /* pf_sse2_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE627D1E8EF00385946 /* pf_sse2_double.h */; }; + 83F18B2427D1E8EF00385946 /* pf_avx_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE727D1E8EF00385946 /* pf_avx_double.h */; }; + 83F18B2527D1E8EF00385946 /* pf_scalar_double.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE827D1E8EF00385946 /* pf_scalar_double.h */; }; + 83F18B2627D1E8EF00385946 /* pffft_priv_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AE927D1E8EF00385946 /* pffft_priv_impl.h */; }; + 83F18B2727D1E8EF00385946 /* pffft_double.c in Sources */ = {isa = PBXBuildFile; fileRef = 83F18AEA27D1E8EF00385946 /* pffft_double.c */; }; + 83F18B3327D1E8EF00385946 /* CDSPSincFilterGen.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AF827D1E8EF00385946 /* CDSPSincFilterGen.h */; }; + 83F18B3427D1E8EF00385946 /* r8butil.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AF927D1E8EF00385946 /* r8butil.h */; }; + 83F18B3627D1E8EF00385946 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 83F18AFB27D1E8EF00385946 /* LICENSE */; }; + 83F18B3727D1E8EF00385946 /* r8bbase.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AFC27D1E8EF00385946 /* r8bbase.h */; }; + 83F18B3827D1E8EF00385946 /* CDSPFIRFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18AFD27D1E8EF00385946 /* CDSPFIRFilter.h */; }; + 83F18B4227D1E8EF00385946 /* CDSPProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B0827D1E8EF00385946 /* CDSPProcessor.h */; }; + 83F18B4327D1E8EF00385946 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 83F18B0927D1E8EF00385946 /* README.md */; }; + 83F18B4427D1E8EF00385946 /* fft4g.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B0A27D1E8EF00385946 /* fft4g.h */; }; + 83F18B4527D1E8EF00385946 /* CDSPRealFFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B0B27D1E8EF00385946 /* CDSPRealFFT.h */; }; + 83F18B4627D1E8EF00385946 /* CDSPFracInterpolator.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B0C27D1E8EF00385946 /* CDSPFracInterpolator.h */; }; + 83F18B4E27D1E8F000385946 /* CDSPBlockConvolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B1727D1E8EF00385946 /* CDSPBlockConvolver.h */; }; + 83F18B4F27D1E8F000385946 /* CDSPHBUpsampler.inc in Sources */ = {isa = PBXBuildFile; fileRef = 83F18B1827D1E8EF00385946 /* CDSPHBUpsampler.inc */; }; + 83F18B5027D1E8F000385946 /* r8bconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B1927D1E8EF00385946 /* r8bconf.h */; }; + 83F18B5127D1E8F000385946 /* r8bbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83F18B1A27D1E8EF00385946 /* r8bbase.cpp */; }; + 83F18B5227D1E8F000385946 /* pffft.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B1B27D1E8EF00385946 /* pffft.h */; }; + 83F18B5327D1E8F000385946 /* CDSPResampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B1C27D1E8EF00385946 /* CDSPResampler.h */; }; + 83F18B5427D1E8F000385946 /* CDSPHBUpsampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B1D27D1E8EF00385946 /* CDSPHBUpsampler.h */; }; + 83F18B5627D1F5E900385946 /* r8bstate.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F18B5527D1F5E900385946 /* r8bstate.h */; }; 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; 8E8D3D2F0CBAEE6E00135C1B /* AudioContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8D3D2D0CBAEE6E00135C1B /* AudioContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8E8D3D300CBAEE6E00135C1B /* AudioContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8D3D2E0CBAEE6E00135C1B /* AudioContainer.m */; }; 8EC1225F0B993BD500C5B3AD /* ConverterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EC1225D0B993BD500C5B3AD /* ConverterNode.h */; }; - 8EC122600B993BD500C5B3AD /* ConverterNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EC1225E0B993BD500C5B3AD /* ConverterNode.m */; }; + 8EC122600B993BD500C5B3AD /* ConverterNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8EC1225E0B993BD500C5B3AD /* ConverterNode.mm */; }; B0575F2D0D687A0800411D77 /* Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = B0575F2C0D687A0800411D77 /* Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; B0575F300D687A4000411D77 /* Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = B0575F2F0D687A4000411D77 /* Helper.m */; }; /* End PBXBuildFile section */ @@ -167,13 +193,12 @@ 835C88AC2797DA5800E28EAE /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = ThirdParty/lvqcl/util.h; sourceTree = SOURCE_ROOT; }; 835C88AF279811A500E28EAE /* hdcd_decode2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hdcd_decode2.h; sourceTree = ""; }; 835C88B0279811A500E28EAE /* hdcd_decode2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hdcd_decode2.c; sourceTree = ""; }; - 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HeadphoneFilter.m; sourceTree = ""; }; + 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = HeadphoneFilter.mm; sourceTree = ""; }; 835EDD7C279FE307001EDCCE /* HeadphoneFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HeadphoneFilter.h; sourceTree = ""; }; 835FAC5C27BCA14D00BA8562 /* BadSampleCleaner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BadSampleCleaner.h; path = Utils/BadSampleCleaner.h; sourceTree = SOURCE_ROOT; }; 835FAC5D27BCA14D00BA8562 /* BadSampleCleaner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BadSampleCleaner.m; path = Utils/BadSampleCleaner.m; sourceTree = SOURCE_ROOT; }; 83725A7B27AA0D8A0003F694 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 83725A7C27AA0D8E0003F694 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 83725A8827AA0DBF0003F694 /* soxr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = soxr.h; sourceTree = ""; }; 8377C64B27B8C51500E8BC0F /* fft_accelerate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fft_accelerate.c; sourceTree = ""; }; 8377C64D27B8C54400E8BC0F /* fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fft.h; sourceTree = ""; }; 8377C65027B8CAD100E8BC0F /* VisualizationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VisualizationController.h; sourceTree = ""; }; @@ -183,13 +208,40 @@ 839366661815923C006DD712 /* CogPluginMulti.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CogPluginMulti.m; sourceTree = ""; }; 8399CF2A27B5D1D4008751F1 /* NSDictionary+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+Merge.h"; path = "../../Utils/NSDictionary+Merge.h"; sourceTree = ""; }; 8399CF2B27B5D1D4008751F1 /* NSDictionary+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+Merge.m"; path = "../../Utils/NSDictionary+Merge.m"; sourceTree = ""; }; - 83FA145227CA1FEB00483F3C /* libsoxr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libsoxr.a; sourceTree = ""; }; + 83F18ADF27D1E8EF00385946 /* CDSPHBDownsampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPHBDownsampler.h; sourceTree = ""; }; + 83F18AE127D1E8EF00385946 /* pffft_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pffft_double.h; sourceTree = ""; }; + 83F18AE327D1E8EF00385946 /* pf_neon_double_from_avx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_neon_double_from_avx.h; sourceTree = ""; }; + 83F18AE427D1E8EF00385946 /* pf_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_double.h; sourceTree = ""; }; + 83F18AE527D1E8EF00385946 /* pf_neon_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_neon_double.h; sourceTree = ""; }; + 83F18AE627D1E8EF00385946 /* pf_sse2_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_sse2_double.h; sourceTree = ""; }; + 83F18AE727D1E8EF00385946 /* pf_avx_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_avx_double.h; sourceTree = ""; }; + 83F18AE827D1E8EF00385946 /* pf_scalar_double.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pf_scalar_double.h; sourceTree = ""; }; + 83F18AE927D1E8EF00385946 /* pffft_priv_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pffft_priv_impl.h; sourceTree = ""; }; + 83F18AEA27D1E8EF00385946 /* pffft_double.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pffft_double.c; sourceTree = ""; }; + 83F18AF827D1E8EF00385946 /* CDSPSincFilterGen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPSincFilterGen.h; sourceTree = ""; }; + 83F18AF927D1E8EF00385946 /* r8butil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = r8butil.h; sourceTree = ""; }; + 83F18AFB27D1E8EF00385946 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + 83F18AFC27D1E8EF00385946 /* r8bbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = r8bbase.h; sourceTree = ""; }; + 83F18AFD27D1E8EF00385946 /* CDSPFIRFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPFIRFilter.h; sourceTree = ""; }; + 83F18B0827D1E8EF00385946 /* CDSPProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPProcessor.h; sourceTree = ""; }; + 83F18B0927D1E8EF00385946 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 83F18B0A27D1E8EF00385946 /* fft4g.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fft4g.h; sourceTree = ""; }; + 83F18B0B27D1E8EF00385946 /* CDSPRealFFT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPRealFFT.h; sourceTree = ""; }; + 83F18B0C27D1E8EF00385946 /* CDSPFracInterpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPFracInterpolator.h; sourceTree = ""; }; + 83F18B1727D1E8EF00385946 /* CDSPBlockConvolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPBlockConvolver.h; sourceTree = ""; }; + 83F18B1827D1E8EF00385946 /* CDSPHBUpsampler.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; path = CDSPHBUpsampler.inc; sourceTree = ""; }; + 83F18B1927D1E8EF00385946 /* r8bconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = r8bconf.h; sourceTree = ""; }; + 83F18B1A27D1E8EF00385946 /* r8bbase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = r8bbase.cpp; sourceTree = ""; }; + 83F18B1B27D1E8EF00385946 /* pffft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pffft.h; sourceTree = ""; }; + 83F18B1C27D1E8EF00385946 /* CDSPResampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPResampler.h; sourceTree = ""; }; + 83F18B1D27D1E8EF00385946 /* CDSPHBUpsampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDSPHBUpsampler.h; sourceTree = ""; }; + 83F18B5527D1F5E900385946 /* r8bstate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = r8bstate.h; path = ThirdParty/r8bstate.h; sourceTree = SOURCE_ROOT; }; 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8DC2EF5B0486A6940098B216 /* CogAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CogAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8E8D3D2D0CBAEE6E00135C1B /* AudioContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioContainer.h; sourceTree = ""; }; 8E8D3D2E0CBAEE6E00135C1B /* AudioContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioContainer.m; sourceTree = ""; }; 8EC1225D0B993BD500C5B3AD /* ConverterNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConverterNode.h; sourceTree = ""; }; - 8EC1225E0B993BD500C5B3AD /* ConverterNode.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ConverterNode.m; sourceTree = ""; }; + 8EC1225E0B993BD500C5B3AD /* ConverterNode.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ConverterNode.mm; sourceTree = ""; }; B0575F2C0D687A0800411D77 /* Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Helper.h; sourceTree = ""; }; B0575F2F0D687A4000411D77 /* Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Helper.m; sourceTree = ""; }; D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; @@ -204,7 +256,6 @@ 83725A9127AA16D50003F694 /* AVFoundation.framework in Frameworks */, 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, 83725A9027AA16C90003F694 /* Accelerate.framework in Frameworks */, - 83FA145327CA1FEB00483F3C /* libsoxr.a in Frameworks */, 17D21DAD0B8BE76800D1EBDE /* AudioToolbox.framework in Frameworks */, 17D21DAE0B8BE76800D1EBDE /* AudioUnit.framework in Frameworks */, 17D21DAF0B8BE76800D1EBDE /* CoreAudio.framework in Frameworks */, @@ -323,7 +374,7 @@ 17D21C760B8BE4BA00D1EBDE /* BufferChain.h */, 17D21C770B8BE4BA00D1EBDE /* BufferChain.m */, 8EC1225D0B993BD500C5B3AD /* ConverterNode.h */, - 8EC1225E0B993BD500C5B3AD /* ConverterNode.m */, + 8EC1225E0B993BD500C5B3AD /* ConverterNode.mm */, 17D21C7A0B8BE4BA00D1EBDE /* InputNode.h */, 17D21C7B0B8BE4BA00D1EBDE /* InputNode.m */, 17D21C7C0B8BE4BA00D1EBDE /* Node.h */, @@ -331,7 +382,7 @@ 17D21C7E0B8BE4BA00D1EBDE /* OutputNode.h */, 17D21C7F0B8BE4BA00D1EBDE /* OutputNode.m */, 835EDD7C279FE307001EDCCE /* HeadphoneFilter.h */, - 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.m */, + 835EDD7A279FE23A001EDCCE /* HeadphoneFilter.mm */, ); path = Chain; sourceTree = ""; @@ -348,8 +399,8 @@ 17D21CD80B8BE5B400D1EBDE /* ThirdParty */ = { isa = PBXGroup; children = ( + 83F18ADE27D1E8EF00385946 /* r8brain-free-src */, 8377C64A27B8C51500E8BC0F /* deadbeef */, - 83725A8627AA0DBF0003F694 /* libsoxr */, 835C88AE279811A500E28EAE /* hdcd */, 835C88A22797D4D400E28EAE /* lvqcl */, 17D21DC40B8BE79700D1EBDE /* CoreAudioUtils */, @@ -423,31 +474,6 @@ path = hdcd; sourceTree = ""; }; - 83725A8627AA0DBF0003F694 /* libsoxr */ = { - isa = PBXGroup; - children = ( - 83725A8727AA0DBF0003F694 /* include */, - 83725A8927AA0DBF0003F694 /* lib */, - ); - path = libsoxr; - sourceTree = ""; - }; - 83725A8727AA0DBF0003F694 /* include */ = { - isa = PBXGroup; - children = ( - 83725A8827AA0DBF0003F694 /* soxr.h */, - ); - path = include; - sourceTree = ""; - }; - 83725A8927AA0DBF0003F694 /* lib */ = { - isa = PBXGroup; - children = ( - 83FA145227CA1FEB00483F3C /* libsoxr.a */, - ); - path = lib; - sourceTree = ""; - }; 83725A8F27AA16C90003F694 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -474,6 +500,57 @@ path = Visualization; sourceTree = ""; }; + 83F18ADE27D1E8EF00385946 /* r8brain-free-src */ = { + isa = PBXGroup; + children = ( + 83F18ADF27D1E8EF00385946 /* CDSPHBDownsampler.h */, + 83F18AE027D1E8EF00385946 /* pffft_double */, + 83F18AF827D1E8EF00385946 /* CDSPSincFilterGen.h */, + 83F18AF927D1E8EF00385946 /* r8butil.h */, + 83F18AFB27D1E8EF00385946 /* LICENSE */, + 83F18AFC27D1E8EF00385946 /* r8bbase.h */, + 83F18AFD27D1E8EF00385946 /* CDSPFIRFilter.h */, + 83F18B0827D1E8EF00385946 /* CDSPProcessor.h */, + 83F18B0927D1E8EF00385946 /* README.md */, + 83F18B0A27D1E8EF00385946 /* fft4g.h */, + 83F18B0B27D1E8EF00385946 /* CDSPRealFFT.h */, + 83F18B0C27D1E8EF00385946 /* CDSPFracInterpolator.h */, + 83F18B1727D1E8EF00385946 /* CDSPBlockConvolver.h */, + 83F18B1827D1E8EF00385946 /* CDSPHBUpsampler.inc */, + 83F18B1927D1E8EF00385946 /* r8bconf.h */, + 83F18B1A27D1E8EF00385946 /* r8bbase.cpp */, + 83F18B1B27D1E8EF00385946 /* pffft.h */, + 83F18B1C27D1E8EF00385946 /* CDSPResampler.h */, + 83F18B1D27D1E8EF00385946 /* CDSPHBUpsampler.h */, + 83F18B5527D1F5E900385946 /* r8bstate.h */, + ); + path = "r8brain-free-src"; + sourceTree = ""; + }; + 83F18AE027D1E8EF00385946 /* pffft_double */ = { + isa = PBXGroup; + children = ( + 83F18AE127D1E8EF00385946 /* pffft_double.h */, + 83F18AE227D1E8EF00385946 /* simd */, + 83F18AE927D1E8EF00385946 /* pffft_priv_impl.h */, + 83F18AEA27D1E8EF00385946 /* pffft_double.c */, + ); + path = pffft_double; + sourceTree = ""; + }; + 83F18AE227D1E8EF00385946 /* simd */ = { + isa = PBXGroup; + children = ( + 83F18AE327D1E8EF00385946 /* pf_neon_double_from_avx.h */, + 83F18AE427D1E8EF00385946 /* pf_double.h */, + 83F18AE527D1E8EF00385946 /* pf_neon_double.h */, + 83F18AE627D1E8EF00385946 /* pf_sse2_double.h */, + 83F18AE727D1E8EF00385946 /* pf_avx_double.h */, + 83F18AE827D1E8EF00385946 /* pf_scalar_double.h */, + ); + path = simd; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -484,36 +561,58 @@ 17D21CA10B8BE4BA00D1EBDE /* BufferChain.h in Headers */, 17D21CA50B8BE4BA00D1EBDE /* InputNode.h in Headers */, 17D21CA70B8BE4BA00D1EBDE /* Node.h in Headers */, + 83F18B3427D1E8EF00385946 /* r8butil.h in Headers */, 8399CF2C27B5D1D5008751F1 /* NSDictionary+Merge.h in Headers */, 17D21CA90B8BE4BA00D1EBDE /* OutputNode.h in Headers */, + 83F18B4527D1E8EF00385946 /* CDSPRealFFT.h in Headers */, + 83F18B3827D1E8EF00385946 /* CDSPFIRFilter.h in Headers */, 8328995427CB511000D7F028 /* RedundantPlaylistDataStore.h in Headers */, 17D21CC50B8BE4BA00D1EBDE /* OutputCoreAudio.h in Headers */, + 83F18B2427D1E8EF00385946 /* pf_avx_double.h in Headers */, 834FD4F427AFA2150063BC83 /* Downmix.h in Headers */, 17D21CC70B8BE4BA00D1EBDE /* Status.h in Headers */, + 83F18B1F27D1E8EF00385946 /* pffft_double.h in Headers */, 835C88AB2797D4D400E28EAE /* lpc.h in Headers */, 17D21CF30B8BE5EF00D1EBDE /* Semaphore.h in Headers */, 17D21DC70B8BE79700D1EBDE /* CoreAudioUtils.h in Headers */, + 83F18B3327D1E8EF00385946 /* CDSPSincFilterGen.h in Headers */, 17D21EBD0B8BF44000D1EBDE /* AudioPlayer.h in Headers */, + 83F18B4427D1E8EF00385946 /* fft4g.h in Headers */, + 83F18B1E27D1E8EF00385946 /* CDSPHBDownsampler.h in Headers */, + 83F18B5627D1F5E900385946 /* r8bstate.h in Headers */, 8377C65227B8CAD100E8BC0F /* VisualizationController.h in Headers */, 834FD4F027AF93680063BC83 /* ChunkList.h in Headers */, + 83F18B2127D1E8EF00385946 /* pf_double.h in Headers */, 17F94DD50B8D0F7000A34E87 /* PluginController.h in Headers */, 17F94DDD0B8D101100A34E87 /* Plugin.h in Headers */, + 83F18B2027D1E8EF00385946 /* pf_neon_double_from_avx.h in Headers */, + 83F18B5227D1E8F000385946 /* pffft.h in Headers */, + 83F18B2627D1E8EF00385946 /* pffft_priv_impl.h in Headers */, 8328995727CB51B700D7F028 /* SHA256Digest.h in Headers */, + 83F18B4627D1E8EF00385946 /* CDSPFracInterpolator.h in Headers */, 834FD4EB27AF8F380063BC83 /* AudioChunk.h in Headers */, + 83F18B4E27D1E8F000385946 /* CDSPBlockConvolver.h in Headers */, + 83F18B4227D1E8EF00385946 /* CDSPProcessor.h in Headers */, 17A2D3C50B8D1D37000778C4 /* AudioDecoder.h in Headers */, 8347C7412796C58800FA8A7D /* NSFileHandle+CreateFile.h in Headers */, 17C940230B900909008627D6 /* AudioMetadataReader.h in Headers */, - 83725A8B27AA0DBF0003F694 /* soxr.h in Headers */, 17B619300B909BC300BC003F /* AudioPropertiesReader.h in Headers */, + 83F18B5427D1E8F000385946 /* CDSPHBUpsampler.h in Headers */, 835EDD7D279FE307001EDCCE /* HeadphoneFilter.h in Headers */, 839366671815923C006DD712 /* CogPluginMulti.h in Headers */, + 83F18B2227D1E8EF00385946 /* pf_neon_double.h in Headers */, + 83F18B2527D1E8EF00385946 /* pf_scalar_double.h in Headers */, + 83F18B5327D1E8F000385946 /* CDSPResampler.h in Headers */, 17ADB13C0B97926D00257CA2 /* AudioSource.h in Headers */, 835C88B1279811A500E28EAE /* hdcd_decode2.h in Headers */, 8EC1225F0B993BD500C5B3AD /* ConverterNode.h in Headers */, 8384912718080FF100E7332D /* Logging.h in Headers */, 8377C64E27B8C54400E8BC0F /* fft.h in Headers */, + 83F18B5027D1E8F000385946 /* r8bconf.h in Headers */, 835FAC5E27BCA14D00BA8562 /* BadSampleCleaner.h in Headers */, + 83F18B2327D1E8EF00385946 /* pf_sse2_double.h in Headers */, 8E8D3D2F0CBAEE6E00135C1B /* AudioContainer.h in Headers */, + 83F18B3727D1E8EF00385946 /* r8bbase.h in Headers */, B0575F2D0D687A0800411D77 /* Helper.h in Headers */, 835C88AD2797DA5800E28EAE /* util.h in Headers */, 07DB5F3E0ED353A900C2E3EF /* AudioMetadataWriter.h in Headers */, @@ -581,8 +680,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 83F18B3627D1E8EF00385946 /* LICENSE in Resources */, 835C88A92797D4D400E28EAE /* License.txt in Resources */, 835C88A82797D4D400E28EAE /* LICENSE.LGPL in Resources */, + 83F18B4327D1E8EF00385946 /* README.md in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -593,7 +694,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 835EDD7B279FE23A001EDCCE /* HeadphoneFilter.m in Sources */, + 835EDD7B279FE23A001EDCCE /* HeadphoneFilter.mm in Sources */, 17D21CA20B8BE4BA00D1EBDE /* BufferChain.m in Sources */, 17D21CA60B8BE4BA00D1EBDE /* InputNode.m in Sources */, 8399CF2D27B5D1D5008751F1 /* NSDictionary+Merge.m in Sources */, @@ -605,9 +706,11 @@ 835C88B2279811A500E28EAE /* hdcd_decode2.c in Sources */, 835FAC5F27BCA14D00BA8562 /* BadSampleCleaner.m in Sources */, 834FD4ED27AF91220063BC83 /* AudioChunk.m in Sources */, + 83F18B5127D1E8F000385946 /* r8bbase.cpp in Sources */, 17D21CF40B8BE5EF00D1EBDE /* Semaphore.m in Sources */, 8347C7422796C58800FA8A7D /* NSFileHandle+CreateFile.m in Sources */, 17D21DC80B8BE79700D1EBDE /* CoreAudioUtils.m in Sources */, + 83F18B2727D1E8EF00385946 /* pffft_double.c in Sources */, 8328995327CB511000D7F028 /* RedundantPlaylistDataStore.m in Sources */, 8377C64C27B8C51500E8BC0F /* fft_accelerate.c in Sources */, 839366681815923C006DD712 /* CogPluginMulti.m in Sources */, @@ -620,7 +723,8 @@ 17B619310B909BC300BC003F /* AudioPropertiesReader.m in Sources */, 17ADB13D0B97926D00257CA2 /* AudioSource.m in Sources */, 834FD4F127AF93680063BC83 /* ChunkList.m in Sources */, - 8EC122600B993BD500C5B3AD /* ConverterNode.m in Sources */, + 83F18B4F27D1E8F000385946 /* CDSPHBUpsampler.inc in Sources */, + 8EC122600B993BD500C5B3AD /* ConverterNode.mm in Sources */, 8E8D3D300CBAEE6E00135C1B /* AudioContainer.m in Sources */, B0575F300D687A4000411D77 /* Helper.m in Sources */, 07DB5F3F0ED353A900C2E3EF /* AudioMetadataWriter.m in Sources */, @@ -648,6 +752,11 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CogAudio_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "R8B_EXTFFT=1", + "R8B_PFFFT_DOUBLE=1", + ); HEADER_SEARCH_PATHS = ThirdParty/libsoxr/include; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "@executable_path/../Frameworks"; @@ -655,6 +764,8 @@ LIBRARY_SEARCH_PATHS = ( ThirdParty/libsoxr/lib, "$(PROJECT_DIR)/ThirdParty/libsoxr/lib", + "$(PROJECT_DIR)/ThirdParty/r8brain-free-src/DLL/Win64", + "$(PROJECT_DIR)/ThirdParty/r8brain-free-src/DLL/Win32", ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cogaudio; @@ -683,6 +794,10 @@ GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CogAudio_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "R8B_EXTFFT=1", + "R8B_PFFFT_DOUBLE=1", + ); HEADER_SEARCH_PATHS = ThirdParty/libsoxr/include; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "@executable_path/../Frameworks"; @@ -690,6 +805,8 @@ LIBRARY_SEARCH_PATHS = ( ThirdParty/libsoxr/lib, "$(PROJECT_DIR)/ThirdParty/libsoxr/lib", + "$(PROJECT_DIR)/ThirdParty/r8brain-free-src/DLL/Win64", + "$(PROJECT_DIR)/ThirdParty/r8brain-free-src/DLL/Win32", ); OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.cogaudio; diff --git a/Audio/ThirdParty/libsoxr/README.md b/Audio/ThirdParty/libsoxr/README.md deleted file mode 100644 index f131cc151..000000000 --- a/Audio/ThirdParty/libsoxr/README.md +++ /dev/null @@ -1,22 +0,0 @@ -These were compiled with default settings from: - -https://github.com/kode54/libsoxr - -Original upstream it was forked from: - -https://github.com/nanake/libsoxr - -Using CMake: - -``` -mkdir build-x86 -mkdir build-arm -cd build-x86 -cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.12" -DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=OFF -make -j8 -cd ../build-arm -cmake .. -DCMAKE_OSX_ARCHITECTURES="arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET="11.0" -DBUILD_SHARED_LIBS=OFF -DWITH_OPENMP=OFF -make -j8 -cd .. -lipo -create -output libsoxr.a build-x86/src/libsoxr.a build-arm/src/libsoxr.a -``` diff --git a/Audio/ThirdParty/libsoxr/include/soxr.h b/Audio/ThirdParty/libsoxr/include/soxr.h deleted file mode 100644 index 09ec7c466..000000000 --- a/Audio/ThirdParty/libsoxr/include/soxr.h +++ /dev/null @@ -1,344 +0,0 @@ -/* SoX Resampler Library Copyright (c) 2007-18 robs@users.sourceforge.net - * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or (at - * your option) any later version. - * - * This library 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 Lesser - * General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -/* -------------------------------- Gubbins --------------------------------- */ - -#if !defined soxr_included -#define soxr_included - - -#if defined __cplusplus - #include - extern "C" { -#else - #include -#endif - -#if defined SOXR_DLL - #if defined soxr_EXPORTS - #define SOXR __declspec(dllexport) - #else - #define SOXR __declspec(dllimport) - #endif -#elif defined SOXR_VISIBILITY && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) - #define SOXR __attribute__ ((visibility("default"))) -#else - #define SOXR -#endif - -typedef struct soxr_io_spec soxr_io_spec_t; -typedef struct soxr_quality_spec soxr_quality_spec_t; -typedef struct soxr_runtime_spec soxr_runtime_spec_t; - - - -/* ---------------------------- API conventions -------------------------------- - -Buffer lengths (and occupancies) are expressed as the number of contained -samples per channel. - -Parameter names for buffer lengths have the suffix `len'. - -A single-character `i' or 'o' is often used in names to give context as -input or output (e.g. ilen, olen). */ - - - -/* --------------------------- Version management --------------------------- */ - -/* E.g. #if SOXR_THIS_VERSION >= SOXR_VERSION(0,1,1) ... */ - -#define SOXR_VERSION(x,y,z) (((x)<<16)|((y)<<8)|(z)) -#define SOXR_THIS_VERSION SOXR_VERSION(0,1,3) -#define SOXR_THIS_VERSION_STR "0.1.3" - - - -/* --------------------------- Type declarations ---------------------------- */ - -typedef struct soxr * soxr_t; /* A resampler for 1 or more channels. */ -typedef char const * soxr_error_t; /* 0:no-error; non-0:error. */ - -typedef void * soxr_buf_t; /* 1 buffer of channel-interleaved samples. */ -typedef void const * soxr_cbuf_t; /* Ditto; read-only. */ - -typedef soxr_buf_t const * soxr_bufs_t;/* Or, a separate buffer for each ch. */ -typedef soxr_cbuf_t const * soxr_cbufs_t; /* Ditto; read-only. */ - -typedef void const * soxr_in_t; /* Either a soxr_cbuf_t or soxr_cbufs_t, - depending on itype in soxr_io_spec_t. */ -typedef void * soxr_out_t; /* Either a soxr_buf_t or soxr_bufs_t, - depending on otype in soxr_io_spec_t. */ - - - -/* --------------------------- API main functions --------------------------- */ - -SOXR char const * soxr_version(void); /* Query library version: "libsoxr-x.y.z" */ - -#define soxr_strerror(e) /* Soxr counterpart to strerror. */ \ - ((e)?(e):"no error") - - -/* Create a stream resampler: */ - -SOXR soxr_t soxr_create( - double input_rate, /* Input sample-rate. */ - double output_rate, /* Output sample-rate. */ - unsigned num_channels, /* Number of channels to be used. */ - /* All following arguments are optional (may be set to NULL). */ - soxr_error_t *, /* To report any error during creation. */ - soxr_io_spec_t const *, /* To specify non-default I/O formats. */ - soxr_quality_spec_t const *, /* To specify non-default resampling quality.*/ - soxr_runtime_spec_t const *);/* To specify non-default runtime resources. - - Default io_spec is per soxr_io_spec(SOXR_FLOAT32_I, SOXR_FLOAT32_I) - Default quality_spec is per soxr_quality_spec(SOXR_HQ, 0) - Default runtime_spec is per soxr_runtime_spec(1) */ - - - -/* If not using an app-supplied input function, after creating a stream - * resampler, repeatedly call: */ - -SOXR soxr_error_t soxr_process( - soxr_t resampler, /* As returned by soxr_create. */ - /* Input (to be resampled): */ - soxr_in_t in, /* Input buffer(s); may be NULL (see below). */ - size_t ilen, /* Input buf. length (samples per channel). */ - size_t * idone, /* To return actual # samples used (<= ilen). */ - /* Output (resampled): */ - soxr_out_t out, /* Output buffer(s).*/ - size_t olen, /* Output buf. length (samples per channel). */ - size_t * odone); /* To return actual # samples out (<= olen). - - Note that no special meaning is associated with ilen or olen equal to - zero. End-of-input (i.e. no data is available nor shall be available) - may be indicated by seting `in' to NULL. */ - - - -/* If using an app-supplied input function, it must look and behave like this:*/ - -typedef size_t /* data_len */ - (* soxr_input_fn_t)( /* Supply data to be resampled. */ - void * input_fn_state, /* As given to soxr_set_input_fn (below). */ - soxr_in_t * data, /* Returned data; see below. N.B. ptr to ptr(s)*/ - size_t requested_len); /* Samples per channel, >= returned data_len. - - data_len *data Indicates Meaning - ------- ------- ------------ ------------------------- - !=0 !=0 Success *data contains data to be - input to the resampler. - 0 !=0 (or End-of-input No data is available nor - not set) shall be available. - 0 0 Failure An error occurred whilst trying to - source data to be input to the resampler. */ - -/* and be registered with a previously created stream resampler using: */ - -SOXR soxr_error_t soxr_set_input_fn(/* Set (or reset) an input function.*/ - soxr_t resampler, /* As returned by soxr_create. */ - soxr_input_fn_t, /* Function to supply data to be resampled.*/ - void * input_fn_state, /* If needed by the input function. */ - size_t max_ilen); /* Maximum value for input fn. requested_len.*/ - -/* then repeatedly call: */ - -SOXR size_t /*odone*/ soxr_output(/* Resample and output a block of data.*/ - soxr_t resampler, /* As returned by soxr_create. */ - soxr_out_t data, /* App-supplied buffer(s) for resampled data.*/ - size_t olen); /* Amount of data to output; >= odone. */ - - - -/* Common stream resampler operations: */ - -SOXR soxr_error_t soxr_error(soxr_t); /* Query error status. */ -SOXR size_t * soxr_num_clips(soxr_t); /* Query int. clip counter (for R/W). */ -SOXR double soxr_delay(soxr_t); /* Query current delay in output samples.*/ -SOXR char const * soxr_engine(soxr_t); /* Query resampling engine name. */ - -SOXR soxr_error_t soxr_clear(soxr_t); /* Ready for fresh signal, same config. */ -SOXR void soxr_delete(soxr_t); /* Free resources. */ - - - -/* `Short-cut', single call to resample a (probably short) signal held entirely - * in memory. See soxr_create and soxr_process above for parameter details. - * Note that unlike soxr_create however, the default quality spec. for - * soxr_oneshot is per soxr_quality_spec(SOXR_LQ, 0). */ - -SOXR soxr_error_t soxr_oneshot( - double input_rate, - double output_rate, - unsigned num_channels, - soxr_in_t in , size_t ilen, size_t * idone, - soxr_out_t out, size_t olen, size_t * odone, - soxr_io_spec_t const *, - soxr_quality_spec_t const *, - soxr_runtime_spec_t const *); - - - -/* For variable-rate resampling. See example # 5 for how to create a - * variable-rate resampler and how to use this function. */ - -SOXR soxr_error_t soxr_set_io_ratio(soxr_t, double io_ratio, size_t slew_len); - - - -/* -------------------------- API type definitions -------------------------- */ - -typedef enum { /* Datatypes supported for I/O to/from the resampler: */ - /* Internal; do not use: */ - SOXR_FLOAT32, SOXR_FLOAT64, SOXR_INT32, SOXR_INT16, SOXR_SPLIT = 4, - - /* Use for interleaved channels: */ - SOXR_FLOAT32_I = SOXR_FLOAT32, SOXR_FLOAT64_I, SOXR_INT32_I, SOXR_INT16_I, - - /* Use for split channels: */ - SOXR_FLOAT32_S = SOXR_SPLIT , SOXR_FLOAT64_S, SOXR_INT32_S, SOXR_INT16_S - -} soxr_datatype_t; - -#define soxr_datatype_size(x) /* Returns `sizeof' a soxr_datatype_t sample. */\ - ((unsigned char *)"\4\10\4\2")[(x)&3] - - - -struct soxr_io_spec { /* Typically */ - soxr_datatype_t itype; /* Input datatype. SOXR_FLOAT32_I */ - soxr_datatype_t otype; /* Output datatype. SOXR_FLOAT32_I */ - double scale; /* Linear gain to apply during resampling. 1 */ - void * e; /* Reserved for internal use 0 */ - unsigned long flags; /* Per the following #defines. 0 */ -}; - -#define SOXR_TPDF 0 /* Applicable only if otype is INT16. */ -#define SOXR_NO_DITHER 8u /* Disable the above. */ - - - -struct soxr_quality_spec { /* Typically */ - double precision; /* Conversion precision (in bits). 20 */ - double phase_response; /* 0=minimum, ... 50=linear, ... 100=maximum 50 */ - double passband_end; /* 0dB pt. bandwidth to preserve; nyquist=1 0.913*/ - double stopband_begin; /* Aliasing/imaging control; > passband_end 1 */ - void * e; /* Reserved for internal use. 0 */ - unsigned long flags; /* Per the following #defines. 0 */ -}; - -#define SOXR_ROLLOFF_SMALL 0u /* <= 0.01 dB */ -#define SOXR_ROLLOFF_MEDIUM 1u /* <= 0.35 dB */ -#define SOXR_ROLLOFF_NONE 2u /* For Chebyshev bandwidth. */ - -#define SOXR_HI_PREC_CLOCK 8u /* Increase `irrational' ratio accuracy. */ -#define SOXR_DOUBLE_PRECISION 16u /* Use D.P. calcs even if precision <= 20. */ -#define SOXR_VR 32u /* Variable-rate resampling. */ - - - -struct soxr_runtime_spec { /* Typically */ - unsigned log2_min_dft_size; /* For DFT efficiency. [8,15] 10 */ - unsigned log2_large_dft_size; /* For DFT efficiency. [8,20] 17 */ - unsigned coef_size_kbytes; /* For SOXR_COEF_INTERP_AUTO (below). 400 */ - unsigned num_threads; /* 0: per OMP_NUM_THREADS; 1: 1 thread. 1 */ - void * e; /* Reserved for internal use. 0 */ - unsigned long flags; /* Per the following #defines. 0 */ -}; - /* For `irrational' ratios only: */ -#define SOXR_COEF_INTERP_AUTO 0u /* Auto select coef. interpolation. */ -#define SOXR_COEF_INTERP_LOW 2u /* Man. select: less CPU, more memory. */ -#define SOXR_COEF_INTERP_HIGH 3u /* Man. select: more CPU, less memory. */ - - - -/* -------------------------- API type constructors ------------------------- */ - -/* These functions allow setting of the most commonly-used structure - * parameters, with other parameters being given default values. The default - * values may then be overridden, directly in the structure, if needed. */ - -SOXR soxr_quality_spec_t soxr_quality_spec( - unsigned long recipe, /* Per the #defines immediately below. */ - unsigned long flags); /* As soxr_quality_spec_t.flags. */ - - /* The 5 standard qualities found in SoX: */ -#define SOXR_QQ 0 /* 'Quick' cubic interpolation. */ -#define SOXR_LQ 1 /* 'Low' 16-bit with larger rolloff. */ -#define SOXR_MQ 2 /* 'Medium' 16-bit with medium rolloff. */ -#define SOXR_HQ SOXR_20_BITQ /* 'High quality'. */ -#define SOXR_VHQ SOXR_28_BITQ /* 'Very high quality'. */ - -#define SOXR_16_BITQ 3 -#define SOXR_20_BITQ 4 -#define SOXR_24_BITQ 5 -#define SOXR_28_BITQ 6 -#define SOXR_32_BITQ 7 - /* Reserved for internal use (to be removed): */ -#define SOXR_LSR0Q 8 /* 'Best sinc'. */ -#define SOXR_LSR1Q 9 /* 'Medium sinc'. */ -#define SOXR_LSR2Q 10 /* 'Fast sinc'. */ - -#define SOXR_LINEAR_PHASE 0x00 -#define SOXR_INTERMEDIATE_PHASE 0x10 -#define SOXR_MINIMUM_PHASE 0x30 - -#define SOXR_STEEP_FILTER 0x40 - - - -SOXR soxr_runtime_spec_t soxr_runtime_spec( - unsigned num_threads); - - - -SOXR soxr_io_spec_t soxr_io_spec( - soxr_datatype_t itype, - soxr_datatype_t otype); - - - -/* --------------------------- Advanced use only ---------------------------- */ - -/* For new designs, the following functions/usage will probably not be needed. - * They might be useful when adding soxr into an existing design where values - * for the resampling-rate and/or number-of-channels parameters to soxr_create - * are not available when that function will be called. In such cases, the - * relevant soxr_create parameter(s) can be given as 0, then one or both of the - * following (as appropriate) later invoked (but prior to calling soxr_process - * or soxr_output): - * - * soxr_set_error(soxr, soxr_set_io_ratio(soxr, io_ratio, 0)); - * soxr_set_error(soxr, soxr_set_num_channels(soxr, num_channels)); - */ - -SOXR soxr_error_t soxr_set_error(soxr_t, soxr_error_t); -SOXR soxr_error_t soxr_set_num_channels(soxr_t, unsigned); - - - -#undef SOXR - -#if defined __cplusplus -} -#endif - -#endif diff --git a/Audio/ThirdParty/libsoxr/lib/libsoxr.a b/Audio/ThirdParty/libsoxr/lib/libsoxr.a deleted file mode 100644 index ed7d46ae2e5e22783ad4bedef62ec7f12ed7738d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415576 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 diff --git a/Audio/ThirdParty/lvqcl/lpc.h b/Audio/ThirdParty/lvqcl/lpc.h index 9a0bd90f3..a5f04e613 100644 --- a/Audio/ThirdParty/lvqcl/lpc.h +++ b/Audio/ThirdParty/lvqcl/lpc.h @@ -24,8 +24,16 @@ static const size_t LPC_ORDER = 32; +#ifdef __cplusplus +extern "C" { +#endif + 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); +#ifdef __cplusplus +} +#endif + static inline void lpc_extrapolate_bkwd(float * const data, const size_t data_len, const size_t prime_len, const int nch, const int lpc_order, const size_t extra_bkwd, void ** extrapolate_buffer, size_t * extrapolate_buffer_size) { (void)data_len; diff --git a/Audio/ThirdParty/r8brain-free-src b/Audio/ThirdParty/r8brain-free-src new file mode 160000 index 000000000..33e8a35ef --- /dev/null +++ b/Audio/ThirdParty/r8brain-free-src @@ -0,0 +1 @@ +Subproject commit 33e8a35ef6e33cbebe1d0ccfbb12ecd7535e44c2 diff --git a/Audio/ThirdParty/r8bstate.h b/Audio/ThirdParty/r8bstate.h new file mode 100644 index 000000000..7b60a387e --- /dev/null +++ b/Audio/ThirdParty/r8bstate.h @@ -0,0 +1,132 @@ +// +// r8bstate.h +// CogAudio Framework +// +// Created by Christopher Snowhill on 3/3/22. +// + +#ifndef r8bstate_h +#define r8bstate_h + +#include "CDSPResampler.h" +#include "r8bbase.h" + +struct r8bstate { + int channelCount; + int bufferCapacity; + size_t remainder; + uint64_t inProcessed; + uint64_t outProcessed; + double sampleRatio; + r8b::CFixedBuffer InBuf; + r8b::CFixedBuffer *OutBuf; + r8b::CDSPResampler24 **Resamps; + r8bstate(int _channelCount, int _bufferCapacity, double srcRate, double dstRate) + : channelCount(_channelCount), bufferCapacity(_bufferCapacity), inProcessed(0), outProcessed(0), remainder(0) { + InBuf.alloc(bufferCapacity); + OutBuf = new r8b::CFixedBuffer[channelCount]; + Resamps = new r8b::CDSPResampler24 *[channelCount]; + for(int i = 0; i < channelCount; ++i) { + Resamps[i] = new r8b::CDSPResampler24(srcRate, dstRate, bufferCapacity); + } + sampleRatio = dstRate / srcRate; + } + + ~r8bstate() { + delete[] OutBuf; + for(int i = 0; i < channelCount; ++i) { + delete Resamps[i]; + } + delete[] Resamps; + } + + int resample(const float *input, size_t inCount, size_t *inDone, float *output, size_t outMax) { + int ret = 0; + int i; + if(inDone) *inDone = 0; + while(remainder > 0) { + size_t blockCount = remainder; + if(blockCount > outMax) + blockCount = outMax; + for(i = 0; i < channelCount; ++i) { + vDSP_vdpsp(&OutBuf[i][0], 1, output + i, channelCount, blockCount); + } + remainder -= blockCount; + output += channelCount * blockCount; + outMax -= blockCount; + ret += blockCount; + if(!outMax) + return ret; + } + while(inCount > 0) { + size_t blockCount = inCount; + if(blockCount > bufferCapacity) + blockCount = bufferCapacity; + int outputDone; + for(i = 0; i < channelCount; ++i) { + double *outputPointer; + vDSP_vspdp(input + i, channelCount, &InBuf[0], 1, blockCount); + outputDone = Resamps[i]->process(InBuf, (int)blockCount, outputPointer); + if(outputDone) { + if(outputDone > outMax) { + vDSP_vdpsp(outputPointer, 1, output + i, channelCount, outMax); + remainder = outputDone - outMax; + OutBuf[i].alloc((int)remainder); + memcpy(&OutBuf[i][0], outputPointer + outMax, remainder); + } else { + vDSP_vdpsp(outputPointer, 1, output + i, channelCount, outputDone); + } + } + } + input += channelCount * blockCount; + output += channelCount * outputDone; + inCount -= blockCount; + if(inDone) *inDone += blockCount; + inProcessed += blockCount; + outProcessed += outputDone; + ret += outputDone; + if(remainder) + break; + } + return ret; + } + + int flush(float *output, size_t outMax) { + int ret = 0; + int i; + if(remainder > 0) { + size_t blockCount = remainder; + if(blockCount > outMax) + blockCount = outMax; + for(i = 0; i < channelCount; ++i) { + vDSP_vdpsp(&OutBuf[i][0], 1, output + i, channelCount, blockCount); + } + remainder -= blockCount; + output += channelCount * blockCount; + outMax -= blockCount; + ret += blockCount; + if(!outMax) + return ret; + } + uint64_t outputWanted = ceil(inProcessed * sampleRatio); + memset(&InBuf[0], 0, sizeof(double) * bufferCapacity); + while(outProcessed < outputWanted) { + int outputDone = 0; + for(int i = 0; i < channelCount; ++i) { + double *outputPointer; + outputDone = Resamps[i]->process(InBuf, bufferCapacity, outputPointer); + if(outputDone) { + if(outputDone > (outputWanted - outProcessed)) + outputDone = (int)(outputWanted - outProcessed); + vDSP_vdpsp(outputPointer, 1, output + i, channelCount, outputDone); + } + } + outProcessed += outputDone; + output += channelCount * outputDone; + ret += outputDone; + } + return ret; + } +}; + +#endif /* r8bstate_h */