# 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. 481279c = "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=481279c9bffd19e32c8f3299897e9b63fc5a24aa # 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.r18.481279c pkgrel=1 # reset for new upstream pin (481279c — Phase 8.13 close) 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') install="${pkgname}.install" source=("git+https://git.reauktion.de/reauktion/daedalus-v4l2.git#commit=${_commit}" "${pkgname}.install") sha256sums=('SKIP' '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" # systemd unit + module autoload — without these the daemon never # starts and the libva/VAAPI consumer's REQ_DECODE has nobody on # the other end of /dev/daedalus-v4l2. install -Dm644 packaging/systemd/daedalus-v4l2.service \ "${pkgdir}/usr/lib/systemd/system/daedalus-v4l2.service" install -Dm644 packaging/systemd/daedalus-v4l2.modules-load \ "${pkgdir}/usr/lib/modules-load.d/daedalus-v4l2.conf" # 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 }