我正在使用RemoteIO音频单元通过将呈现回调附加到输出总线(即扬声器)的输入范围来实现音频传递。
一切顺利。。。
OSStatus RenderTone(
void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData)
{
SoundEngine * soundEngine = (SoundEngine *) inRefCon;
// grab data from the MIC (ie fill up ioData)
AudioUnit thisUnit = soundEngine->remoteIOUnit->audioUnit;
OSStatus err = AudioUnitRender(thisUnit,
ioActionFlags,
inTimeStamp,
1,
inNumberFrames,
ioData);
if (result)
{
printf("Error pulling mic data");
}
assert(ioData->mNumberBuffers > 0);
// only need the first buffer
const int channel = 0;
Float32 * buff = (Float32 *) ioData->mBuffers[channel].mData;
}
直到我加上最后一行。
Float32 * buff = (Float32 *) ioData->mBuffers[channel].mData;
有了这条线,没有错误,只是沉默。如果没有它,我可以在麦克风前用手指点击,然后在耳机里听到声音。
编辑:
怎么回事?