From bbba06e4b2588f309995e10823d6eaf35e59233b Mon Sep 17 00:00:00 2001 From: vspader Date: Thu, 10 May 2007 23:19:56 +0000 Subject: [PATCH] Fixed bug that caused problems when doing sample rate conversion. --- Audio/Chain/Converter.m | 18 ++++++++++++------ Cog.xcodeproj/project.pbxproj | 23 ----------------------- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/Audio/Chain/Converter.m b/Audio/Chain/Converter.m index 070c28352..302ae3978 100644 --- a/Audio/Chain/Converter.m +++ b/Audio/Chain/Converter.m @@ -36,14 +36,20 @@ static OSStatus ACInputProc(AudioConverterRef inAudioConverter, UInt32* ioNumber OSStatus err = noErr; if (converter->inputBufferSize > 0) { + int amountConverted = *ioNumberDataPackets * converter->inputFormat.mBytesPerPacket; + if (amountConverted > converter->inputBufferSize) { + amountConverted = converter->inputBufferSize; + } + ioData->mBuffers[0].mData = converter->inputBuffer; - ioData->mBuffers[0].mDataByteSize = converter->inputBufferSize; + ioData->mBuffers[0].mDataByteSize = amountConverted; ioData->mBuffers[0].mNumberChannels = (converter->inputFormat.mChannelsPerFrame); ioData->mNumberBuffers = 1; + + *ioNumberDataPackets = amountConverted / converter->inputFormat.mBytesPerPacket; - *ioNumberDataPackets = converter->inputBufferSize / converter->inputFormat.mBytesPerFrame; - - converter->inputBufferSize = 0; + converter->inputBufferSize -= amountConverted; + converter->inputBuffer = ((char *)converter->inputBuffer) + amountConverted; } else { ioData->mBuffers[0].mData = NULL; @@ -71,7 +77,7 @@ static OSStatus ACInputProc(AudioConverterRef inAudioConverter, UInt32* ioNumber needsReset = NO; - ioNumberFrames = outputSize/outputFormat.mBytesPerFrame; + ioNumberFrames = inputSize/inputFormat.mBytesPerFrame; ioData.mBuffers[0].mData = outputBuffer; ioData.mBuffers[0].mDataByteSize = outputSize; ioData.mBuffers[0].mNumberChannels = outputFormat.mChannelsPerFrame; @@ -120,7 +126,7 @@ static OSStatus ACInputProc(AudioConverterRef inAudioConverter, UInt32* ioNumber kAudioConverterPropertyCalculateOutputBufferSize, &dataSize, (void*)&outputSize); - + NSLog(@"Output size: %i %i", outputSize, CHUNK_SIZE); if (outputBuffer) { NSLog(@"FREEING"); diff --git a/Cog.xcodeproj/project.pbxproj b/Cog.xcodeproj/project.pbxproj index 26dbf5387..ef054f02f 100644 --- a/Cog.xcodeproj/project.pbxproj +++ b/Cog.xcodeproj/project.pbxproj @@ -116,23 +116,6 @@ 8EFFCD6F0AA093AF00C458A5 /* PathNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EFFCD530AA093AF00C458A5 /* PathNode.m */; }; /* End PBXBuildFile section */ -/* Begin PBXBuildStyle section */ - 28FFB7160BC863C10047EC24 /* Development */ = { - isa = PBXBuildStyle; - buildSettings = { - COPY_PHASE_STRIP = NO; - }; - name = Development; - }; - 28FFB7170BC863C10047EC24 /* Deployment */ = { - isa = PBXBuildStyle; - buildSettings = { - COPY_PHASE_STRIP = YES; - }; - name = Deployment; - }; -/* End PBXBuildStyle section */ - /* Begin PBXCopyFilesBuildPhase section */ 177FD1000B90CB570011C3B5 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -734,12 +717,6 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cog" */; - buildSettings = { - }; - buildStyles = ( - 28FFB7160BC863C10047EC24 /* Development */, - 28FFB7170BC863C10047EC24 /* Deployment */, - ); hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* Cog */; projectDirPath = "";