1

我基本上是在尝试获取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不会改变错误行为。

4

1 回答 1

0

与元素(又名“总线”)有关的错误是指您的 AudioUnitRender 调用的第四个参数 (1)。通用输出单元只有一个元素/总线:0,它具有输入、输出和全局范围。如果您将 0 传递给调用而不是元素 # 的 1,则该错误应该会消失。

于 2014-02-11T19:20:57.013 回答