It did build fine in my poudriere, but not in the poudriere of others.
PR: 296643
Submitted by: Eric Camachat <eric@camachat.org>
Noticed by: Einar Bjarni Halldórsson <einar@isnic.is>
Capture (source) fixes for cramped rings and fat strides
Fixes a field report of skipping audio when recording and playing back
at once on a fat-stride USB capture device (20-channel S32, 80
bytes/frame): FreeBSD clamps the soft ring at CHN_2NDBUFMAXSIZE, so it
holds only ~1.6 graph periods there, and the capture path had no
headroom for arrival jitter.
Fixes a field report of periodic drops with crackles on USB audio: the
sink's near-full fill branch keyed on small driver-forced fragments as a
proxy for a small total buffer, which uaudio breaks (1 ms soft fragments,
large grant) - near-full targeting added 100+ ms of latency and left one
fragment of overshoot headroom, so every normal servo excursion
short-wrote and dropped the tail.
Validated by a discrete-event simulation of the servo (exact DLL and
bandwidth-adaptation ports) that reproduces the field failure with the
old target and shows zero drops with the new one across +/-2000 ppm
drift, jitter storms and 4-hour runs, plus the live battery on hdspe(4).
Threading / robustness:
- Serialize all reconfiguration onto the data loop and stop the driver
timer cleanly on pause/suspend (closes the renegotiation window behind
a PipeWire audioconvert crash).
- Detach loop sources and close the timerfd on clear().
- Fail negotiation instead of aborting when the device won't open or
rejects the format/channels/rate; validate peer-provided formats and
buffers; return errors from all unhandled SPA entry points.
- Run without devd (hotplug disabled instead of aborting).
Audio / OSS:
- Probe device caps and advertise real formats, rates and channel
layouts (mono through 7.1 in FreeBSD kernel interleave order, plus
the device's native width as AUX channels).
- Open capture read-only so asymmetric play/rec channel counts work
(shkhln/pw-oss#3).
- Run a DLL on capture: real clock delay/rate_diff and rate matching;
prime capture with silence and a drained ring at startup.
- Report OSS underruns/overruns via the xrun callback.
Params / session:
- Store and replay the port Latency param; ProcessLatency and
latencyOffsetNsec support.
- Device profiles (Off/Default) with node add/remove.
- Source port param parity: Format readback, Buffers info, re-emit.
- oss.delay: PropInfo entry, Props readback, per-device defaults via
monitor.oss.rules, live re-apply.
- Log through the spa.oss topic (PIPEWIRE_DEBUG=spa.oss:N).
Ports 02f27a83b4 fixed the ports tree to the C locale so it would work
correctly in environments where users use a locale that isn't compatible
with the C locale, e.g. xx_YY.UTF-8 where [A-Z] includes more than just
upper case letters. USE_LOCALE was introduced to let ports use another
locale if they needed it. The C.UTF-8 locale was created later on to be
mostly compatible with the C locale.
Switch the ports tree locale to C.UTF-8 and remove USE_LOCALE. The
world has moved to Unicode so all ports either require it or know how to
build correctly in a Unicode environment.
PR: 295945
Exp-run by: antoine
pkg-plist hardcoded a framework-managed line:
@dir share/licenses/hts_engine-API-1.10
share/licenses/<pkg>/ is created automatically by the LICENSE
framework and must never be in pkg-plist.
Putting that line causes a packaging failure when DISABLE_LICENSES=yes
is set:
pkg-static: Unable to access .../share/licenses/hts_engine-API-1.10/: No such file or directory
The old waf build system relies on python module imp, which was removed
in python 3.12. This workaround is lifted directly from current waflib,
and allows aubio to build with recent python versions.