From 70c8c2b417981a0a45db341e44d0ef299ac296fb Mon Sep 17 00:00:00 2001 From: Markus Fritsche Date: Wed, 20 May 2026 20:38:32 +0200 Subject: [PATCH] =?UTF-8?q?daedalus-v4l2{,-dkms}:=203dd0eb0=20->=20462aa4b?= =?UTF-8?q?=20=E2=80=94=20kernel=20ctrl-binding=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream PR #2 landed the one-line kernel fix that was the missing half of issue libva-v4l2-request-fourier#8: device_run now calls v4l2_ctrl_request_setup() before reading ctrl->p_cur, so the daedalus_h264_meta the daemon receives reflects the in-flight media_request's bound H.264 stateless control values instead of stale/default ones. Pairs with libva-v4l2-request-fourier 1.0.0+r382+gc1bb444 (max_num_ ref_frames fallback + Fix 4 instrumentation that exposed the control-binding gap in the first place). Effect on Pi 5 / CM5 hosts (higgs): ffmpeg -hwaccel vaapi against H.264 sources now produces actual decoded content (per-frame fnv1a hashes differ, zero MB-decode errors) instead of the constant 0x6a6a05c5 "best-effort give-up" hash and cascading decode warnings. Both packages: pkgver 0.1.0.r22.462aa4b, pkgrel reset to 1. Co-Authored-By: Claude Opus 4.7 --- arch/daedalus-v4l2-dkms/PKGBUILD | 4 ++-- arch/daedalus-v4l2/PKGBUILD | 4 ++-- debian/daedalus-v4l2-dkms/build-deb.sh | 4 ++-- debian/daedalus-v4l2-dkms/debian/changelog | 13 +++++++++++++ debian/daedalus-v4l2/build-deb.sh | 4 ++-- debian/daedalus-v4l2/debian/changelog | 16 ++++++++++++++++ 6 files changed, 37 insertions(+), 8 deletions(-) diff --git a/arch/daedalus-v4l2-dkms/PKGBUILD b/arch/daedalus-v4l2-dkms/PKGBUILD index bb8cc45a7..f343e5fea 100644 --- a/arch/daedalus-v4l2-dkms/PKGBUILD +++ b/arch/daedalus-v4l2-dkms/PKGBUILD @@ -18,9 +18,9 @@ _module=daedalus_v4l2 # Same pin as arch/daedalus-v4l2 — keep kernel module + daemon # bit-versioned together so the chardev wire protocol stays in sync. -_commit=3dd0eb070a75893f78368ce819b9e9ebf08c124d +_commit=462aa4b4804972189d2f1b1ab5782f1ca1e8c423 -pkgver=0.1.0.r20.3dd0eb0 +pkgver=0.1.0.r22.462aa4b pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth) pkgdesc="V4L2 stateless decoder shim kernel module (DKMS) — Pi 5 / CM5" arch=('any') diff --git a/arch/daedalus-v4l2/PKGBUILD b/arch/daedalus-v4l2/PKGBUILD index fdd34a553..8e0f882d6 100644 --- a/arch/daedalus-v4l2/PKGBUILD +++ b/arch/daedalus-v4l2/PKGBUILD @@ -21,11 +21,11 @@ _upstreampkg=daedalus-v4l2 # ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands a # pixel-correct decoded frame back in ffmpeg. Promote to a later pin # only after a future phase closes cleanly. -_commit=3dd0eb070a75893f78368ce819b9e9ebf08c124d +_commit=462aa4b4804972189d2f1b1ab5782f1ca1e8c423 # 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each # Phase 8.x close. pkgver() recomputes at build time. -pkgver=0.1.0.r20.3dd0eb0 +pkgver=0.1.0.r22.462aa4b pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth) pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)" arch=('aarch64') diff --git a/debian/daedalus-v4l2-dkms/build-deb.sh b/debian/daedalus-v4l2-dkms/build-deb.sh index c296f99ab..0cd5167aa 100755 --- a/debian/daedalus-v4l2-dkms/build-deb.sh +++ b/debian/daedalus-v4l2-dkms/build-deb.sh @@ -14,8 +14,8 @@ # Sibling userspace package: ../daedalus-v4l2/build-deb.sh set -euo pipefail -UPSTREAM_COMMIT=3dd0eb070a75893f78368ce819b9e9ebf08c124d -PKGVER=0.1.0+r20+g3dd0eb0 +UPSTREAM_COMMIT=462aa4b4804972189d2f1b1ab5782f1ca1e8c423 +PKGVER=0.1.0+r22+g462aa4b PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth) MODULE_NAME=daedalus_v4l2 diff --git a/debian/daedalus-v4l2-dkms/debian/changelog b/debian/daedalus-v4l2-dkms/debian/changelog index 39c3d95c1..736b39e80 100644 --- a/debian/daedalus-v4l2-dkms/debian/changelog +++ b/debian/daedalus-v4l2-dkms/debian/changelog @@ -1,3 +1,16 @@ +daedalus-v4l2-dkms (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium + + * Bump to 462aa4b — kernel device_run() now calls + v4l2_ctrl_request_setup() before reading the H.264 stateless + control values from the bound media_request, so the values + daedalus ships to the userspace daemon match what the V4L2 + client (libva-v4l2-request-fourier) actually set. Closes the + libva→kernel control-binding gap that was causing decoded + frames to come back as best-effort zero garbage from libavcodec. + * Wire-ABI lockstep with daedalus-v4l2 0.1.0+r22+g462aa4b. + + -- Markus Fritsche Wed, 20 May 2026 22:00:00 +0000 + daedalus-v4l2-dkms (0.1.0+r20+g3dd0eb0-1) bookworm trixie; urgency=medium * Bump to 3dd0eb0 — DAEMON-PPS kernel-side changes. device_run() diff --git a/debian/daedalus-v4l2/build-deb.sh b/debian/daedalus-v4l2/build-deb.sh index 3049e5bd1..cb37da284 100755 --- a/debian/daedalus-v4l2/build-deb.sh +++ b/debian/daedalus-v4l2/build-deb.sh @@ -15,8 +15,8 @@ set -euo pipefail # end-to-end via libva (consumer target hit)" — first commit where the # full ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands # a pixel-correct decoded frame back in ffmpeg. -UPSTREAM_COMMIT=3dd0eb070a75893f78368ce819b9e9ebf08c124d -PKGVER=0.1.0+r20+g3dd0eb0 +UPSTREAM_COMMIT=462aa4b4804972189d2f1b1ab5782f1ca1e8c423 +PKGVER=0.1.0+r22+g462aa4b PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth) HERE=$(dirname "$(readlink -f "$0")") diff --git a/debian/daedalus-v4l2/debian/changelog b/debian/daedalus-v4l2/debian/changelog index c3e25fdec..c8ef631ff 100644 --- a/debian/daedalus-v4l2/debian/changelog +++ b/debian/daedalus-v4l2/debian/changelog @@ -1,3 +1,19 @@ +daedalus-v4l2 (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium + + * Bump to 462aa4b — kernel-side fix for control-binding gap that + closes the libva→daemon SPS/PPS pipeline. Kernel device_run now + calls v4l2_ctrl_request_setup() before reading ctrl->p_cur, so + the daemon's daedalus_h264_meta block actually carries THIS + request's V4L2 stateless H.264 control values instead of stale + /default ones. Pairs with libva-v4l2-request-fourier r382+gc1bb444 + (Fix 3 + Fix 4 from issue libva-v4l2-request-fourier#8). + * After-fix on higgs (Pi CM5): ffmpeg -hwaccel vaapi -i h264.mp4 + produces unique decoded P-frames (per-frame fnv1a hashes differ) + and zero "error while decoding MB" / "reference frames exceeds + max" warnings. + + -- Markus Fritsche Wed, 20 May 2026 22:00:00 +0000 + daedalus-v4l2 (0.1.0+r20+g3dd0eb0-1) bookworm trixie; urgency=medium * Bump to 3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synthesiser. -- 2.47.3