0
我有一個錄音機回調函數(kAudioOutputUnit_SetInputCallback),我需要在AudioBufferList中分配緩衝區,並且只有一個回調函數返回的informatin-inNUmberFrames。 我如何爲此malloc?如何僅使用幀數來確定有多少數據可用?在僅使用inNumberFrames信息的AudioBufferList中分配緩衝區iOS
我有一個錄音機回調函數(kAudioOutputUnit_SetInputCallback),我需要在AudioBufferList中分配緩衝區,並且只有一個回調函數返回的informatin-inNUmberFrames。 我如何爲此malloc?如何僅使用幀數來確定有多少數據可用?在僅使用inNumberFrames信息的AudioBufferList中分配緩衝區iOS
OSStatus AudioCapturer::recordingCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
AudioCapturer *capturer=(AudioCapturer *)inRefCon;
AudioBuffer buffer;
buffer.mNumberChannels = 1;
buffer.mDataByteSize = inNumberFrames * 2;
buffer.mData = malloc(inNumberFrames * 2);
// Put buffer in a AudioBufferList that is to be filled in the AudioUnitRender
AudioBufferList bufferList;
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0] = buffer;
// Then:
// Obtain recorded samples
OSStatus status;
status = AudioUnitRender(capturer->m_audioUnit,
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
&bufferList);
capturer->checkStatus(status);
//use the bufferlist data and free the allocated buffer
free(bufferList.mBuffers[0].mData);
return noErr;
}
你也可以勾選這個[link](http://atastypixel.com/blog/using-remoteio-audio-unit/) – Saraswati