LiveVideoCoreSDK
LiveVideoCoreSDK copied to clipboard
录音播放AudioUnit的使用,如有错误请指出并修改
录音播放文件MicSource.mm 录音回调函数中使用AudioUnitRender(...)传入的AudioBufferList应该malloc申请内存空间,然后再free().不然会造成不必要的bug!如下: static OSStatus handleInputBuffer(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList ioData) { videocore::iOS::MicSource mc =static_castvideocore::iOS::MicSource*(inRefCon);
AudioBuffer buffer;
buffer.mData = NULL;
buffer.mDataByteSize = 0;
buffer.mNumberChannels = 2;
AudioBufferList *buffers = (AudioBufferList *)malloc(sizeof(AudioBufferList));
buffers->mNumberBuffers = 1;
buffers->mBuffers[0] = buffer;
OSStatus status = AudioUnitRender(mc->audioUnit(),
ioActionFlags,
inTimeStamp,
inBusNumber,
inNumberFrames,
buffers);
if(!status) {
mc->inputCallback((uint8_t*)buffers->mBuffers[0].mData, buffers->mBuffers[0].mDataByteSize, inNumberFrames);
}
free(buffers);
return status;
}
如有错误,请指出并修改!