如何编写符合ALSA标准的设备驱动程序?

时间:2017-02-11 17:19:32

标签: linux audio linux-kernel linux-device-driver alsa

我想将伪ALSA兼容驱动程序编写为可加载内核模块。当通过aplay / arecord通过ALSA-lib访问它时,让我们说,它必须像普通的7.1声道音频设备一样,至少提供所有基本控制 - 采样率,通道数,格式等等...... 它下面只会从音频流中获取每个频道,并将其作为UDP数据包流通过网络发送。 它必须能够多次加载,并最终暴露出/ dev下想要的音频设备。这样我们系统就会有多个虚拟声卡。

这样的内核模块的最小结构应该是什么? 你能给我一个示例骨架(至少是接口)100%ALSA兼容吗? ALSA驱动程序示例太差了......

2 个答案:

答案 0 :(得分:1)

我想我刚刚找到了我需要的东西。 在内核树中的sound / drivers目录下,没有比“dummy”和“aloop”模板更好的ALSA接口示例:

https://alsa-project.org/main/index.php/Matrix:Module-dummy

https://www.alsa-project.org/main/index.php/Matrix:Module-aloop

我只需要实现网络部分。

编辑: 为一个非常简单但必不可少的虚拟ALSA驱动程序添加另一个项目:

https://alsa-project.org/main/index.php/Minivosc

答案 1 :(得分:1)

  • 安装alsa-base alsa-util
  • modprobe snd-dummy
  • 使用alsamixer或使用mocp(需要安装moc)来添加虚拟音频成功