[Bug 251125] audio/jack: update to jack2 or add new port audio/jack2

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 01 Aug 2021 19:05:12 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251125

Florian Walpen <dev@submerge.ch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #220087|0                           |1
        is obsolete|                            |
 Attachment #220234|0                           |1
        is obsolete|                            |
 Attachment #220321|0                           |1
        is obsolete|                            |

--- Comment #83 from Florian Walpen <dev@submerge.ch> ---
Created attachment 226860
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=226860&action=edit
New jack2 OSS driver from private github repo

Call for testing! And sorry for the long wait.

I have what I think is a reasonably working implementation here:
https://github.com/0EVSG/jack2/commits/feature/freebsd_oss

Please note that the patches attached apply to the ports repo and will fetch
sources from my private github repo above. If there is no intervention I will
try to upstream my changes in a week or so. But I'd be glad to have some more
testing or opinions on it to back it up.

Implementation
--------------
The OSS buffer size (discussed above) is only changed if the current buffer
size is too small. I abandoned the idea of harmonizing the fragment sizes of
capture and playback channels, it caused trouble with some devices (namely
hda).

It uses poll() for wait and sync now, which is more in line with other jack
drivers like ALSA. This also allows to enable jack "async" mode, which means
plugins and other jack processes cannot stall the whole jack process anymore.

My main concern was to get defined and stable latencies for recording. This
implementation tries hard to keep the latency within +/- 1ms for a given
configuration, despite over- and underruns, drifting, missing USB packets and
whatever I encountered during my tests.
But for that it may also be prone to overreacting in some cases.

Alas, I am using it successfully for recording since about 3 weeks ago, and
never had any issues with timing.

On portability: 16, 24 and 32 bit sample sizes are supported, but the
conversion functions are limited to native endianness. The lot of little-endian
sound cards will therefore not work in bitperfect mode on big-endian platforms.

Migration
---------
Port audio/lash fails with missing -pthread, see patch. Apart from that there
was no fallout AFAIK.

The high priority jackd system service is still available, although some
arguments changed and the man page is not up to date. Try "jackd --help" and
"jackd -d oss --help".

The more conventional way is to start jack via DBUS (needs service dbus).
Configuration has to be done through the jack_control utility, see
"jack_control help". Relevant settings include driver selection ("oss"), driver
parameters, and engine parameters ("sync", "verbose").  Unfortunately,
graphical tools like qjackctl or cadence do not produce working configurations,
but can at least be used to start jack_dbus.

I'm open to questions, suggestions and error reports (logs appreciated).

Thanks!

-- 
You are receiving this mail because:
You are on the CC list for the bug.