【发布时间】:2013-01-20 10:33:12
【问题描述】:
我对 ALSA 声音库有疑问。
首先让我声明,对我这样的问题的通常回答是“使用 JACK”, 并且那个答案没有帮助,因为我可能无法使用 JACK。 我在 Android 设备上运行一个原生 linux 程序(不是 NDK,但真的是原生的),根据我的收集,JACK 不能在 Android 上运行,因为一些 libc 和 posix 东西不兼容。
问题:
1) 我可以使用 2 个不同的线程来 a) 读取捕获的样本和 b) 回放样本吗?我见过的所有 ALSA “全双工”示例都只是使用带有阻塞功能的声卡交替读取/写入,这似乎不是很好,特别是如果你的程序应该做更多的事情。
2) 据我了解,ALSA 混合不同应用程序播放的音频,就像 Windows 音频混合器一样。是否有可能获得对音频设备的独占访问权限,从而保证我的应用程序是唯一播放音频的应用程序,而不会发生动态范围的混合和降级?
【问题讨论】:
-
据我所知,Android OS 负责管理系统声音,没有办法在非 root/非修改设备上直接访问 ALSA。
-
更重要的是,不能保证底层实际上是 ALSA。
-
这是什么意思/你能详细说明吗,Marko?
-
至于有根设备,这与我正在做的事情无关,摆弄自定义设备。