Ios10 运行时远程IO配置

Ios10 运行时远程IO配置,ios10,audiounit,remoteio,Ios10,Audiounit,Remoteio,我有一个RemoteIO单元设置,可以从麦克风获取输入并播放。只需轻触按钮,即可随时启用或禁用播放。我的问题是,启用或禁用播放的调用是否需要音频单元停止、取消初始化,然后进行配置,或者根本不需要停止和取消初始化?这是我用来在RIO运行时启用或禁用运行时播放的示例代码 /* Are these two lines required or not???*/ [self stopIOUnit]; AudioUnitUninitialize(mAudioUnit); int flag = enab

我有一个RemoteIO单元设置,可以从麦克风获取输入并播放。只需轻触按钮,即可随时启用或禁用播放。我的问题是,启用或禁用播放的调用是否需要音频单元停止、取消初始化,然后进行配置,或者根本不需要停止和取消初始化?这是我用来在RIO运行时启用或禁用运行时播放的示例代码

/* Are these two lines required or not???*/
[self stopIOUnit];
AudioUnitUninitialize(mAudioUnit);


 int flag = enable? 1 : 0;
// play on io on the output bus
OSStatus   status = AudioUnitSetProperty(mAudioUnit,
                              kAudioOutputUnitProperty_EnableIO,
                              kAudioUnitScope_Output,
                              0, /*output*/
                              &flag,
                              sizeof(flag));

要启用和禁用音频单元,只需调用
AudioOutputUnitStop()
AudioOutputUnitStart()
。如果您还希望更改单元的状态(并且启用/禁用似乎不被视为“状态”),则只需要
AudioUnitUninitialize()
AudioUnitInitialize()

AudioUnitUninitialize()

通常,在初始化音频单元时,无法更改音频单元的状态(例如其I/O格式和内存分配)


停止音频单元不是绝对必要的,尽管它确实降低了应用程序的功耗,因此,如果停止播放任何时间,都应该停止播放,以节省用户的电池寿命。不停止音频单元的优点是,重新开始录制时延迟会降低很多毫秒,这在某些应用程序中可能很重要。停止音频单元的替代方法是在录制回调中丢弃样本,并在播放回调中用静音(零)填充缓冲区


仅当您以后使用其他配置重新初始化音频单元时,才需要进行取消初始化。

是否
AudioOutputUnitStart
AudioOutputUnitStop
足够?这就是问题所在,是否需要取消初始化或停止或两者都需要。