daedalus-v4l2: 5d8b436 -> 77e14e5 — picks up #12 (LOW_DELAY) + #13 (daedalus-fourier linkage)

Daemon-only bump (no daedalus-v4l2-dkms change needed; PROTO_VERSION
stays at 0).

#12 (LOW_DELAY half-measure): daemon sets AV_CODEC_FLAG_LOW_DELAY on
the H.264 AVCodecContext so libavcodec emits frames in decode order
~99% of the time (a few stragglers at GOP boundaries when the
stream's SPS num_reorder_frames overrides the flag).  Visible
improvement vs the 2-1-4-3 pair-swap on Firefox + mpv playback;
not the permanent fix — see daedalus-v4l2#11 for the architectural
plan to substitute daedalus-fourier kernels for libavcodec's
pixel math one cycle at a time.

#13 (daedalus-fourier linkage): daemon now pkg-config-links against
the daedalus-fourier kernel library (marfrit/daedalus-fourier) and
logs substrate availability at startup.  No kernels dispatched yet
— this is the build-time foundation for the substitution work.

build-deb.sh updated to fetch + build + install daedalus-fourier
(pinned at d87239d, marfrit/daedalus-fourier PR #1) into a per-
build temp prefix before invoking the daemon's cmake, exposing it
via PKG_CONFIG_PATH.  Static-linked, so the resulting .deb has no
new runtime deps.  Requires libvulkan-dev + glslang-tools on the
CI runner.

Arch PKGBUILD bumped to the same upstream commit but Arch packaging
for daedalus-fourier itself is a follow-up; until that lands the
Arch build expects daedalus-fourier installed by the user (AUR-style).
Debian-side is end-to-end self-contained via build-deb.sh.

Refs:
  * reauktion/daedalus-v4l2#12
  * reauktion/daedalus-v4l2#13
  * reauktion/daedalus-v4l2#11
  * marfrit/daedalus-fourier#1
This commit is contained in:
2026-05-21 18:39:22 +02:00
parent 736b6da176
commit c9a4b82f2c
3 changed files with 86 additions and 21 deletions
+12 -10
View File
@@ -16,19 +16,21 @@
pkgname=daedalus-v4l2 pkgname=daedalus-v4l2
_upstreampkg=daedalus-v4l2 _upstreampkg=daedalus-v4l2
# Pin the daedalus-v4l2 tip. 5d8b436 = revert of PRs #7 + #8 (the # 77e14e5 = post-revert state plus daedalus-v4l2 PRs #12 (LOW_DELAY
# parking design that broke libva's 1:1 contract — see # half-measure for the H.264 display-reorder visual) and #13 (daemon
# daedalus-v4l2#9 + #10). Tree is content-equivalent to f0d4186 # now links daedalus-fourier and logs substrate availability at
# plus PR #4 (DECODE_MODE / START_CODE menu controls; cosmetic # startup). Daemon now needs `daedalus-fourier` at build time —
# warning fix). PROTO_VERSION drops 1 → 0 to match — lock-step # Arch packaging for that sibling library is a follow-up; until it
# install with daedalus-v4l2-dkms 0.1.0.r33.5d8b436 REQUIRED. # lands as an AUR-style PKGBUILD, this Arch build expects
# Proper H.264 reorder fix tracked separately at daedalus-v4l2#11. # daedalus-fourier installed to /usr/local (or equivalent) by the
_commit=5d8b4369e58ab947d1c56b1f718293c57c6065b5 # user. See debian/daedalus-v4l2/build-deb.sh for the Debian-side
# in-build fetch-and-install of daedalus-fourier.
_commit=77e14e5a192f0eef0b41dd1140205e29d13d4d58
# 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each # 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each
# Phase 8.x close. pkgver() recomputes at build time. # Phase 8.x close. pkgver() recomputes at build time.
pkgver=0.1.0.r33.5d8b436 pkgver=0.1.0.r37.77e14e5
pkgrel=1 # reset for new upstream pin (5d8b436 — revert parking design) pkgrel=1 # reset for new upstream pin (77e14e5 — daedalus-fourier linkage)
pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)" pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)"
arch=('aarch64') arch=('aarch64')
url="https://git.reauktion.de/reauktion/daedalus-v4l2" url="https://git.reauktion.de/reauktion/daedalus-v4l2"
+43 -11
View File
@@ -11,16 +11,25 @@
# Upstream repo: https://git.reauktion.de/reauktion/daedalus-v4l2 # Upstream repo: https://git.reauktion.de/reauktion/daedalus-v4l2
set -euo pipefail set -euo pipefail
# Same pin as the Arch PKGBUILD. 5d8b436 reverts PRs #7 + #8 (the # 77e14e5 = post-revert state plus daedalus-v4l2 PRs #12 (LOW_DELAY
# parking design that broke libva's 1:1 CAPTURE-buffer contract; see # half-measure for the H.264 display-reorder visual) and #13 (daemon
# daedalus-v4l2#9 + #10). Tree is content-equivalent to f0d4186 # now links daedalus-fourier and logs substrate availability at
# plus PR #4 (DECODE_MODE / START_CODE menu controls — cosmetic # startup). PROTO_VERSION stays at 0; daedalus-v4l2-dkms only needs
# warning fix). PROTO_VERSION drops 1 → 0; lock-step install with # bumping when the kernel module changes (no kmod changes here).
# daedalus-v4l2-dkms 0.1.0+r33+g5d8b436 REQUIRED. Proper H.264 #
# reorder fix tracked separately at daedalus-v4l2#11. # New build-dep: daedalus-fourier kernel library. Fetched + built +
UPSTREAM_COMMIT=5d8b4369e58ab947d1c56b1f718293c57c6065b5 # installed to a per-build temp prefix below, exposed to the daemon
PKGVER=0.1.0+r33+g5d8b436 # cmake via PKG_CONFIG_PATH. Static-linked into the daemon binary,
PKGREL=1 # reset for new upstream pin (5d8b436 — revert parking design) # so the resulting .deb has no runtime dep on daedalus-fourier.
UPSTREAM_COMMIT=77e14e5a192f0eef0b41dd1140205e29d13d4d58
PKGVER=0.1.0+r37+g77e14e5
PKGREL=1 # reset for new upstream pin (77e14e5 — daedalus-fourier linkage)
# daedalus-fourier pin. d87239d = marfrit/daedalus-fourier PR #1 merge
# (install rules + pkg-config, enables this consumer to find_package
# + link). Bump in lockstep with the upstream daemon when daedalus-
# fourier's API or installed shaders are changed by a new consumer.
DAEDALUS_FOURIER_COMMIT=d87239d8172307d9a1b93c95cbed116d175b85cc
HERE=$(dirname "$(readlink -f "$0")") HERE=$(dirname "$(readlink -f "$0")")
@@ -30,14 +39,37 @@ export SOURCE_DATE_EPOCH=1779231600
work=$(mktemp -d) work=$(mktemp -d)
trap "rm -rf $work" EXIT trap "rm -rf $work" EXIT
# --- daedalus-fourier: fetch + build + install to per-build prefix ---
#
# Static-linked into the daemon, so the temp prefix is only for the
# duration of this build script. Requires libvulkan-dev + glslang-tools
# on the runner (already needed for the daedalus-fourier benches).
FOURIER_PREFIX=$work/fourier-prefix
mkdir -p "$FOURIER_PREFIX"
cd "$work"
curl --connect-timeout 10 --max-time 600 --retry 3 --retry-delay 5 -sSLfo daedalus-fourier.tar.gz \
"https://git.reauktion.de/marfrit/daedalus-fourier/archive/${DAEDALUS_FOURIER_COMMIT}.tar.gz"
tar xzf daedalus-fourier.tar.gz
cd daedalus-fourier
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$FOURIER_PREFIX"
cmake --build build --target daedalus_core
cmake --install build
# --- daedalus-v4l2: fetch + build daemon against installed daedalus-fourier ---
cd "$work" cd "$work"
curl --connect-timeout 10 --max-time 600 --retry 3 --retry-delay 5 -sSLfo daedalus-v4l2.tar.gz \ curl --connect-timeout 10 --max-time 600 --retry 3 --retry-delay 5 -sSLfo daedalus-v4l2.tar.gz \
"https://git.reauktion.de/reauktion/daedalus-v4l2/archive/${UPSTREAM_COMMIT}.tar.gz" "https://git.reauktion.de/reauktion/daedalus-v4l2/archive/${UPSTREAM_COMMIT}.tar.gz"
tar xzf daedalus-v4l2.tar.gz tar xzf daedalus-v4l2.tar.gz
SRCDIR=daedalus-v4l2 SRCDIR=daedalus-v4l2
# Build daemon (CMake) # Build daemon (CMake) — point pkg-config at the daedalus-fourier
# temp prefix so pkg_check_modules(DAEDALUS_FOURIER …) resolves to it.
cd "$SRCDIR/daemon" cd "$SRCDIR/daemon"
PKG_CONFIG_PATH="$FOURIER_PREFIX/lib/pkgconfig" \
cmake -B build -G Ninja \ cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_PREFIX=/usr
+31
View File
@@ -1,3 +1,34 @@
daedalus-v4l2 (0.1.0+r37+g77e14e5-1) bookworm trixie; urgency=medium
* Bump to 77e14e5 — picks up daedalus-v4l2 PRs #12 + #13.
* #12 (LOW_DELAY half-measure): the daemon now sets
AV_CODEC_FLAG_LOW_DELAY on the H.264 AVCodecContext so libavcodec
emits frames in decode order ~99% of the time (a few stragglers
at GOP boundaries when the stream's SPS num_reorder_frames
overrides the flag). Visible improvement vs the 2-1-4-3
pair-swap on Firefox YouTube + mpv playback; not a permanent
fix (see #11 for the architectural plan).
* #13 (daedalus-fourier linkage): the daemon now pkg-config-links
against the daedalus-fourier kernel library (marfrit/
daedalus-fourier) and logs substrate availability at startup.
No kernels dispatched yet — this is the build-time / link-time
foundation for the H.264 daemon-rewrite plan in #11
(substituting daedalus-fourier IDCT 4×4 / IDCT 8×8 / luma
deblock primitives for libavcodec's per-MB pixel math, one
cycle at a time, measuring CPU saved per substitution).
* Build-deb.sh now fetches + builds + installs daedalus-fourier
(pinned at d87239d, marfrit/daedalus-fourier PR #1) into a
per-build temp prefix, then builds the daemon with
PKG_CONFIG_PATH pointing at it. daedalus-fourier is
statically linked into the daemon binary, so the resulting
.deb has no new runtime deps. Requires libvulkan-dev +
glslang-tools on the CI runner (the daedalus-fourier benches
already needed those).
* Wire protocol unchanged — DAEDALUS_PROTO_VERSION stays at 0.
No daedalus-v4l2-dkms bump needed.
-- Markus Fritsche <mfritsche@reauktion.de> Thu, 21 May 2026 16:30:00 +0000
daedalus-v4l2 (0.1.0+r33+g5d8b436-1) bookworm trixie; urgency=medium daedalus-v4l2 (0.1.0+r33+g5d8b436-1) bookworm trixie; urgency=medium
* Bump to 5d8b436 — reverts daedalus-v4l2 PRs #7 + #8 (the parking * Bump to 5d8b436 — reverts daedalus-v4l2 PRs #7 + #8 (the parking