1
我基本上試圖獲得使用GenericOutput Node
和到AudioUnitRender
呼叫由AUGraph
生產的樣品。作爲我的程序的起點,我使用Apple的MixerHost
示例,並更改outputNode
如下。AudioUnitRender失敗GenericOutput(-10877 /無效的元素)
AudioComponentDescription iOUnitDescription;
iOUnitDescription.componentType = kAudioUnitType_Output;
iOUnitDescription.componentSubType = kAudioUnitSubType_GenericOutput;
iOUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
iOUnitDescription.componentFlags = 0;
iOUnitDescription.componentFlagsMask = 0;
後來,當我想獲得我的樣本,我打電話
AudioUnitRenderActionFlags ioActionFlags = kAudioOfflineUnitRenderAction_Render;
AudioTimeStamp inTimeStamp = {0};
inTimeStamp.mHostTime = mach_absolute_time();
inTimeStamp.mFlags = kAudioTimeStampSampleHostTimeValid;
result = AudioUnitRender (
ioUnit,
&ioActionFlags,
&inTimeStamp,
1,
1024,
ioData
);
這將產生一個
「-10877 /無效的元素」
錯誤。我的假設是,錯誤來自沒有正確設置inTimeStamp.mSampleTime
字段。說實話,我還沒有找到找到除AudioQueueDeviceGetCurrentTime
以外的樣本時間的方法,我不能使用它,因爲我沒有使用AudioQueue
。但是,將ioActionFlag
更改爲kAudioTimeStampHostTimeValid
不會更改錯誤行爲。