#!/bin/bash # Build ffmpeg-v4l2-request-fourier__arm64.deb (the Kwiboo FFmpeg # fork with the V4L2-Request API hwaccel patches). # # Mirror of arch/ffmpeg-v4l2-request-fourier into the Debian tree. # Provides the patched `ffmpeg` + `ffprobe` binaries plus the shared # libav* libraries with v4l2-request support, so consumers like # mpv-fourier (and the kdirect bit-exact reference test rig) work # end-to-end without a stock-Debian FFmpeg fallback. # # Conflicts: ffmpeg, libav* — this is a drop-in replacement. Pi 5 / # CM5 (BCM2712) hosts using daedalus_v4l2 + libva-v4l2-request-fourier # DON'T strictly need this package (stock Debian ffmpeg + libva path # is sufficient for the VAAPI route), but the kdirect bit-exact # reference + firefox-fourier / mpv-fourier consumers do. # # Big build: 25-40 min on a runner. Output is a single .deb that # bundles ffmpeg/ffprobe + libavcodec.so.61 + libavformat.so.61 etc. # all together — no split per-library subpackages. Easier to consume, # trades off finer-grained downgrades. # # Sibling Arch package: ../../arch/ffmpeg-v4l2-request-fourier/PKGBUILD # Upstream: https://github.com/Kwiboo/FFmpeg (branch v4l2-request-n8.1) set -euo pipefail # Same pin as arch/ — v4l2-request-n8.1 tip 2026-04-24. UPSTREAM_COMMIT=b57fbbe50c9b2656fad86a1a7eeabfd2b2a50935 FFMPEG_VERSION=8.1 # epoch 2 matches Debian's stock ffmpeg (currently 7:7.1.x in trixie); # +rfourier suffix to avoid colliding with upstream/Debian rebuilds. PKGVER=2:${FFMPEG_VERSION}+rfourier+gb57fbbe PKGREL=1 HERE=$(dirname "$(readlink -f "$0")") # Reproducible build. 2026-05-18 23:00 UTC — Phase 8.13 close. export SOURCE_DATE_EPOCH=1779231600 work=$(mktemp -d) trap "rm -rf $work" EXIT cd "$work" git clone --depth 1 \ --branch v4l2-request-n8.1 \ https://github.com/Kwiboo/FFmpeg.git FFmpeg cd FFmpeg # git fetch the specific commit (depth=1 of branch tip might not be it) if [ "$(git rev-parse HEAD)" != "$UPSTREAM_COMMIT" ]; then git fetch origin "$UPSTREAM_COMMIT" git checkout "$UPSTREAM_COMMIT" fi # Apply patches (same as Arch). patch -Np1 -i "$HERE/0001-libudev-bypass-fallback.patch" patch -Np1 -i "$HERE/0002-nv15-to-p010-unpack.patch" # Configure with Arch-parity flags. Drops the same set of features # (X11, AMF, CUDA, FireWire, AviSynth, Bluray, OpenMPT, JPEG-XL, # Theora, XVid, rsvg, soxr, ssh, vidstab, modplug, SDL2, Vulkan, # JACK, GSM, Speex) — not needed on the Fourier fleet, keeps the .deb # smaller and the dependency graph tighter. ./configure \ --prefix=/usr \ --libdir=/usr/lib/aarch64-linux-gnu \ --shlibdir=/usr/lib/aarch64-linux-gnu \ --incdir=/usr/include/aarch64-linux-gnu \ --disable-debug \ --disable-static \ --disable-doc \ --disable-stripping \ --enable-shared \ --enable-gpl \ --enable-version3 \ --enable-pic \ --enable-neon \ --arch=aarch64 \ --enable-libdrm \ --enable-libv4l2 \ --enable-libudev \ --enable-v4l2-request \ --enable-v4l2_m2m \ --enable-vaapi \ --enable-opengl \ --enable-gnutls \ --enable-fontconfig \ --enable-libass \ --enable-libfreetype \ --enable-libfribidi \ --enable-libxml2 \ --enable-libpulse \ --enable-libdav1d \ --enable-libopus \ --enable-libvorbis \ --enable-libmp3lame \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libwebp \ --host-cflags='-fPIC' make -j"$(nproc)" make tools/qt-faststart # Stage ROOT="$work/pkgroot" make DESTDIR="$ROOT" install install -Dm755 tools/qt-faststart "$ROOT/usr/bin/qt-faststart" # Doc mkdir -p "$ROOT/usr/share/doc/ffmpeg-v4l2-request-fourier" "$ROOT/DEBIAN" install -Dm644 "$HERE/debian/copyright" \ "$ROOT/usr/share/doc/ffmpeg-v4l2-request-fourier/copyright" install -Dm644 "$HERE/debian/changelog" \ "$ROOT/usr/share/doc/ffmpeg-v4l2-request-fourier/changelog.Debian" gzip -9 -n "$ROOT/usr/share/doc/ffmpeg-v4l2-request-fourier/changelog.Debian" cat > "$ROOT/DEBIAN/control" < Homepage: https://github.com/Kwiboo/FFmpeg Description: FFmpeg with V4L2 Request API hwaccel (Kwiboo fork) FFmpeg ${FFMPEG_VERSION} patched with the V4L2 Request API stateless video decoder hwaccel — Kwiboo's long-running rebase of Jernej Škrabec's v4l2-request patchset onto FFmpeg release tags. . Provides 'ffmpeg -hwaccel v4l2request' / '-hwaccel drm' routes that drive rkvdec / hantro / cedrus / rpi-hevc-dec / daedalus_v4l2 stateless decoders directly through libavcodec's hwdevice DRM path, bypassing libva. Used by mpv-fourier and firefox-fourier as their backing FFmpeg, and as the kdirect bit-exact reference in libva-v4l2- request-fourier validation. . Drops X11/AMF/CUDA/Bluray/JACK/Vulkan/SDL2/Theora/XVid/Speex/JPEG-XL per Fourier fleet policy (Wayland + ARM + video-decode focus). No 'ffplay' binary; mpv-fourier covers interactive playback. EOF DEB_OUT="ffmpeg-v4l2-request-fourier_${PKGVER//:/%3a}-${PKGREL}_arm64.deb" dpkg-deb --root-owner-group --build "$ROOT" "$HERE/$DEB_OUT" echo "built: $HERE/$DEB_OUT"