# Maintainer: Markus Fritsche # # mpv-fourier — mpv with the fourier-umbrella patches. The first patch # slot exists for the vo_dmabuf_wayland plane-semantics fix per # marfrit/dmabuf-modifier-triage#1: mpv currently constructs the # zwp_linux_buffer_params_v1 wl_protocol message with internally # inconsistent plane semantics on V4L2 stateless decoder dmabufs (per- # plane fds combined with single-allocation offset for plane 1), causing # KWin to read the UV chroma plane past-EOF and render solid dark green # on ohm (RK3566 + hantro G1 + Mali-G52). The patch is not yet written — # this scaffold prepares the shipping path for when iter1 lands. # # Build configuration mirrors stock arch's mpv PKGBUILD (which builds # successfully). Key detail: --auto-features auto is required because # arch-meson defaults to --auto-features enabled, which makes mpv's # platform-specific features (win32-threads, etc.) required and fails # the build on Linux. # # Campaign: ~/src/dmabuf-modifier-triage/ (Phase 0 closed 2026-05-08) # Upstream: https://github.com/mpv-player/mpv pkgname=mpv-fourier _upstreampkg=mpv epoch=1 pkgver=0.41.0 pkgrel=5 pkgdesc='mpv with fourier-umbrella patches (vo_dmabuf_wayland plane-semantics fix slot)' arch=('aarch64') url='https://mpv.io/' license=('GPL-2.0-or-later AND LGPL-2.1-or-later') depends=( alsa-lib desktop-file-utils ffmpeg-v4l2-request-fourier 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 ) makedepends=( git meson python-docutils ladspa wayland-protocols vulkan-headers ) optdepends=('yt-dlp: for video-sharing websites playback') provides=("${_upstreampkg}=${pkgver}" 'libmpv.so') conflicts=("${_upstreampkg}") replaces=("${_upstreampkg}") options=('!emptydirs') source=( "${_upstreampkg}-${pkgver}.tar.gz::https://github.com/mpv-player/${_upstreampkg}/archive/v${pkgver}/${_upstreampkg}-${pkgver}.tar.gz" ) sha256sums=( 'ee21092a5ee427353392360929dc64645c54479aefdb5babc5cfbb5fad626209' ) prepare() { cd "${_upstreampkg}-${pkgver}" # Patch slot — iter1 of dmabuf-modifier-triage will produce the actual # vo_dmabuf_wayland.c plane-semantics fix and add it as 0001-... here. # When the patch lands, add it to source=() above + sha256sums=() and # uncomment the patch -p1 below. # # patch -p1 < "${srcdir}/0001-vo_dmabuf_wayland-plane-semantics.patch" : } build() { local _meson_options=( --auto-features auto -Dlibmpv=true -Dgl-x11=enabled -Dcaca=disabled -Dcdda=enabled -Ddrm=enabled -Ddvbin=enabled -Ddvdnav=enabled -Dlibarchive=enabled -Dopenal=enabled -Dsdl2-audio=enabled -Dsdl2-video=enabled -Dsdl2-gamepad=enabled ) arch-meson "${_upstreampkg}-${pkgver}" build "${_meson_options[@]}" meson compile -C build } package() { meson install -C build --destdir "${pkgdir}" # Drop private linkage entries (they only matter for static linking). sed -i -e '/Requires.private/d' -e '/Libs.private/d' \ "${pkgdir}/usr/lib/pkgconfig/mpv.pc" install -m0644 "${_upstreampkg}-${pkgver}/DOCS/encoding.rst" \ "${_upstreampkg}-${pkgver}/DOCS/tech-overview.txt" \ -t "${pkgdir}/usr/share/doc/mpv/" install -m0644 "${_upstreampkg}-${pkgver}"/TOOLS/{umpv,mpv_identify.sh,stats-conv.py,idet.sh,lua/*} \ -D -t "${pkgdir}/usr/share/mpv/scripts/" }