【问题标题】:OSX AUGraph recreation causes badComponentType errorOSX AUGraph 重新创建导致 badComponentType 错误
【发布时间】:2011-12-01 21:27:52
【问题描述】:

在 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);

“结果”显示为 -2005 (badComponentType)。有人知道这是什么原因吗?

【问题讨论】:

    标签: c++ macos audio


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-23
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2023-03-20
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多