要停止混合器总线渲染回调,可以停止图形,删除总线并重新启动图形。但是我有两个要求:
答:不想停止/重新启动图形。
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/