0
我實現使用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;
有了這條線,沒有錯誤,只是沉默。沒有它,我可以在麥克風前點擊我的手指,並在耳機中聽到它。
編輯: AudioBuffer BUF0 = ioData-> mBuffers [0]; //足以導致失敗
這是怎麼回事?
這是不引起由編譯器優化了一個未使用的變量的誤差。如果我設置了buff ++;在下一行,行爲是一樣的。儘管編譯器可能仍然可以檢測到該變量實際上未被使用。
AudioBuffer buf0 = ioData-> mBuffers [0]; //足以導致失敗 – 2010-11-11 05:56:06