After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 773343 - ext/jack uses JackNoStartServer
ext/jack uses JackNoStartServer
Status: RESOLVED WONTFIX
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-10-22 07:02 UTC by Sodhi, Cedric
Modified: 2018-05-06 13:27 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sodhi, Cedric 2016-10-22 07:02:46 UTC
It is one helpful feature of the jack client library that it allows to autostart the jack server. This is however impossible, if the client explicitly uses JackNoStart server as in gstjackaudioclient.c:292. Why is this there? Can it be removed?
Comment 1 Sebastian Dröge (slomo) 2016-10-22 08:07:10 UTC
It would make JACK be automatically started, which might not be the desired effect if the user is running another sound server. Generally the audio sinks/sources are not automatically starting any sound servers, so that they are only selected if the user actually wants to run that specific one.
Comment 2 Tim-Philipp Müller 2016-10-22 09:05:02 UTC
Yes, we don't autostart sound daemons as a matter of policy.
Comment 3 Sodhi, Cedric 2016-10-22 09:27:59 UTC
Sebastian: This may always be the case, of course. It is not specific to gstreamer in that sense. In any case, autostarting can always be prevented by either configuration (jackdrc) or environment (JACK_NO_START_SERVER) whereas "not autostarting" being enforced by JackNoStartServer in the source can unfortunally not be compensated for. I think it would be good if the choice could be given to the user. If I recall correctly, it is even so that currently the client library does not start jackd unless JACK_START_SERVER is set (without JackNoStartServer).
Comment 4 Nicolas Dufresne (ndufresne) 2016-10-23 00:45:26 UTC
Not sure for the policy, but GStreamer can cause daemon to start wherever dbus is used. It is the case for pulse audio as an example. I'm sure though the implemented method is there so pulse and Jack can cohabit.

I would add a new property here.
Comment 5 Sodhi, Cedric 2016-10-23 09:03:12 UTC
I'm not sure dbus is an appropriate substitute for the jack client library autostart mechanism here. dbus autostart services are "available on request" because they *are* dbus mediated services and the starting can be performed "transparently" to the requesting client. This is not the case for Jack, as far as I can see.

As for the policy, if I understand correctly what you mean: I think it can be expected that if the pipeline contains a Ysink (for audio or video alike), then it will be correct to assume that the associated "backend" Y (if any) necessarily has to run. Very much because the case where the sink is backed by a daemon which can started or not is just a special case. If there is a sink for Y in the pipeline (like alsa, jack or X video), then it is to be assumed that Y is in a working state (i.e.: if there is a daemon, it is running). If, for some reason or another, various sinks cannot coexist, it is the responsiblity of the user not to create them in the first place.
Comment 6 Tim-Philipp Müller 2016-10-24 09:02:57 UTC
So in summary I think this is WONTFIX from our side, but we would accept a property that would allow applications that want this behaviour to change it.

Please let us know if you intend to make a patch for that or not.
Comment 7 Josep Torra Valles 2016-10-24 17:08:40 UTC
I don't think that property is a good idea either.

Forking inside the plugin caused some nightmares to me. Some nice deadlocks with a misconfigured server that was running an application with CEF/tcmalloc and playing sounds with GStreamer that was spawning pulse server from the audio sink.
Comment 8 Sodhi, Cedric 2016-10-24 17:20:55 UTC
I think forking to a new process (with exec) will not bear the risk of introducing any such issues which you encountered elsewhere. Any multithreaded application whatsoever should be able to just spawn a child - regardless of threading.
Comment 9 Tim-Philipp Müller 2018-05-06 13:27:03 UTC
This is a WONTFIX from our side, sorry.

Audio servers should be started by the session or application if needed.