全双工 PCM 桥

全双工 PCM 桥

我正在开发一种运行 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

我的问题是:有人以前遇到过像我这样的问题并且可以为我提供一些资源/文档/示例吗?

任何建议都非常感激。

注意:我已经关注这个主题几周了,如果这个问题缺少信息,请告诉我。

相关内容