This driver is very similar to the JackNetDriver, but instead of connecting
through the network, it connects to its upstream server through standard jack
API. So it can only reach local servers which must be running as the same user
or in promiscuous mode.
The main use case is the multi-user, multi-session, shared workstation:
- a classic server with hw driver is launched system-wide at boot time, in
promiscuous mode, optionaly restricted to the audio group
- in each user session, a jackdbus server is automatically started with
JackProxyDriver as master driver, automatically connected to the
system-wide one
- optionaly, each user run PulseAudio with a pulse-jack bridge
We have a proper clocksource in the kernel, use this instead.
This commit also fixes jackd on ARM boards with newer Linux kernels
where /proc/cpuinfo has changed.
Cross-ported from jackd1.
The parameter long description is used through the controlapi/dbus.
Now that jack_control displays the constraints, the dither parameter
long description servers no purpose.
The parameter long description is used through the controlapi/dbus.
Now that jack_control displays the constraints, the dither parameter
long description servers no purpose.
Descriptor initialization reduces risk of mismatch between array size
and element initialization. It also improves code readability by
separating the parameter descriptions separate from the code that
composes the enum constraint structures.
As a side effect this commit makes the self-connect-mode constraint
allocated in dedicated memory chunks, like others enum constraints.
The bug was present in the inital version of the code,
commit ebba58c8ee
There was no memory corruption because while
jack_driver_param_value_enum_t is smaller by 72 bytes than
jack_driver_param_constraint_desc_t, for enum constraints,
the last 240 (on 64bit) bytes are not used.
Added my name and those who helped me to the Changelog file.
Implemented various changes from a second code review by Stéphane;
JackIIODriver::Attach is now JackIIODriver::Open.
JackIIODriver::Detach is now JackIIODriver::Close.
driver_initialize now uses 'goto' on error to reduce replication.
This commit is based on Matt Flax's commits, just slightly polished and
split into logical blocks.
I did not review the code itself, since Stephane has already accepted
Matt's sequence into the codebase, thus indicating he's fine with the
changes.
Downgraded eigen3 and sox version requirements for building iio.
Switched to using IIOMMap to access the IIO subsystem.
Added the overloaded methods for JackIIODriver::Attach, JackIIODriver::Detach, JackIIODriver::Read and JackIIODriver::Write.
Rewrite the JackIIODriver.C code to work properly.
We recommend using symbolic names like hw:Live but when subdevices are used
regcomp() was failing to parse them. This changeset improves the algorithm
by using less assumptions.
* Don't attempt to use device reservation when card_to_num() mapping
has failed. In case of card_to_num() failures, "Audio-1" device
was reserved on start but not released on stop. This was causing
next start to fail with out of memory error, and since previous
commit, with "A handler is already registered for
/org/freedesktop/ReserveDevice1/Audio-1" error.
* In case of playback device reservation failure, release the
capture device
* Remove unused fReservedCaptureDevice and fReservedPlaybackDevice
data members of the JackAlsaDriver class
Parameter order doesnt matter for jackd but does for jackdbus. jackd
sets parameters (via Control API) in the order they were specified at
commandline. Thus, the jackd user is expected to specify parameters in
correct order. This is not good solution for jackdbus though. jackdbus
settings persistence in ~/.config/jack/jack.xml stores parameter in
the order they are defined by the driver. OTOH the D-Bus interface
itself suggests no particular order. For example the user can change
only one parameter via the jack_control tool. Other parameters either
have their default values or the ones that were previously set are
used.
The particular ordering problem this changeset aims to fix is that when
user specifies capture/playback device and device, the first one(s)
is/are ignored. This happens because the device parameter is set after
the capture/playback device parameters. The alsa then uses the string
from the device parameter for both capture and playback devices,
despite the user wish to override one or both of them.
ffado_streaming_set_period_size() is exposed starting r2078 of FFADO.
To avoid a build dependency on ffado-svn in jack, we copy the prototype
declaration.
Since the symbol is defined as weak, no problems arise at runtime.