ce2fff1a4f
Bumps both Arch PKGBUILD and Debian build-deb.sh pins to PR #16 — codec_store_buffer + request_pool_resize transparent OUTPUT-pool grow on a mid-session resolution upshift overrun. Picks up the frame- survival path that supersedes #13's drop-and-recreate fallback. Dual-pin per feedback_marfrit_packages_dual_pin so both Arch and Debian repos see check-already-published.sh report a new version.
95 lines
4.4 KiB
Bash
95 lines
4.4 KiB
Bash
# Maintainer: Markus Fritsche <fritsche.markus@gmail.com>
|
||
#
|
||
# libva-v4l2-request-fourier — VA-API backend for V4L2 stateless decoders,
|
||
# multiplanar fork. Successor to the predecessor experimental package
|
||
# libva-v4l2-request-ohm-gl-fix (tarball + 18-patch stack); this package
|
||
# tracks the campaign fork's git history directly, so iteration sweeps
|
||
# (DEBUG removal, follow-up bugfixes) land in a clean linear log.
|
||
#
|
||
# Campaign: ~/src/libva-multiplanar/ (iter8 close 2026-05-06) plus
|
||
# ~/src/fresnel-fourier/ which carried the fork to iter38b — multi-device
|
||
# probe so a single libva session serves all 5 codecs (rkvdec H.264 +
|
||
# HEVC + VP9, hantro MPEG-2 + VP8) plus a bounds-check fix for
|
||
# MAX_PROFILES. Pinned below.
|
||
# Fork repo: https://git.reauktion.de/marfrit/libva-v4l2-request-fourier
|
||
# Bootlin upstream: https://github.com/bootlin/libva-v4l2-request
|
||
#
|
||
# Build target: fermi LXC actrunner-aarch64-hertz via marfrit-packages
|
||
# Gitea Actions (path=arch/libva-v4l2-request-fourier triggers the
|
||
# libva-v4l2-request-fourier-aarch64 job — wire up alongside the existing
|
||
# ffmpeg-v4l2-request-git job in .gitea/workflows/build.yml).
|
||
# Alternative: boltzmann via his subagent + marfrit-publish.
|
||
|
||
pkgname=libva-v4l2-request-fourier
|
||
epoch=1
|
||
_upstreampkg=libva-v4l2-request
|
||
|
||
# Pin the fork tip. c454618 = PR #16 merge "picture, request_pool:
|
||
# transparent OUTPUT-pool resize on bitstream overrun (#15)" —
|
||
# follow-up root-cause fix to #13/#14. On a mid-stream bitstream-
|
||
# budget overrun (typical cause: SPS-driven resolution upshift in an
|
||
# adaptive-bitrate stream), codec_store_buffer now snapshots the in-
|
||
# flight surface's accumulated bytes, releases its OUTPUT pool slot,
|
||
# calls request_pool_resize (STREAMOFF → REQBUFS(0) → S_FMT with
|
||
# 2×sizeimage hint, capped at 1 GiB, page-aligned → CREATE_BUFS →
|
||
# mmap → media_request_alloc → STREAMON), re-acquires a slot, re-
|
||
# mirrors the surface's source_{data,size,request_fd}, restores the
|
||
# bytes, and continues. The frame survives instead of being dropped
|
||
# back to libavcodec for surface recreation. CAPTURE side untouched
|
||
# (per-queue V4L2 streaming independence).
|
||
#
|
||
# Prior pin (2860d75) = PR #14 merge — codec_store_buffer bounds-
|
||
# check floor (#13).
|
||
_commit=c454618ae11addce2e17b560f4deeacbed067d98
|
||
|
||
# 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.r390.c454618
|
||
pkgrel=1
|
||
pkgdesc="VA-API backend for V4L2 stateless decoders (multiplanar fork — fourier umbrella)"
|
||
arch=('aarch64')
|
||
url="https://git.reauktion.de/marfrit/libva-v4l2-request-fourier"
|
||
license=('LGPL2.1' 'MIT')
|
||
depends=('libva' 'libdrm' 'systemd-libs')
|
||
makedepends=('meson' 'ninja' 'pkgconf' 'git')
|
||
provides=("${_upstreampkg}=${pkgver}" 'libva-driver')
|
||
conflicts=("${_upstreampkg}" 'libva-v4l2-request-ohm-gl-fix')
|
||
replaces=("${_upstreampkg}" 'libva-v4l2-request-ohm-gl-fix')
|
||
|
||
source=("git+https://git.reauktion.de/marfrit/libva-v4l2-request-fourier.git#commit=${_commit}")
|
||
sha256sums=('SKIP')
|
||
|
||
pkgver() {
|
||
cd "${srcdir}/${_upstreampkg}-fourier"
|
||
printf '1.0.0.r%s.%s' \
|
||
"$(git rev-list --count HEAD)" \
|
||
"$(git rev-parse --short=7 HEAD)"
|
||
}
|
||
|
||
build() {
|
||
cd "${srcdir}/${_upstreampkg}-fourier"
|
||
# meson_options.txt only exposes 'kernel_headers' — leave it empty to
|
||
# use system /usr/include kernel UAPI headers. No per-codec toggles.
|
||
#
|
||
# b_lto=false: override arch-meson's wrapper default of `-D b_lto=true`,
|
||
# which the makepkg.conf OPTIONS=(..., !lto, ...) line does NOT actually
|
||
# override (arch-meson hard-codes b_lto=true). The hand-built reproducer
|
||
# from issue #17 shows: LTO/ICF kernel-folds per-codec helpers and HEVC's
|
||
# multi-control-struct chain (SPS+PPS+DECODE_PARAMS+SLICE_PARAMS) gets a
|
||
# wrong helper-instance pulled in at vaEndPicture → segfault. The 4 other
|
||
# codecs (single-control-struct) tolerate the folding by accident.
|
||
arch-meson build --buildtype=release -Db_lto=false
|
||
meson compile -C build
|
||
}
|
||
|
||
package() {
|
||
cd "${srcdir}/${_upstreampkg}-fourier"
|
||
meson install -C build --destdir "${pkgdir}"
|
||
|
||
install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
|
||
install -Dm644 COPYING.LGPL "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.LGPL"
|
||
install -Dm644 COPYING.MIT "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MIT"
|
||
}
|