要停止混音器总线渲染回调,可以停止图形,移除总线并重新启动图形。但我有两个要求:
一个。不想停止/重新启动图表 B.不想拆下调音台总线。
我可以使用以下命令禁用/启用指定的总线:
OSStatus result = AudioUnitSetParameter (
mixerUnit,
kMultiChannelMixerParam_Enable,
kAudioUnitScope_Input,
inputBus, //the specified bus number
isOnValue, //on:YES or off:NO
0
);
但是这并没有阻止调用指定总线的渲染回调。目前,我通过在render回调函数中使用if语句来过滤掉该特定总线。
有没有办法实现我的目标? (不使用我目前的解决方案)
答案 0 :(得分:2)
您可以在图表处于活动状态时修改节点的输入。您只需要在之后更新图表。
为此,请使用AUGraphDisconnectNodeInput(...),然后使用AUGraphUpdate(...)。
修改问题后更新:
你的两个陈述并没有做相反的事情。第一个删除混音器单元的输入(我的回调,我推测),第二个添加混音器单元作为io单元的输入。后者是当时可能已存在的连接,因为您没有删除此连接。
您必须再次将渲染回调附加到混音器单元,而不是将混音器单元添加到io单元。
还要确保在添加混音器单元的输入后调用AUGraphUpdate,告诉图表更新自己,因为它已被更改。