我基本上是在尝试获取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
. 但是,更改ioActionFlag
to kAudioTimeStampHostTimeValid
不会改变错误行为。