可能是这样的:
输入硬件 (麦克风) -> 采集到的原始音频数据 -> 自定义处理音频数据 -> 处理后的音频数据 -> 输出设备 (扬声器 / 听筒)
我们可以将此分为两部分:
输入硬件 (麦克风)...-> 采集到的原始音频数据
待播放的音频数据 -> 输出设备 (扬声器 / 听筒)
当然我们拿到了 “采集到的原始音频数据” 之后, 就可以自行处理, 然后做为 “待播放的音频数据” 塞给输出设备....Element 1 作为输入水管, 左侧 (Input Scope) 固定连接着硬件麦克风, 不可改动, 右侧 (Output Scope) 是水管的出口, 从这里, 我们就可以拿到采集到的音频数据....Element 0 是输出水管, 左侧 Input Scope 可以传入要播放的数据, 右侧 Output Scope 固定连着扬声器 / 听筒, 如果我们想播放什么音频, 从 Element 0 的..., 方法的签名和 InputCallback 一致, 不同的是, callback 的最后一个参数是初始化好的, 我们可以直接往里写数据即可.