IO Unit 实际分为两种模式: Remote IO 和 VPIO, Remote IO 就是封装了和硬件的交互, 从而实现采集和播放的功能。
VPIO 全称是 Voice Processing IO, 它主要用于 VoIP (Voice over IP) 场景, 比如音视频通话, 它的结构和 Remote IO 结构完全相同, 只是多增加了回声消除和降噪的特点。
这里注意一下 VPIO 和 VoIP 的区别, 前者是 apple 平台 AudioUnit 里特有的概念, VoIP 是通用概念。
另外一版都会把 Remote IO 称为 媒体音量, 把 VPIO 称为 通话音量。
它们的区别有以下几点:
Remote IO (媒体音量) 下因为没有做回声消除和降噪, 所以音质非常好, 适合播放音乐等高音质的场景. 音量条可以向下调整到 0.
VPIO (通话音量) 下有回声消除和降噪, 很适合不带耳机通话的场景, 避免中间产生回声和啸叫, 但代价是对音质有损伤, 适合通话的场景. 音量调最小只能设置到 1 格, 无法调整到 0 格, 也可以根据这个特点判断当前属于哪种模式.
PS: 上面说的调节音量条, 都是调节的播放音量, 采集音量无法通过硬件调节, 可以通过 AudioUnit 的 volume 属性调节.