0

我有一个 AUGraph 设置和工作,它由一个多通道混音器(带有单个单声道输入)组成,将 RemoteIO ( kAudioUnitSubType_RemoteIO) 单元馈送到扬声器输出。我实现了单输入混音器,以便能够在左右硬件输出通道之间平移我的音频源。这工作得很好。

由于这是一个 VOIP 应用程序,我一直在尝试使用语音处理 IO 单元 ( kAudioUnitSubType_VoiceProcessingIO) 代替远程 IO 单元 ( kAudioUnitSubType_RemoteIO)。根据 Apple 的描述,这个单元的行为应该像一个具有一些额外功能的远程 IO 单元......

Voice-Processing I/O 单元(子类型kAudioUnitSubType_VoiceProcessingIO)具有远程 I/O 单元的特性,并为双向双工通信增加了回声抑制。它还增加了自动增益校正、语音处理质量调整和静音。这是用于 VoIP(互联网协议语音)应用程序的正确 I/O 单元。

但我注意到,当我切换到语音处理 IO 单元时,我失去了使用混音器进行平移的能力。关于这里发生了什么的任何想法?语音处理 IO 单元本身是单声道的吗?

4

1 回答 1

3

对于我的特定 AUGraph,为 IO 单元提供多通道混合器输出,为 IO 单元的输入范围转储 ASBD 始终显示每帧 2 个通道。正如我从文档中了解到的,多通道混音器的输出是立体声的。

我为 RemoteIO 单元的输出范围转储了 ASBD,实际上 ASBD 每帧显示 2 个通道。尝试将此覆盖到 1 个通道会导致 kAudioUnitErr_PropertyNotWritable 错误。

然后我将子类型切换到 VPIO 单元。为输出范围转储 ASBD 显示每帧 1 个通道。如上所述,尝试将其覆盖到 2 个通道也会导致相同的属性不可写错误。

所以至少对于我特定的 AUGraph ,我必须得出结论,VPIO 单元本质上是单声道的。

于 2015-03-26T14:07:49.517 回答