11 Commits

Author SHA1 Message Date
marfrit e7e79e5a76 daedalus-v4l2{,-dkms}: 462aa4b -> f0d4186 — per-ctx vb2 lock
Upstream PR #3 — kernel per-context vb2_queue lock so concurrent
clients of /dev/video0 don't serialise on a device-wide mutex.
Pi 5 Firefox VAAPI playback (RDD + content + GPU processes each
opening the device) now works without S_FMT EBUSY collisions.

Verified on higgs: YouTube playback engages daedalus at sustained
~230 fps decode through the libavcodec dlopen path, ~7× headroom
over the 30fps@1080p Pi 5 Fourier target.

Both packages: pkgver 0.1.0.r24.f0d4186, pkgrel reset to 1.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 21:26:16 +02:00
marfrit 130a259c69 Merge pull request 'libva-v4l2-request-fourier: c1bb444 -> 77f9236 (PR #12 / issue #11 libva side)' (#57) from claude-noether/marfrit-packages:noether/libva-bump-77f9236 into main
Reviewed-on: marfrit/marfrit-packages#57
2026-05-20 19:18:38 +00:00
claude-noether 9580f33cb6 libva-v4l2-request-fourier: c1bb444 -> 77f9236 (PR #12 / issue #11 libva side)
Bumps both Arch (PKGBUILD) and Debian (build-deb.sh) sides in one commit
this time — following the dual-pin lesson from PR #53.

77f9236 = libva PR #12 merge: src/av1.{c,h} implements av1_set_controls
mapping VAPictureParameterBufferAV1 onto struct v4l2_ctrl_av1_sequence,
queued via S_EXT_CTRLS as V4L2_CID_STATELESS_AV1_SEQUENCE.  The
daedalus_v4l2 daemon track will consume the ctrl to synthesise an
OBU_SEQUENCE_HEADER and prepend it to the slice bitstream, so libdav1d
can parse the OUTPUT buffer that ffmpeg-vaapi delivers without the
sequence header.

Until the daemon-side OBU synth lands (issue #11 operator track), the
SEQUENCE ctrl is just sitting in the request unused.  Harmless on the
RK3588 vpu981 hardware path (vpu981 parses OBU bytes directly, ignores
the ctrl payload).

pkgver: r382.c1bb444 -> r386.77f9236 (commit count 382 -> 386, two new
upstream commits: 9fa18f2 av1 + 77f9236 merge).
pkgrel: 1 (fresh pkgver, no rebuild-only iteration).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 21:17:54 +02:00
marfrit eab66cfab8 Merge pull request 'build.yml: convert ffmpeg+mpv-debian install-deps to apt-get (closes #55)' (#56) from fix/debian-runner-deps-2026-05-20 into main
Reviewed-on: marfrit/marfrit-packages#56
2026-05-20 19:13:50 +00:00
marfrit d2cecbcd05 build.yml: convert ffmpeg+mpv-debian install-deps to apt-get
Closes #55.

PR #47 routed ffmpeg-v4l2-request-debian and mpv-fourier-debian to
runs-on: debian-aarch64 (bohr), but their install-deps steps still
called pacman -Syu. That is a latent break that would surface on the
next pkgver bump (currently silent-skipped by check-already-published.sh
since pool versions match the staged PKGVER).

This patch follows PR #50's pattern (daedalus-v4l2{,-dkms}-debian):

- Replace retry pacman -Syu ... with retry apt-get install ...
- Translate Arch package names to Debian (base-devel -> build-essential,
  pkgconf -> pkg-config, libdrm -> libdrm-dev, x264 -> libx264-dev, etc.).
- For mpv: drop the "configure [marfrit] repo + pre-install
  ffmpeg-v4l2-request-fourier" step entirely. Under apt, stock
  libavcodec-dev / libavformat-dev / libavutil-dev provide trixie-ABI
  headers matching what mpv-fourier's binary will see at runtime; the
  daemon dlopens the fourier libs if installed but doesn't link against
  them at build time.

Validated upstream: equivalent debian build-deps installed cleanly in
PRs #44 (libva) and #50 (daedalus).
2026-05-20 21:09:50 +02:00
marfrit 2028eccc3c Merge pull request 'daedalus-v4l2{,-dkms}: 3dd0eb0 -> 462aa4b — kernel ctrl-binding fix' (#54) from claude-noether/marfrit-packages:noether/daedalus-bump-462aa4b into main
Reviewed-on: marfrit/marfrit-packages#54
2026-05-20 18:45:09 +00:00
marfrit 70c8c2b417 daedalus-v4l2{,-dkms}: 3dd0eb0 -> 462aa4b — kernel ctrl-binding fix
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 <noreply@anthropic.com>
2026-05-20 20:38:32 +02:00
marfrit 793187ff9e Merge pull request 'libva-v4l2-request-fourier (deb): catch build-deb.sh up to c1bb444 (follow-up to #52)' (#53) from claude-noether/marfrit-packages:noether/libva-deb-bump-c1bb444 into main
Reviewed-on: marfrit/marfrit-packages#53
2026-05-20 18:30:24 +00:00
claude-noether 42bf6b1633 libva-v4l2-request-fourier (deb): 9898331 -> c1bb444 (parallel to PR #52)
PR #52 bumped only arch/libva-v4l2-request-fourier/PKGBUILD; the
sibling debian/libva-v4l2-request-fourier/build-deb.sh has its own
parallel UPSTREAM_COMMIT + PKGVER + PKGREL pin that I missed.

Result: the libva-v4l2-request-fourier-debian CI job ran post-merge,
check-already-published.sh saw the .deb-side filename derived from
build-deb.sh (libva-v4l2-request-fourier_1.0.0+r380+g9898331-1_arm64.deb)
was already in the pool, returned skip=1, and the job short-circuited.
trixie repo Packages still advertises r380 instead of r382.

This bump catches build-deb.sh up to the same pin (c1bb444) so the
next merge triggers the build + reprepro publish path.

No code change beyond the three pinned variables + the comment block.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 20:29:10 +02:00
marfrit 40719efc43 Merge pull request 'libva-v4l2-request-fourier: 9898331 -> c1bb444 (PR #9 / issue #8 fix)' (#52) from claude-noether/marfrit-packages:noether/libva-bump-c1bb444 into main
Reviewed-on: marfrit/marfrit-packages#52
2026-05-20 18:23:42 +00:00
claude-noether e540384f50 libva-v4l2-request-fourier: 9898331 -> c1bb444 (PR #9 / issue #8 fix)
Bumps the libva backend pin to include marfrit/libva-v4l2-request-fourier
PR #9 — h264_set_controls fix for the bitstream-vs-session value drift
that breaks the daedalus_v4l2 strict-consumer path (issue #8):

  * max_num_ref_frames fallback when VAAPI client left it 0 (count
    valid DPB entries, then per-profile spec minimum)
  * one-line request_log at h264_set_controls entry dumping raw
    VAAPI bitfields for disambiguating remaining PPS-flag-zero
    portion of #8

The PR explicitly defers the deeper "profile_idc / level_idc from
bitstream" portion of #8 — VAAPI's VAPictureParameterBufferH264 omits
both fields, so a real fix needs SPS-NAL parsing or daedalus
wire-protocol pass-through. Not in this bump.

pkgver: 1.0.0.r380.9898331 -> 1.0.0.r382.c1bb444 (commit count 380->382)
pkgrel: 1 (fresh pkgver, no rebuild-only iteration)

Verified on higgs (Debian 13 trixie, gcc 14.2.0, libva 2.22.0):
clean meson build, vainfo enumerates all 8 codec profiles, multi-device
probe still wires rkvdec / rpi-hevc-dec / daedalus_v4l2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 20:21:46 +02:00
9 changed files with 137 additions and 66 deletions
+38 -30
View File
@@ -924,11 +924,20 @@ jobs:
run: |
set -e
retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; }
retry pacman -Syu --noconfirm --needed \
dpkg openssh rsync curl base-devel git nasm yasm \
linux-api-headers mesa alsa-lib bzip2 fontconfig fribidi gmp \
gnutls lame libass dav1d libdrm freetype2 libpulse libva \
libvorbis libvpx libwebp x264 x265 libxml2 opus v4l-utils xz zlib
export DEBIAN_FRONTEND=noninteractive
retry apt-get update -qq
# Debian build-deps for the FFmpeg fourier-fork build. These
# map 1:1 to the previous Arch list; libav*-dev intentionally
# absent (we are FFmpeg itself, providing those libs).
retry apt-get install -y --no-install-recommends \
build-essential git pkg-config nasm yasm \
linux-libc-dev libgl1-mesa-dev libasound2-dev libbz2-dev \
libfontconfig-dev libfribidi-dev libgmp-dev libgnutls28-dev \
libmp3lame-dev libass-dev libdav1d-dev libdrm-dev \
libfreetype-dev libpulse-dev libva-dev libvorbis-dev libvpx-dev \
libwebp-dev libx264-dev libx265-dev libxml2-dev libopus-dev \
v4l-utils liblzma-dev zlib1g-dev \
curl ca-certificates openssh-client rsync dpkg-dev
- name: install hertz deploy ssh key
if: steps.skip-check.outputs.skip != '1'
@@ -1063,31 +1072,30 @@ jobs:
run: |
set -e
retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; }
retry pacman -Syu --noconfirm --needed \
dpkg openssh rsync curl base-devel git meson ninja python-docutils \
ladspa wayland-protocols vulkan-headers \
alsa-lib desktop-file-utils glibc hicolor-icon-theme jack lcms2 \
libarchive libass libbluray libcdio libcdio-paranoia libdisplay-info \
libdrm libdvdnav libdvdread libegl libgl libglvnd libjpeg-turbo \
libplacebo libpulse libsixel libva libvdpau libx11 libxext \
libxkbcommon libxpresent libxrandr libxss libxv luajit mesa mujs \
libpipewire rubberband sdl2 openal uchardet vapoursynth \
vulkan-icd-loader wayland zlib
- name: configure [marfrit] repo + pre-install ffmpeg-v4l2-request-fourier
if: steps.skip-check.outputs.skip != '1'
run: |
set -e
curl -sLo /tmp/marfrit.gpg https://packages.reauktion.de/marfrit.gpg
pacman-key --add /tmp/marfrit.gpg
pacman-key --lsign-key 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C
rm -f /tmp/marfrit.gpg
if ! grep -q '^\[marfrit\]' /etc/pacman.conf; then
printf '\n[marfrit]\nServer = https://packages.reauktion.de/arch/$arch\nSigLevel = Required\n' >> /etc/pacman.conf
fi
pacman -Sy --noconfirm
rm -f /var/cache/pacman/pkg/ffmpeg-v4l2-request-fourier-*-aarch64.pkg.tar.*
printf 'y\ny\ny\n' | pacman -S marfrit/ffmpeg-v4l2-request-fourier
export DEBIAN_FRONTEND=noninteractive
retry apt-get update -qq
# Debian libav*-dev is ABI-compatible with the fourier ffmpeg
# fork at the header level; mpv link-binds against system
# libav at build time, runtime dlopen picks up the fourier
# libs if installed. The previous [marfrit] pre-install of
# ffmpeg-v4l2-request-fourier under pacman is unnecessary
# under apt: stock Debian libav*-dev provides the trixie
# ABI mpv-fourier's binary will encounter.
retry apt-get install -y --no-install-recommends \
build-essential git meson ninja-build pkg-config python3-docutils \
ladspa-sdk wayland-protocols libvulkan-dev libwayland-dev \
libasound2-dev desktop-file-utils libc6-dev hicolor-icon-theme \
libjack-jackd2-dev liblcms2-dev libarchive-dev libass-dev \
libbluray-dev libcdio-dev libcdio-paranoia-dev libdisplay-info-dev \
libdrm-dev libdvdnav-dev libdvdread-dev libegl-dev libgl-dev \
libglvnd-dev libjpeg-dev libplacebo-dev libpulse-dev libsixel-dev \
libva-dev libvdpau-dev libx11-dev libxext-dev libxkbcommon-dev \
libxpresent-dev libxrandr-dev libxss-dev libxv-dev libluajit-5.1-dev \
libmujs-dev libpipewire-0.3-dev librubberband-dev libsdl2-dev \
libopenal-dev libuchardet-dev libvapoursynth-dev liblzma-dev \
libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev \
zlib1g-dev \
curl ca-certificates openssh-client rsync dpkg-dev
- name: install hertz deploy ssh key
if: steps.skip-check.outputs.skip != '1'
+2 -2
View File
@@ -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=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
pkgver=0.1.0.r20.3dd0eb0
pkgver=0.1.0.r24.f0d4186
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')
+2 -2
View File
@@ -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=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
# 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.r24.f0d4186
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')
+17 -19
View File
@@ -24,31 +24,29 @@ pkgname=libva-v4l2-request-fourier
epoch=1
_upstreampkg=libva-v4l2-request
# Pin the fork tip. de27e95 = "v4l2: log error_idx + failing ctrl id
# on S_EXT_CTRLS failure" — Phase 8.13 diagnostic that surfaced the
# real root cause of the libva→daedalus_v4l2 request-completion
# timeout (turned out the EINVAL libva was logging was a harmless
# H264/HEVC probe; actual VP9 stateless control SET worked all along).
# Pin the fork tip. 77f9236 = PR #12 merge "av1: populate
# V4L2_CID_STATELESS_AV1_SEQUENCE in codec_set_controls (#11 libva side)"
# — addresses the libva-side portion of marfrit/libva-v4l2-request-fourier#11.
# Adds src/av1.{c,h} with av1_set_controls that maps VAAPI's
# VAPictureParameterBufferAV1.seq_info_fields onto struct
# v4l2_ctrl_av1_sequence and queues V4L2_CID_STATELESS_AV1_SEQUENCE via
# S_EXT_CTRLS. The daedalus_v4l2 daemon track is the consumer that turns
# the ctrl into an OBU_SEQUENCE_HEADER and prepends it to the slice
# bitstream so libdav1d can parse the (sequence-header-stripped) OUTPUT
# buffer that ffmpeg-vaapi delivers. Until the daemon side lands the ctrl
# is just sitting in the request unused — no-cost no-op for HW decoders
# (vpu981 parses OBU bytes directly).
#
# Prior pin (7ac934e) was iter38b — fresnel-fourier multi-device probe
# + MAX_PROFILES bounds-check fix. de27e95 added the daedalus_v4l2
# probe slot (b5b3acf), the meson option gate (2146341), and the
# S_EXT_CTRLS diagnostic (de27e95 itself). c332d34 (LIBVA-1) added
# the per-codec dispatch: rpi-hevc-dec + daedalus_v4l2 both probe each
# other as alts, VP9/AV1/H.264 route to daedalus via new 'd' kind,
# HEVC stays on 'p' (rpi-hevc-dec). 9898331 (LIBVA-2) completes that
# by adding video_fd_daedalus to any_fd_supports_output_format's probe
# array — without it, H.264/VP9/AV1 profiles never got advertised on
# Pi 5 mixed deployments (rpi-hevc-dec primary, daedalus alt) and
# ffmpeg bailed with "No support for codec h264 profile 578" before
# the per-codec dispatch could fire.
_commit=989833114a7708ad999dc68309cbc181d9913bdb
# Prior pin (c1bb444) = PR #9 merge — h264_set_controls
# max_num_ref_frames fallback + libva-boundary instrumentation for the
# daedalus consumer-strict path (issue #8 libva side).
_commit=77f92364661419f6e5a7bd827c1b845b4e426569
# Project version from meson.build (1.0.0) + commit count + short sha,
# matching the ffmpeg-v4l2-request-fourier convention. Recomputed at
# build time by pkgver() below; the static value here is a placeholder
# so AUR-style consumers see something coherent before src/ exists.
pkgver=1.0.0.r380.9898331
pkgver=1.0.0.r386.77f9236
pkgrel=1
pkgdesc="VA-API backend for V4L2 stateless decoders (multiplanar fork — fourier umbrella)"
arch=('aarch64')
+2 -2
View File
@@ -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=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
PKGVER=0.1.0+r24+gf0d4186
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
MODULE_NAME=daedalus_v4l2
+23
View File
@@ -1,3 +1,26 @@
daedalus-v4l2-dkms (0.1.0+r24+gf0d4186-1) bookworm trixie; urgency=medium
* Bump to f0d4186 — per-ctx vb2 lock fix. daedalus_queue_init now
uses ctx->vb_mutex instead of ctx->dev->m2m_lock for each
vb2_queue's lock, unblocking Firefox's multi-process VAAPI
clients (they were colliding on the device-wide mutex and one
would EBUSY-fail S_FMT while another was mid-streamon).
-- Markus Fritsche <mfritsche@reauktion.de> Wed, 20 May 2026 23:00:00 +0000
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 <mfritsche@reauktion.de> 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()
+2 -2
View File
@@ -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=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
PKGVER=0.1.0+r24+gf0d4186
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
HERE=$(dirname "$(readlink -f "$0")")
+35
View File
@@ -1,3 +1,38 @@
daedalus-v4l2 (0.1.0+r24+gf0d4186-1) bookworm trixie; urgency=medium
* Bump to f0d4186 — kernel per-ctx vb2 lock fix. daedalus_queue_init
was wiring src_vq->lock and dst_vq->lock to ctx->dev->m2m_lock (a
device-wide mutex), serialising every vb2 ioctl across all
concurrent clients of /dev/video0. For Firefox (which spawns
separate content + RDD + GPU processes that each open the device
and run libva probe simultaneously), one libva session's
S_FMT(OUTPUT_MPLANE) hit EBUSY while another was mid-streamon —
Firefox VAAPI playback fell apart at startup.
* Fix gives each open() its own ctx->vb_mutex; vb2 ioctls run
independently per client. Matches cedrus / rkvdec / hantro
pattern.
* Verified on higgs: Firefox YouTube playback engages VAAPI cleanly,
sustained ~230 fps decode at 640x368 through the daedalus daemon,
zero EBUSY in stderr or daemon journal.
-- Markus Fritsche <mfritsche@reauktion.de> Wed, 20 May 2026 23:00:00 +0000
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 <mfritsche@reauktion.de> 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.
+16 -9
View File
@@ -10,15 +10,22 @@
# Upstream fork: https://git.reauktion.de/marfrit/libva-v4l2-request-fourier
set -euo pipefail
# Same pin as the Arch PKGBUILD. 9898331 = LIBVA-2 close — completes
# the per-codec dispatch from c332d34 (LIBVA-1) by adding video_fd_
# daedalus to any_fd_supports_output_format's probe array. Without
# it, H.264/VP9/AV1 profiles never got advertised on Pi 5 mixed
# deployments (rpi-hevc-dec primary, daedalus_v4l2 alt) — ffmpeg
# bailed with "No support for codec h264 profile 578" before the
# per-codec dispatch could even fire.
UPSTREAM_COMMIT=989833114a7708ad999dc68309cbc181d9913bdb
PKGVER=1.0.0+r380+g9898331
# Same pin as the Arch PKGBUILD. 77f9236 = PR #12 merge "av1:
# populate V4L2_CID_STATELESS_AV1_SEQUENCE in codec_set_controls
# (#11 libva side)" — adds src/av1.{c,h} with av1_set_controls that
# maps VAAPI's VAPictureParameterBufferAV1.seq_info_fields onto
# struct v4l2_ctrl_av1_sequence and queues V4L2_CID_STATELESS_AV1_
# SEQUENCE via S_EXT_CTRLS. The daedalus_v4l2 daemon track is the
# consumer that turns the ctrl into an OBU_SEQUENCE_HEADER and
# prepends it to the slice bitstream so libdav1d can parse the
# (sequence-header-stripped) OUTPUT buffer that ffmpeg-vaapi
# delivers.
#
# Prior pin (c1bb444) = PR #9 merge — h264_set_controls
# max_num_ref_frames fallback + libva-boundary instrumentation for
# the daedalus consumer-strict path (issue #8 libva side).
UPSTREAM_COMMIT=77f92364661419f6e5a7bd827c1b845b4e426569
PKGVER=1.0.0+r386+g77f9236
PKGREL=1
HERE=$(dirname "$(readlink -f "$0")")