OSX AUGraph重建导致badComponentType错误

OSX AUGraph recreation causes badComponentType error

本文关键字:badComponentType 错误 AUGraph 重建 OSX      更新时间:2023-10-16

在OSX上,我正在为我的音频系统创建一个AUGraph,如下所示:

OSStatus result = NewAUGraph(&mGraph);
AUNode outputNode;
AudioComponentDescription outputDesc;
outputDesc.componentType = kAudioUnitType_Output;
outputDesc.componentSubType = kAudioUnitSubType_DefaultOutput;
outputDesc.componentManufacturer = kAudioUnitManufacturer_Apple;
outputDesc.componentFlags = 0;
outputDesc.componentFlagsMask = 0;
result = AUGraphAddNode(mGraph, &outputDesc, &outputNode);
AUNode converterNode;
AudioComponentDescription converterDesc;
converterDesc.componentType = kAudioUnitType_FormatConverter;
converterDesc.componentSubType = kAudioUnitSubType_AUConverter;
converterDesc.componentManufacturer = kAudioUnitManufacturer_Apple;
converterDesc.componentFlags = 0;
outputDesc.componentFlagsMask = 0;
result = AUGraphAddNode(mGraph, &converterDesc, &converterNode);
result = AUGraphConnectNodeInput(mGraph, converterNode, 0, outputNode, 0);
result = AUGraphOpen(mGraph);
...initialize graph, start graph, etc...

这一切都很好,我能听到声音等。之后系统被关闭:

unsigned char isRunning = false;
AUGraphIsRunning(mGraph, &isRunning);
if (isRunning)
    AUGraphStop(mGraph);
OSStatus result;
unsigned char isInitialized = false;
AUGraphIsInitialized(mGraph, &isInitialized);
if (isInitialized)
{
    result = AUGraphUninitialize(mGraph);
}
result = DisposeAUGraph(mGraph);

同样,这里没有问题。然而,在系统重新启动时,第一个代码块再次执行后不久。:

result = AUGraphOpen(mGraph);

"result"显示为-2005 (badComponentType)。有人知道是什么引起的吗?

在关机时调用AUGraphClose修复了这个问题。我猜你不可能有两个开放的图形具有相同的输出单位?

相关文章:
  • 没有找到相关文章