Dne 05. 10. 20 v 4:38 alsa@xxxxxxxxxxxx napsal(a):
Hello,
Let me open by saying I am not an experienced ALSA developer so
hopefully I'm just missing something really easy here.
I'm trying to use some DSP programs that insert themselves into the
audio chain via the ALSA loopback device. My understanding is that
whichever program opens the loopback device first sets the parameters,
so the DSP
program has to know what parameters any playback program is going to use
before it opens its end of the loopback device. And it has to know when
to release the loopback device so that another (or the same) playback
program can open the loopback device with possibly different parameters.
(The DSP program also needs to the know the audio parameters just to
do the right thing of course.)
I'm not sure how best to accomplish this. I don't want any form of
auto-format conversion such as using a resampling or format conversion
plugin. I want the DSP program to access the raw PCM stream however it
was configured by the playback program.
I was thinking I could use the PCM hook system to accomplish what I
want. Capture the SND_PCM_HOOK_TYPE_CLOSE (and possibly even use the
hook init) to tell the DSP program to close its end of the loopback
device. Capture the SND_PCM_HOOK_TYPE_HW_PARAMS to configure the DSP
program with the appropriate parameters and tell it to open the loopback
device with those new parameters.
There used to be a notification module parameter (pcm_notify) which
closed the other loopback side if params changed
https://mailman.alsa-project.org/pipermail/alsa-devel/2020-March/165454.html
I am afraid it remains to be fixed.
Best regards,
Pavel.