forked from marfrit/marfrit-packages
Compare commits
11 Commits
9ca97374c8
...
e7e79e5a76
| Author | SHA1 | Date | |
|---|---|---|---|
| e7e79e5a76 | |||
| 130a259c69 | |||
| 9580f33cb6 | |||
| eab66cfab8 | |||
| d2cecbcd05 | |||
| 2028eccc3c | |||
| 70c8c2b417 | |||
| 793187ff9e | |||
| 42bf6b1633 | |||
| 40719efc43 | |||
| e540384f50 |
+38
-30
@@ -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'
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
@@ -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
@@ -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()
|
||||
|
||||
Vendored
+2
-2
@@ -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
@@ -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
@@ -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")")
|
||||
|
||||
Reference in New Issue
Block a user