我很难弄清楚如何制作一个完全在用户空间中工作的 Linux PCM 播放设备。当应用程序调用 snd_pcm_open/snd_pcm_readi/writei 时,我希望调用最终在用户空间驱动程序中结束,并且 pcm 数据要在用户空间驱动程序初始化时创建的线程中处理。然后音频处理线程将调用一个实际的 ALSA 内核驱动程序,该驱动程序将 pcm 输出到 HW。这基本上是我想要实现的目标:
应用程序 -> ALSA (pcmC1D0p) -> 音频处理线程(用户空间) -> ALSA (pcmC0D0p) -> 硬件
我看过一些插件,但不确定这是正确的方法吗?也不知道如何实际启动我的插件?我已经编译了一个 .so 文件,不确定将其放置在哪里或如何/如何调用它?
任何指针将不胜感激。