if (outputFormat.mFormatFlags & kAudioFormatFlagIsNonInterleaved) {
// The audio is non-interleaved
printf("Not interleaved!\n");
self.isInterleaved = NO;
// allocate an AudioBufferList plus enough space for array of AudioBuffers
UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * outputFormat.mChannelsPerFrame);
//malloc buffer lists
self.inputBuffer = (AudioBufferList *)malloc(propsize);
self.inputBuffer->mNumberBuffers = outputFormat.mChannelsPerFrame;
//pre-malloc buffers for AudioBufferLists
for(UInt32 i =0; i< self.inputBuffer->mNumberBuffers ; i++) {
self.inputBuffer->mBuffers[i].mNumberChannels = 1;
self.inputBuffer->mBuffers[i].mDataByteSize = bufferSizeBytes;
self.inputBuffer->mBuffers[i].mData = malloc(bufferSizeBytes);
memset(self.inputBuffer->mBuffers[i].mData, 0, bufferSizeBytes);
}
} else {
printf ("Format is interleaved\n");
self.isInterleaved = YES;
// allocate an AudioBufferList plus enough space for array of AudioBuffers
UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * 1);
//malloc buffer lists
self.inputBuffer = (AudioBufferList *)malloc(propsize);
self.inputBuffer->mNumberBuffers = 1;
//pre-malloc buffers for AudioBufferLists
self.inputBuffer->mBuffers[0].mNumberChannels = outputFormat.mChannelsPerFrame;
self.inputBuffer->mBuffers[0].mDataByteSize = bufferSizeBytes;
self.inputBuffer->mBuffers[0].mData = malloc(bufferSizeBytes);
memset(self.inputBuffer->mBuffers[0].mData, 0, bufferSizeBytes);
}
// The audio is non-interleaved
printf("Not interleaved!\n");
self.isInterleaved = NO;
// allocate an AudioBufferList plus enough space for array of AudioBuffers
UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * outputFormat.mChannelsPerFrame);
//malloc buffer lists
self.inputBuffer = (AudioBufferList *)malloc(propsize);
self.inputBuffer->mNumberBuffers = outputFormat.mChannelsPerFrame;
//pre-malloc buffers for AudioBufferLists
for(UInt32 i =0; i< self.inputBuffer->mNumberBuffers ; i++) {
self.inputBuffer->mBuffers[i].mNumberChannels = 1;
self.inputBuffer->mBuffers[i].mDataByteSize = bufferSizeBytes;
self.inputBuffer->mBuffers[i].mData = malloc(bufferSizeBytes);
memset(self.inputBuffer->mBuffers[i].mData, 0, bufferSizeBytes);
}
} else {
printf ("Format is interleaved\n");
self.isInterleaved = YES;
// allocate an AudioBufferList plus enough space for array of AudioBuffers
UInt32 propsize = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * 1);
//malloc buffer lists
self.inputBuffer = (AudioBufferList *)malloc(propsize);
self.inputBuffer->mNumberBuffers = 1;
//pre-malloc buffers for AudioBufferLists
self.inputBuffer->mBuffers[0].mNumberChannels = outputFormat.mChannelsPerFrame;
self.inputBuffer->mBuffers[0].mDataByteSize = bufferSizeBytes;
self.inputBuffer->mBuffers[0].mData = malloc(bufferSizeBytes);
memset(self.inputBuffer->mBuffers[0].mData, 0, bufferSizeBytes);
}