Hi all,
Following my initial proposition on Friday for kernel-space audio routing, we at Fiberdyne Systems have since published our initial source for such a solution, which we are calling ALSA Virtual Driver, or simply AVIRT.
Please find the source here for your perusal: https://github.com/fiberdyne/avirt
Currently we use module parameters for the kernel module, however, we will be porting configuration to another system, such as configfs/sysfs.
We are completely open to suggestions and constructive criticism.
Regards, Mark
On Fri, Aug 24, 2018 at 4:27 PM Mark Farrugia mark.farrugia@fiberdyne.com.au wrote:
Hi all,
I am currently using the ALSA loopback driver to create a "virtual" sound card to abstract underlying real sound cards. I capture from the loopback in user-space, and then subsequently playback to a real sound card.
The issue with this is that there is a significant latency introduced (~100ms) due to the number of transitions of the stream from user to kernel space. I am seeking a way to avoid this.
My question is this: is there any way of routing PCM substreams at the kernel level, so that we can avoid the need to pipe audio back up to user-space with the loopback capturer? If there is no current solution that would achieve this, I would proposition to design and implement a system that uses a top-level ALSA driver, which then routes dynamically to one or many subscribed lower-level "audio path" drivers. The system would also have the option to loopback upon itself.
Does anyone see any reason that I couldn't (or shouldn't) attempt such a solution? All feedback is welcome.
Regards, Mark