daemon: dlopen Kwiboo fork's soname 62 (FFmpeg 8.1 at /opt/fourier) #16
Reference in New Issue
Block a user
Delete Branch "noether/daemon-dlopen-kwiboo-soname62"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First step on the daedalus-fourier substitution path (#11 step 2 — paths laid out at #11 (comment)).
Switches the daemon's runtime dlopen targets:
.so.61.so.62.so.61.so.62.so.59.so.60Why
The substitution arc needs daedalus-fourier kernel calls woven into libavcodec's
H264DSPContextNEON init (replaceff_h264_idct_add_neonetc. with thunks callingdaedalus_recipe_dispatch_h264_*). We can do that via patches in theffmpeg-v4l2-request-fourierpackage 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+fourier2patch that isn't inmarfrit-packagessource tree), so substitution patches there wouldn't reach the daemon.Switching to soname 62 routes the daemon through the package we control.
Compat
/opt/fourierlibs are already on every host running the daemon (hard build-dep offfmpeg-v4l2-request-fourier). Firefox-fourier and mpv-fourier already dlopen them via the same path./etc/ld.so.conf.d/fourier.confresolves the new sonames from/opt/fourier/libvia the ld cache; dlopen-by-soname works without LD_LIBRARY_PATH.pkg_check_modulespicks uplibav*.pcfrom/opt/fourier/lib/pkgconfigwhenPKG_CONFIG_PATHincludes that dir (build-deb.shfollow-up will set it).avcodec_send_packet/receive_frame/AVCodecContextflags /AVFramefields are stable between FFmpeg 7.1 and 8.1. Verified clean cross-compile on hertz.Wire protocol
Unchanged. No
daedalus-v4l2-dkmsbump.Next PRs (in order)
ffmpeg-v4l2-request-fourier(in marfrit-packages): add patch0003-daedalus-fourier-substitute-h264-idct4.patchthat replacesff_h264_idct_add_neoninlibavcodec/aarch64/h264dsp_init_aarch64.cwith a thunk callingdaedalus_recipe_dispatch_h264_idct4.decode_usdelta documented per substitution.marfrit-packagesbump pulling daemon + substituted ffmpeg-v4l2-request-fourier together.