Switch the daemon's runtime dlopen targets from Debian-stock soname
61/61/59 (FFmpeg 7.1.3) to the Kwiboo fourier fork's soname
62/62/60 (FFmpeg 8.1) installed at the /opt/fourier prefix.
Why
---
The substitution arc tracked at daedalus-v4l2#11 needs daedalus-
fourier kernel calls woven into libavcodec's H264DSPContext NEON
init (replacing ff_h264_idct_add_neon etc. with thunks calling
daedalus_recipe_dispatch_h264_*). We do that via patches in the
ffmpeg-v4l2-request-fourier package source — which we own, in
marfrit-packages, alongside the existing libudev-bypass and
nv15-to-p010 patches. But that package builds the Kwiboo fork at
soname 62 / /opt/fourier. The daemon currently dlopens soname 61
(Debian-stock + a separately-built +fourier2 patch that isn't in
marfrit-packages' source tree), so substitution patches there
wouldn't reach the daemon.
Switching to soname 62 routes the daemon through the package we
control — first step toward landing daedalus-fourier kernel
substitution into the production decode path.
Compat
------
- /opt/fourier libs are already on every host running the daemon
(hard build-dep of ffmpeg-v4l2-request-fourier). Firefox-fourier
and mpv-fourier already dlopen them via the same path.
- /etc/ld.so.conf.d/fourier.conf entry resolves the new sonames
from /opt/fourier/lib via the ld cache; dlopen-by-soname works
without LD_LIBRARY_PATH wrappers.
- Build-side: daemon's pkg_check_modules picks up libav*.pc from
/opt/fourier/lib/pkgconfig when PKG_CONFIG_PATH includes that
directory (build-deb.sh follow-up will set it).
- API surface unchanged: avcodec_send_packet / receive_frame /
AVCodecContext flags / AVFrame fields are all stable between
FFmpeg 7.1 and 8.1. Verified clean cross-compile on hertz.
Wire protocol unchanged. No kmod bump.
Next step (follow-up PRs)
-------------------------
1. ffmpeg-v4l2-request-fourier patch: add 0003-daedalus-fourier-
substitute-h264-idct4.patch that replaces ff_h264_idct_add_neon
in libavcodec/aarch64/h264dsp_init_aarch64.c with a thunk
calling daedalus_recipe_dispatch_h264_idct4.
2. Repeat for IDCT 8×8, deblock luma-v, qpel mc20 (one kernel per
PR for reviewability; bench delta + decode_us delta documented
per substitution).
3. marfrit-packages bump to pick up the new daemon + the substituted
fourier package.