[alsa-devel] Possibility of routing at the kernel level

Mark Farrugia mark.farrugia at fiberdyne.com.au
Mon Aug 27 07:57:00 CEST 2018


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 at 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


More information about the Alsa-devel mailing list