停止总线渲染回调,而不删除混音器总线或停止/启动图形

时间:2013-10-21 22:17:25

标签: ios core-audio audiounit

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

一个。不想停止/重新启动图表 B.不想拆下调音台总线。

我可以使用以下命令禁用/启用指定的总线:

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

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

有没有办法实现我的目标? (不使用我目前的解决方案)

1 个答案:

答案 0 :(得分:2)

您可以在图表处于活动状态时修改节点的输入。您只需要在之后更新图表。

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

修改问题后更新

你的两个陈述并没有做相反的事情。第一个删除混音器单元的输入(我的回调,我推测),第二个添加混音器单元作为io单元的输入。后者是当时可能已存在的连接,因为您没有删除此连接。

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

还要确保在添加混音器单元的输入后调用AUGraphUpdate,告诉图表更新自己,因为它已被更改。