GStreamer v4l2codecs path validated on ohm: HW H.264 decode plus
zero-copy dmabuf NV12 direct to waylandsink via KWin on DSI-1. 62 s
playback, 7% CPU total (≈4 s of user+sys over 62 s wall), no pipeline
errors. Negotiated caps:
video/x-raw(memory:DMABuf), format=DMA_DRM, drm-format=NV12,
width=1920, height=1080, framerate=24/1
— so the hantro-vpu decoder emits dmabufs that waylandsink imports
directly. That explains the massive CPU drop vs the SW mpv baseline
(127 % with 973 / 1440 frames dropped at gpu-next).
Side finding: the bbb_1080p30_h264.mp4 clip on doppler is actually 24 fps
per the SPS caps — the "1080p30" in the filename is Blender's encode
metadata, not the real rate. Recalibrated all baseline rows against
24 fps source. SW mpv drop number revised: 973 of 1440 → 68 %, not 54 %
I wrote earlier.
Also added an HW throughput row (fakesink sync=false): 36.8 fps, 89 %
CPU — hantro G1 on RK3566 can sustain ~1.5× realtime for 1080p H.264.
Frame-drop count for the HW waylandsink run is still unknown —
fpsdisplaysink signal-fps-measurements doesn't wire through gst-launch.
Next pass can use GST_DEBUG=fpsdisplaysink:5 or a progressreport element
to get a precise delivered-fps number.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
marfrit-packages commit 9994c4e adds arch/ffmpeg-v4l2-request-git/ plus
the CI job (chained after claude-his-any, continue-on-error). Tracks
Kwiboo's v4l2-request-n8.1 branch, pinned to commit b57fbbe, strips
the AUR package's X11/AMF/CUDA/FireWire/etc deps, keeps encoders.
Fleshes out the packaging table with Status column and the "why not the
AUR package" rationale so a cold-start session doesn't re-discover the
downgrade trap.
Status: scaffolded, not yet pushed — next step is to push marfrit-packages
main, let fermi CI build, install on ohm, then run the v4l2-request hwaccel
validation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ffmpeg -hwaccel none, bbb_1080p30_h264.mp4 (fleet-canonical, SHA-16
dcf8a7170fbd49bb, pulled from doppler /moviedata/fourier-test/ via hertz
lxc file pull + ephemeral http bridge).
- Max throughput (no -re, no display): 1440 frames in 18.55 s → 77.6 fps,
319% CPU (≈3.2 of 4 A55 cores). 2.6× realtime headroom.
- Realtime -re (no display): 1440 frames in 60.27 s, 90% CPU (≈1 core).
Per-frame decode cost ≈40 ms.
- mpv --hwdec=no --vo=gpu-next through KWin on DSI-1: 127% CPU but 973
dropped frames out of 1800 target → 54% drop rate, ~14 fps delivered.
Decode is not the bottleneck; the compositor/VO path is. HW decode will
cut decode CPU but not by itself fix delivery drops — the "compositor-
bound ≠ decode-bound" gotcha the README flagged. Direct KMS scanout
(--vo=drm) or dmabuf-wayland will be the lever for the delivery side.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
modinfo on the sole rkvdec-family module in the built image
(/lib/modules/6.19.10-danctnix1-1-pinetab2/.../rockchip/rkvdec/rockchip-vdec.ko)
reports author Boris Brezillon, alias set of/rockchip,rk{3288,3328,3399}-vdec
only — that is the mainline rkvdec1 driver, not VDPU346. No rkvdec2
sibling directory, no extra module, CONFIG_VIDEO_ROCKCHIP_VDEC=m is the
only relevant config symbol.
Conclusion: DanctNIX ships a vanilla rkvdec-family config and does not
carry out-of-tree rkvdec2 patches for RK3566. HEVC/VP9 on ohm requires
either our own carrier patch series (VDPU346 driver + DT + firmware,
rebuild linux-pinetab2) or waiting for VDPU346 to land upstream.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Step 1 (live recon) on ohm. Findings folded into README under new
"Recon 2026-04-24" subsection, replacing the pre-recon "Open question"
paragraph and the now-stale "Current blocker: ohm offline" note.
- Kernel 6.19.10-danctnix1-1-pinetab2 (README had 6.15 — stale by 4 minors).
- Only Hantro VPU decoder bound (rockchip,rk3568-vpu @ fdea0400); exposes
stateless H.264 (S264), MPEG-2 (MG2S), VP8 (VP8F). No HEVC/VP9.
- No rkvdec2 DT node, no rkvdec2 driver, /lib/firmware/rockchip/ has only
dptx.bin. HEVC/VP9 HW decode unavailable on this image.
- Stock ffmpeg 8.1 has v4l2m2m only (no v4l2request hwaccel) — cannot drive
the stateless decoder; need ffmpeg-v4l2-request-git. GStreamer 1.28.2
v4l2codecs already exposes v4l2sl{h264,mpeg2,vp8}dec.
- Unrelated noise: bes2600 Wi-Fi OOT driver WARNs every ~30 s.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Umbrella for HW-assisted video decode across fresnel/ohm/boltzmann/ampere.
Captures Path A (mainline V4L2 stateless) vs Path B (Rockchip MPP vendor),
rkvdec mainline status as of 2026-04-24 (VDPU381/383 landed Feb 2026;
VDPU346 for RK356x still pending), the 2023 working recipe from
clehaxze.tw, plan for ohm as first priority, and working-agreement
reminders (ReCAP, commit-per-experiment, ask-before-flash/reboot,
off-machine backups).