mpv-omniphony-fel
LOW
maintainer mgth
0 votes
scanned 2026-08-22 15:17:41.736085
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
20
pkgname=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
24
pkgver=0.5.2 # $_tag without the 'v'
25
pkgrel=1
26
pkgdesc="mpv (master snapshot) with the orender spatial audio decoder and Dolby Vision P7 FEL playback"
27
arch=('x86_64')
28
url="https://github.com/mgth/mpv-omniphony"
29
license=('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.
49
depends=('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')
54
optdepends=('harletty-bridge: decode compressed/object-audio formats via the orender bridge plugin')
55
makedepends=('meson' 'ninja' 'python' 'git')
56
# Match the repo mpv's epoch (1:) and advertise the bundled libmpv soname,
57
# like mpv-omniphony does.
58
provides=("mpv=1:0.41.0" 'libmpv.so=2-64')
59
conflicts=('mpv' 'mpv-omniphony')
60
source=("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")
68
sha256sums=('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
80
prepare() {
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
111
build() {
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
137
package() {
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) | Severity | Rules |
|---|---|---|
| 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 |