mpv-omniphony-fel

LOW
maintainer mgth 0 votes scanned 2026-08-22 15:17:41.736085
View on AUR
Why flagged

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

PKGBUILD

1# Maintainer: Mathieu Grenet <mathieu@mgth.fr>
2#
3# mpv-omniphony-fel — mpv (pinned master snapshot) built with the ad_orender
4# spatial audio decoder (liborender, from the `orender` package) AND Dolby
5# Vision Profile 7 FEL playback (enhancement-layer reconstruction).
6#
7# Why a master snapshot instead of a release: the FEL feature merged into mpv
8# master after v0.41.0 (mpv-player/mpv#17932) and needs libplacebo
9# PL_API_VER >= 370, which no libplacebo release carries yet (latest is
10# v7.360.1). So this package pins a known-good mpv master commit and builds a
11# pinned libplacebo master as a versioned soname (libplacebo.so.371 at this
12# pin) installed alongside the system libplacebo.so.360 — no file conflict, and the system
13# library keeps serving every other consumer. ffmpeg needs the dovi_split BSF
14# and the DoVi stream group, both shipped in Arch's ffmpeg >= 9.0.
15#
16# Once mpv, libplacebo and (already done) ffmpeg cut releases with the FEL
17# stack, this package can fold back into a pinned-release recipe like
18# `mpv-omniphony`. Install one or the other — both replace stock mpv.
19
20pkgname=mpv-omniphony-fel
21_tag=v0.5.2 # mpv-omniphony release tag (patches-master + ad_orender)
22_mpvcommit=49418246f30a9c24af31ac184aa24f39755db89a # mpv master, FEL native (local build verified 2026-08-22)
23_plcommit=a7a18af88ff0a17c04840dcb3246047bb6b46df3 # libplacebo master, PL_API_VER 370
24pkgver=0.5.2 # $_tag without the 'v'
25pkgrel=1
26pkgdesc="mpv (master snapshot) with the orender spatial audio decoder and Dolby Vision P7 FEL playback"
27arch=('x86_64')
28url="https://github.com/mgth/mpv-omniphony"
29license=('GPL-3.0-or-later')
30# ffmpeg>=2:9.0: dovi_split BSF + DoVi stream group. shaderc/lcms2/libdovi/
31# vulkan-icd-loader/xxhash: runtime deps of the bundled libplacebo soname.
32#
33# The `>=2:9.0` above is a *feature* floor (it says "old ffmpeg lacks dovi_split"),
34# not an ABI guard: a `>=` bound is satisfied by every future release, so it cannot
35# catch a soname bump. The bare `.so` entries below are the ABI guard — makepkg's
36# find_libdepends() rewrites each into `name.so=MAJOR-64` read from the binaries
37# built here (e.g. libavcodec.so=63-64), so pacman refuses an ffmpeg upgrade until
38# this package is rebuilt rather than letting the installed mpv break. The sibling
39# mpv-omniphony hit exactly that: built against ffmpeg 8, ffmpeg 9 landed, pacman
40# said nothing, mpv died with "cannot open shared object file: libavcodec.so.62".
41#
42# Deliberately NO 'libplacebo.so' here, unlike mpv-omniphony. This package ships
43# its own /usr/lib/libplacebo.so.371 and mpv links that, not the system .360 —
44# a bare 'libplacebo.so' would expand to `libplacebo.so=371-64`, which no package
45# provides, making this package uninstallable. Do not copy that entry over from
46# the sibling PKGBUILD. The pinned libplacebo is version-locked to this package
47# by construction, so it needs no external guard; its own runtime deps
48# (libdovi/shaderc/lcms2) do, and are listed.
49depends=('orender>=0.5.2' 'ffmpeg>=2:9.0' 'libass' 'luajit' 'libx11' 'mesa'
50 'shaderc' 'lcms2' 'libdovi' 'vulkan-icd-loader' 'xxhash'
51 'libavcodec.so' 'libavdevice.so' 'libavfilter.so' 'libavformat.so'
52 'libavutil.so' 'libswresample.so' 'libswscale.so'
53 'libass.so' 'libdovi.so' 'libshaderc_shared.so' 'liblcms2.so')
54optdepends=('harletty-bridge: decode compressed/object-audio formats via the orender bridge plugin')
55makedepends=('meson' 'ninja' 'python' 'git')
56# Match the repo mpv's epoch (1:) and advertise the bundled libmpv soname,
57# like mpv-omniphony does.
58provides=("mpv=1:0.41.0" 'libmpv.so=2-64')
59conflicts=('mpv' 'mpv-omniphony')
60source=("mpv-omniphony-$_tag.tar.gz::https://github.com/mgth/mpv-omniphony/archive/refs/tags/$_tag.tar.gz"
61 "mpv-$_mpvcommit.tar.gz::https://github.com/mpv-player/mpv/archive/$_mpvcommit.tar.gz"
62 "libplacebo::git+https://code.videolan.org/videolan/libplacebo.git#commit=$_plcommit"
63 "glad::git+https://github.com/Dav1dde/glad"
64 "jinja::git+https://github.com/pallets/jinja"
65 "markupsafe::git+https://github.com/pallets/markupsafe"
66 "Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers"
67 "fast_float::git+https://github.com/fastfloat/fast_float.git")
68sha256sums=('88dcb0df8591f6d31a83028b91c73154e6cfa38dc1b031dffad21dd738be5072'
69 '11690b2374219252c44a9ae3f14c9a5cb464def4ef0c95fa3762fa51780a5c22'
70 'b7e37bb50668ba0d554a26db5ad21013c9dc3f9e84a2f8dd87a25114c73afdf8'
71 'SKIP'
72 'SKIP'
73 'SKIP'
74 'SKIP'
75 'SKIP')
76
77_repo="mpv-omniphony-${_tag#v}" # extracted repo tarball (src/, patches-master/)
78_mpv="mpv-$_mpvcommit"
79
80prepare() {
81 # libplacebo: wire the vendored submodules to the local clones (the
82 # superproject pins their commits; the URL override keeps makepkg's
83 # no-network-in-build rule intact).
84 cd "$srcdir/libplacebo"
85 local sub
86 for sub in glad jinja markupsafe Vulkan-Headers fast_float; do
87 git submodule init "3rdparty/$sub"
88 git config "submodule.3rdparty/$sub.url" "$srcdir/$sub"
89 done
90 git -c protocol.file.allow=always submodule update \
91 3rdparty/glad 3rdparty/jinja 3rdparty/markupsafe \
92 3rdparty/Vulkan-Headers 3rdparty/fast_float
93
94 # Same libplacebo patch set as the shipped FEL bundle (prefer FP16 over
95 # 16-bit UNORM so externally managed color does not clip).
96 local p
97 for p in "$srcdir/$_repo"/patches-libplacebo/*.patch; do
98 echo "applying (libplacebo) ${p##*/}"
99 git apply "$p"
100 done
101
102 # mpv: patch 0001 adds audio/decode/ad_orender.c; the rest wire it in.
103 cd "$srcdir/$_mpv"
104 local patches=("$srcdir/$_repo"/patches-master/*.patch)
105 for p in "${patches[@]}"; do
106 echo "applying ${p##*/}"
107 patch -p1 < "$p"
108 done
109}
110
111build() {
112 # 1. libplacebo master into a private prefix (only the versioned soname is
113 # packaged). Options mirror the repo's scripts/build-fel-deps.sh.
114 meson setup "$srcdir/libplacebo/build" "$srcdir/libplacebo" \
115 --prefix="$srcdir/plprefix" --libdir=lib --buildtype=release \
116 -Dvulkan=enabled -Dshaderc=enabled -Dlcms=enabled \
117 -Ddovi=enabled -Dlibdovi=enabled -Ddemos=false
118 meson install -C "$srcdir/libplacebo/build"
119
120 # Hard gate: the FEL reconstruction API landed at PL_API_VER 367 and the
121 # bundle requires >= 370 (modversion 7.370).
122 PKG_CONFIG_PATH="$srcdir/plprefix/lib/pkgconfig" \
123 pkg-config --atleast-version=7.370 libplacebo || {
124 echo "built libplacebo lacks the FEL API (need >= 7.370)" >&2
125 return 1
126 }
127
128 # 2. mpv against the freshly built libplacebo (system everything else).
129 # --auto-features=auto: undo arch-meson's blanket `enabled`, which would
130 # force platform-foreign features and fail.
131 cd "$srcdir/$_mpv"
132 PKG_CONFIG_PATH="$srcdir/plprefix/lib/pkgconfig" \
133 arch-meson build --auto-features=auto -Dorender=enabled
134 meson compile -C build
135}
136
137package() {
138 cd "$srcdir/$_mpv"
139 meson install -C build --destdir="$pkgdir"
140
141 # The pinned libplacebo, by versioned soname only (real file, no dev
142 # symlink/headers/pc): coexists with the libplacebo package (.so.360).
143 # The soname tracks PL_API_VER (.so.371 at this pin) — resolve it, don't
144 # hardcode it.
145 local so
146 for so in "$srcdir"/plprefix/lib/libplacebo.so.[0-9]*; do
147 install -Dm755 "$so" "$pkgdir/usr/lib/${so##*/}"
148 done
149
150 # License + third-party notices for the combined work.
151 install -Dm644 "$srcdir/$_repo/COPYING" \
152 "$pkgdir/usr/share/licenses/$pkgname/COPYING"
153 install -Dm644 "$srcdir/$_repo/THIRD-PARTY-NOTICES.md" \
154 "$pkgdir/usr/share/licenses/$pkgname/THIRD-PARTY-NOTICES.md"
155}
156

Changes since previous scan

--- PKGBUILD @ 2026-08-17 00:18
+++ PKGBUILD @ 2026-08-22 15:17
@@ -18,11 +18,11 @@
# `mpv-omniphony`. Install one or the other — both replace stock mpv.
pkgname=mpv-omniphony-fel
-_tag=v0.5.0 # mpv-omniphony release tag (patches-master + ad_orender)
-_mpvcommit=f4d13e1c2c91f3a56e589aef9cb44cbc02e26e47 # mpv master, FEL native
+_tag=v0.5.2 # mpv-omniphony release tag (patches-master + ad_orender)
+_mpvcommit=49418246f30a9c24af31ac184aa24f39755db89a # mpv master, FEL native (local build verified 2026-08-22)
_plcommit=a7a18af88ff0a17c04840dcb3246047bb6b46df3 # libplacebo master, PL_API_VER 370
-pkgver=0.5.0 # $_tag without the 'v'
-pkgrel=2 # -2: declare ffmpeg/libass/libdovi/... sonames (see depends)
+pkgver=0.5.2 # $_tag without the 'v'
+pkgrel=1
pkgdesc="mpv (master snapshot) with the orender spatial audio decoder and Dolby Vision P7 FEL playback"
arch=('x86_64')
url="https://github.com/mgth/mpv-omniphony"
@@ -46,7 +46,7 @@
# the sibling PKGBUILD. The pinned libplacebo is version-locked to this package
# by construction, so it needs no external guard; its own runtime deps
# (libdovi/shaderc/lcms2) do, and are listed.
-depends=('orender>=0.5.0' 'ffmpeg>=2:9.0' 'libass' 'luajit' 'libx11' 'mesa'
+depends=('orender>=0.5.2' 'ffmpeg>=2:9.0' 'libass' 'luajit' 'libx11' 'mesa'
'shaderc' 'lcms2' 'libdovi' 'vulkan-icd-loader' 'xxhash'
'libavcodec.so' 'libavdevice.so' 'libavfilter.so' 'libavformat.so'
'libavutil.so' 'libswresample.so' 'libswscale.so'
@@ -65,8 +65,8 @@
"markupsafe::git+https://github.com/pallets/markupsafe"
"Vulkan-Headers::git+https://github.com/KhronosGroup/Vulkan-Headers"
"fast_float::git+https://github.com/fastfloat/fast_float.git")
-sha256sums=('2dd50af0ce29c968bcb696b792ea8290030caab31d383b3407b0f4f83c8be71f'
- 'ce0635d2f31740d6a116c5bca7f6798f09cc6a95f03752e845ce7da02070aff3'
+sha256sums=('88dcb0df8591f6d31a83028b91c73154e6cfa38dc1b031dffad21dd738be5072'
+ '11690b2374219252c44a9ae3f14c9a5cb464def4ef0c95fa3762fa51780a5c22'
'b7e37bb50668ba0d554a26db5ad21013c9dc3f9e84a2f8dd87a25114c73afdf8'
'SKIP'
'SKIP'

Scan history

Scanned at (UTC)SeverityRules
2026-08-22 15:17:41 Low 1
2026-08-17 00:18:29 Clean 2
2026-08-16 21:33:47 Low 1
2026-08-16 00:03:42 Clean 2
2026-08-15 23:31:34 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion