【发布时间】:2017-06-29 22:46:50
【问题描述】:
我想将虚拟 ALSA 兼容驱动程序编写为可加载的内核模块。当通过 ALSA-lib 通过 aplay/arecord 访问它时,假设它必须像普通的 7.1 声道音频设备一样至少提供所有基本控制 - 采样率、声道数、格式等...... 下面它只会从音频流中获取每个通道,并将其作为 UDP 数据包流通过网络发送。 它必须能够被多次加载,最终它会在 /dev 下暴露尽可能多的音频设备。这样我们系统中就会有多个虚拟声卡。
这样一个内核模块的最小结构应该是什么? 你能给我一个 100% 符合 ALSA 的示例框架(至少是接口)吗? ALSA 驱动示例太差劲了……
【问题讨论】:
-
您可能不需要创建内核模块。您想要的是编写一个 alsa 插件,该插件将创建一个 alsa 设备并将任何频道放在网络上。你可以看看pulseaudio在做什么,或者简单地配置pulse音频来做你想要的。
-
我明白了。但我真的很想把它放在内核空间中,以便将它用于其他任何事情。我也打算用这个驱动来控制 LED。
-
您也可以从用户空间执行此操作
-
实际上,LED 是用于传输音频的激光,作为备用通信通道。所以有时间限制,不适合用户空间...
标签: linux audio linux-kernel linux-device-driver alsa