[pulseaudio-discuss] jack soundcard reservation behavior
letz at grame.fr
Fri Jul 31 23:43:38 PDT 2009
Le 31 juil. 09 à 22:57, Lennart Poettering a écrit :
> On Fri, 31.07.09 13:46, Fernando Lopez-Lezcano
> (nando at ccrma.Stanford.EDU) wrote:
>> One question though, shouldn't pulseaudio have printed something when
>> jack quits? (with -vvv) It does print when jack asks for the card.
> 0.9.16 does, 0.9.15 doesn't take notice of that.
>>> So with F12 you start jack, and rb stops and then you quit jack
>>> and rb
>>> continues automatically.
>> Great. But do the streams stop playing or do they continue playing
>> "muted" while the card is "borrowed" by jackd? If I use the pacmd
>> suspend 1 trick they continue playing (muted, or sent to the
>> of /dev/null, I don't know).
> The effect of pasuspend and this reservation lgoci stuff should be
> mostly identical: the device is forcibly suspended playback
> freezes. The client apps are notified about that and could show this
> in the UI but almost no app doesd that and for them time just appears
> or with other words: not a single sample is dropped when PA's device
> access is suspended.
>>>> [*] for example it would allow for currently playing streams to
>>>> be moved
>>>> to a dynamically loaded jack plugin without missing a beat (or
>>>> with a very short interruption). Part of this is also
>>>> implemented in my
>>>> current script.
>>> I'd love to make PA automatically load a jack connectivity module
>>> JACK is started up. A simple way to implement that would be by
>>> watching for JACK's service name to appear on the bus. But
>>> unfortunately jack doesn't work that way and the running daemon does
>>> not take name on the bus.
>> Couldn't jack notify when it is ready? (and furthermore when it is
>> to quit). It is already talking on dbus with pulseaudio... I'm pretty
>> sure things are not so easy :-) It would also have to be something
>> could turn on/off when jack is started, maybe that would be the deal
> Taking a name on the bus would be the perfect solution, since it makes
> sure PA knows exactly when jack becomes available and when jack goes
> away again. Also if jack dies abnormally D-Bus would clean up the name
> automatically so this would even be very robust.
So I guess the "dbus_bus_request_name/dbus_bus_release_name" pair of
functions has to be used right? (I see that PulseAudio register
itself in "register_dbus" function but there is no symetrical
"unregister_dbus" that woud use dbus_bus_release_name?)
Is the dbus_bus_release_name mandatory? I mean I am thinking calling
dbus_bus_request_name *after* the JACK server has been started (to be
sure the PA JACK client can then register) and calling
dbus_bus_release_name *before* JACK server stops, but then how to be
sure the "stop" notification has really be received/handled by PA
before actualy stopping the server?
More information about the pulseaudio-discuss