我对 ALSA 声音库有疑问。
让我首先声明,对像我这样的问题的通常回答是“使用 JACK”,并且这个答案没有帮助,因为我可能无法使用 JACK。我在 Android 设备上运行本机 linux 程序(不是NDK,而是真正的本机),根据我的收集,JACK 在 Android 上不起作用,因为某些 libc 和 posix 东西不兼容。
问题:
1) 我可以使用 2 个不同的线程,用于 a) 读取捕获的样本和 b) 播放样本吗?我见过的所有ALSA“全双工”示例都只是使用阻塞功能交替读取/写入声卡,这似乎不太好用,特别是如果你的程序应该做更多的事情。
2)据我了解,ALSA 混合不同应用程序播放的音频,就像 Windows 音频混合器一样。是否有可能获得对音频设备的独占访问权限,以保证我的应用程序是唯一一个播放音频的应用程序,而不会发生动态范围的混合和降级?