要停止混合器总线渲染回调,可以停止图形,删除总线并重新启动图形。但是我有两个要求:

答:不想停止/重新启动图形。
B.不想卸下调音台总线。

我可以通过以下方式禁用/启用指定的总线:

OSStatus result = AudioUnitSetParameter (
                     mixerUnit,
                     kMultiChannelMixerParam_Enable,
                     kAudioUnitScope_Input,
                     inputBus,  //the specified bus number
                     isOnValue,  //on:YES or off:NO
                     0
                  );

但这并不能阻止调用指定总线的渲染回调。目前,我是通过在render回调函数中使用if语句来过滤掉该特定总线的方法。

有什么方法可以实现我的目标? (不使用我当前的解决方案)

最佳答案

您可以在图形处于 Activity 状态时修改节点的输入。您只需要随后更新图形。

为此,请使用AUGraphDisconnectNodeInput(...),然后使用AUGraphUpdate(...)

编辑问题后更新:

您的两个陈述并没有相反的事情。第一个从混音器单元中删除输入(您的回调,i假定),第二个将混音器单元添加为io单元的输入。后者是当时可能已经存在的连接,因为您没有删除此连接。

您必须再次将渲染回调附加到混合器单元,而不是将混合器单元添加到io单元。

另外,请确保在添加混音器单元的输入后调用AUGraphUpdate,以告知图形自身已更改,因为它已更改。

关于ios - 停止总线渲染回调而不删除混合器总线或停止/启动图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19505793/

10-12 05:20