我基本上是在尝试获取AUGraph使用 aGenericOutput Node和调用AudioUnitRender. 作为我的程序的起点,我使用了Apple 的示例并进行了如下MixerHost更改。outputNode
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. 但是,更改ioActionFlagto kAudioTimeStampHostTimeValid不会改变错误行为。