On Thursday 02 May 2013 16:37:47 David Henningsson wrote:
On 05/02/2013 04:28 PM, Tvrtko Ursulin wrote:
Hi David,
On Thursday 02 May 2013 12:55:05 David Henningsson wrote:
Just had an idea which I'll write down here before I forget it again...and I'm not saying I'll implement this anytime soon either, but here goes:
There is a device reserve protocol between PulseAudio and JACK2 - when JACK needs the sound card, it'll send a dbus message to PulseAudio and grab a name in D-Bus.
However, there are plenty of applications who like to access ALSA directly, without going through JACK2 or PulseAudio. By making a "reserve" plugin, we could have this functionality for those apps too.
In practice, if the app usually opens "plughw:0" or "hw:0", it could instead open "reserve:plughw:0" or "reserve:hw:0" to also reserve the device from PulseAudio usage while the device is open. Meanwhile, PulseAudio is free to use other audio devices (which is not the case when using e g pasuspender).
How does that sound?
If I understand correctly you are saying essentially this:
- There is an existing device control protocol which works over DBus.
- Your idea is to add a equivalent device control protocol using ALSA PCM
plugin (well in fact not add but create a new proxy interface to it).
Is that right? If so, how do you provide this functionality to existing applications without teaching them about the reserve plugin?
Many ALSA applications lets you specify the device string on e g the command line or through a configuration interface. So the end user would configure the application to use "reserve:plughw:0" instead of "plughw:0".
The applications that do not follow this will have to be taught, and they have a extremely simple way to implement it - just add "reserve:" do the device string.
Ah yes I forgot about this configurability. Which also means the question of central policy is sorted since it is explicit user configuration to steal a device.
It is still a bit kludgy for a PCM plugin to do this, but, it solves a real problem and does it cheaply so I think the result justifies the means in this case.
Regards,
Tvrtko
P.S. I am not active in this field but just dropping in due personal interest in this functionality.