Make use of the sosso library to handle the low-level operation of
OSS devices on FreeBSD. Further separate this part into the
JackOSSChannel class, which should make it easier to reuse the code
for JackOSSAdapter (not planned yet).
JackOSSChannel features an additional assist thread which helps to
process the OSS device when the driver thread is busy with the JACK
dependency graph.
Combined with the improvements of the sosso library, these changes
bring JACK into the realm of real-time audio processing on FreeBSD,
for select PCI sound cards (4-6ms round trip latency).
Reduce the base latencies for capture and playback by half a period,
and let the update method account for the additional playback latency
introduced by OSS buffer management.
This fits actual OSS latencies better, so the same settings for the
extra input-latency and output-latency parameters should apply to
different period lengths.
Beware that this change invalidates current input-latency and
output-latency values, they have to be measured again.
Features:
* Internal workings more in line with other Jack drivers.
* Use poll() for wait and sync instead of blocking I/O.
* Allows to use Jack in "async" mode.
* Calculate DSP usage correctly.
* OSS buffer management to achieve stable latencies.
* Latency correction for asymmetric OSS buffer use.
* More robust handling of over- and underruns.
* Handle format changes forced by the OSS interface.
* FreeBSD 24bit samples are always packed.
No changes to the driver parameters or the user interface.