libsoundio
提供跨平台音频输入和输出的 C 库。该 API
还适用于诸如数字音频工作站等实时软件
例如音乐播放器等消费类软件。
这个库是一个抽象;但是在精妙的平衡中,
在性能、功耗和 API 便利性方面,比例更倾向于
前者。只存在于某些音频后端中的功能被暴露出来。
特性和限制
- 支持的操作系统: - Windows 7+ - MacOS 10.10+ - Linux 3.7+ * 支持的后端: - JACK - PulseAudio - ALSA - CoreAudio - WASAPI - Dummy (静音) * 同时暴露原始设备和共享设备。原始设备可提供最佳性能,但阻止其他应用程序使用它们。共享设备是默认设置,通常提供采样率转换和格式转换。 * 同时暴露设备 ID 和友好名称。ID 可以保存在配置文件中,因为它在设备插入和拔出之间保持不变,而友好名称适合向用户展示。 * 支持每个受支持的后端的最佳使用方式。同一个 API 在后端具有固定缓冲区大小(如 JACK 和 CoreAudio)时,以及允许直接管理缓冲区(如 ALSA、PulseAudio 和 WASAPI)时都会做出正确的选择。 * C 库。只依赖各自的后端 API 库和 libc。不依赖 libstdc++,并且不包含异常、运行时类型信息或 setjmp。 * 错误通过返回码进行通知,而不是记录到 stdio。 * 支持通道布局(也称为通道映射),这对于环绕声应用程序很重要。 * 能够监控设备,并在可用设备发生变化时接收事件。 * 能够获取