我正在开发一种运行 Linux 的嵌入式设备4.14.79
,它有 2 个硬件 PCM,一个连接到蓝牙芯片,另一个连接到 GSM 手机。
我的目标是在全双工配置中桥接这些流(bt-in -> gsm-out
和)以处理呼叫。gsm-in -> bt-out
事实上,蓝牙是连接到手机上的。
我的编解码器正在工作,我可以在两张卡上使用aplay
和。arecord
我正在寻找一种将这些通道桥接在一起的解决方案,可能是在内核端(为了性能)。到目前为止我发现:
- 差分脉冲编码调制:尝试编辑我的 DT 以
simple-scu-card
代替我的驱动程序,但我仍然以 2 个独立的(工作)卡结束,它们不会相互通信,下一步是调整我的声音驱动程序。 snd-aloop
:据我所知,这不适合我的情况:我不知道如何将我的卡hw:0,0
与任何Loopback
卡接口桥接。alsaloop
:用户空间,但是我没能使其工作:
alsaloop -P hw:1,0 -C hw:0,0 --format S16_LE -c 2 -r 8000 -t 500000
上面的命令结果是噼啪声,一帧长,只有当我杀死alsaloop
.我还尝试了不同的周期和缓冲区大小,没有任何变化(预计 xruns 具有奇怪的值)。我很快就会做更多测试。
由于资源有限,我想避免使用Jack
和/或pulseaudio
。
我的问题是:有人以前遇到过像我这样的问题并且可以为我提供一些资源/文档/示例吗?
任何建议都非常感激。
注意:我已经关注这个主题几周了,如果这个问题缺少信息,请告诉我。