# Maintainer: Markus Fritsche # # daedalus-v4l2 — userspace daemon + V4L2 m2m test tools. # # Pair to daedalus-v4l2-dkms (kernel module). Together they expose # /dev/videoNN + /dev/mediaNN as a V4L2 stateless decoder shim on Pi 5 / # CM5, decoding VP9 / AV1 / H.264 via dlopen'd FFmpeg in a single- # threaded daemon and shipping decoded NV12 / P010 back through dmabuf. # Consumed end-to-end by libva-v4l2-request-fourier (>= 1.0.0.r376) so # `ffmpeg -hwaccel vaapi` against vp9_small.ivf produces byte-exact NV12. # # Project: https://git.reauktion.de/reauktion/daedalus-v4l2 # Sibling kernel package: daedalus-v4l2-dkms # Sibling consumer: libva-v4l2-request-fourier pkgname=daedalus-v4l2 _upstreampkg=daedalus-v4l2 # Pin the daedalus-v4l2 tip. f0cd29a = "Phase 8.13: byte-exact 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. Promote to a later pin # only after a future phase closes cleanly. _commit=f0cd29a3400cb9af192842c3e2bcc90cc08c68ca # 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.r17.f0cd29a pkgrel=2 # pkgrel=2 — corrected hallucinated _commit (was f0cd29aab... not in repo) pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)" arch=('aarch64') url="https://git.reauktion.de/reauktion/daedalus-v4l2" license=('BSD-2-Clause' 'GPL-2.0-or-later') # Daemon dlopens libavformat.so.61 / libavcodec.so.61 / libavutil.so.59 # at runtime (Option γ — see daemon/src/ffmpeg_loader.h). ffmpeg # provides those; we don't link them. depends=('ffmpeg' 'libdrm') # Headers from libav*-dev needed at compile time for type-safe function # pointer signatures; pkg-config locates them. makedepends=('cmake' 'ninja' 'pkgconf' 'git' 'ffmpeg') optdepends=('daedalus-v4l2-dkms: kernel module providing /dev/video0 + /dev/daedalus-v4l2' 'libva-v4l2-request-fourier: VA-API consumer routing through this daemon') source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}") sha256sums=('SKIP') pkgver() { cd "${srcdir}/${_upstreampkg}" printf '0.1.0.r%s.%s' \ "$(git rev-list --count HEAD)" \ "$(git rev-parse --short=7 HEAD)" } build() { cd "${srcdir}/${_upstreampkg}/daemon" cmake -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr cmake --build build cd "${srcdir}/${_upstreampkg}/tools" make } package() { cd "${srcdir}/${_upstreampkg}" # Daemon binary install -Dm755 daemon/build/daedalus_v4l2_daemon \ "${pkgdir}/usr/bin/daedalus_v4l2_daemon" # Test tools (under /usr/libexec to keep them out of the default PATH # — they're for verification, not daily use). install -Dm755 tools/test_chardev_pingpong \ "${pkgdir}/usr/libexec/daedalus-v4l2/test_chardev_pingpong" install -Dm755 tools/test_m2m_decode \ "${pkgdir}/usr/libexec/daedalus-v4l2/test_m2m_decode" install -Dm755 tools/test_m2m_stream \ "${pkgdir}/usr/libexec/daedalus-v4l2/test_m2m_stream" # Shared wire-protocol header (kernel ↔ daemon); useful for # third-party clients of the chardev. install -Dm644 include/daedalus_v4l2_proto.h \ "${pkgdir}/usr/include/daedalus_v4l2_proto.h" # Documentation install -Dm644 README.md \ "${pkgdir}/usr/share/doc/${pkgname}/README.md" for d in docs/*.md; do install -Dm644 "$d" "${pkgdir}/usr/share/doc/${pkgname}/$(basename "$d")" done # Licenses: BSD-2-Clause for daemon/tools, GPL for the kernel proto # header; the SPDX headers in src/ are the canonical declaration but # ship a short note here for package-manager-driven license queries. install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}" cat > "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" <<'EOF' daedalus-v4l2 userspace components are BSD-2-Clause licensed. The shared kernel↔daemon wire protocol header (/usr/include/daedalus_v4l2_proto.h) is GPL-2.0-or-later WITH Linux-syscall-note for kernel-side compatibility. See SPDX headers on individual source files for the canonical per-file declaration. EOF }