- (void)processRippedAudio:(AudioBufferList *)audioBufferList andSubchannel:(SubchannelBufferList *)subBufferList
{
if (audioBufferList->mNumberBuffers > 0) {
NSUInteger frameCount = audioBufferList->mBuffers[0].mDataByteSize / sizeof(Float32);
OSErr err = ExtAudioFileWrite(_extAudioFile, frameCount, audioBufferList);
NSAssert2(err == noErr, @"The call to ExtAudioFileWrite failed.", UTCreateStringForOSType(err));
}
if (subBufferList->mNumberBuffers > 0) {
[_subchannelData appendBytes:subBufferList->mBuffers[0].mData length:subBufferList->mBuffers[0].mDataByteSize];
}
}
The audio file is set up as follows:
asbd.mSampleRate = 44100.f;
asbd.mFormatID = kAudioFormatLinearPCM;
asbd.mFormatFlags = kAudioFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsBigEndian | kAudioFormatFlagIsPacked;
asbd.mBytesPerPacket = 4;
asbd.mFramesPerPacket = 1;
asbd.mBytesPerFrame = 4;
asbd.mChannelsPerFrame = 2;
asbd.mBitsPerChannel = 16;