From 3018b5a4bd4777c51e2793818305d7af2409a7fd Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sun, 23 Jul 2023 20:53:51 +0100 Subject: gentoo auto-resync : 23:07:2023 - 20:53:51 --- media-video/mpv/Manifest | 2 + .../mpv/files/mpv-0.35.1-pipewire-0.3.75.patch | 86 ++++++ media-video/mpv/mpv-0.35.1-r2.ebuild | 304 +++++++++++++++++++++ 3 files changed, 392 insertions(+) create mode 100644 media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch create mode 100644 media-video/mpv/mpv-0.35.1-r2.ebuild (limited to 'media-video/mpv') diff --git a/media-video/mpv/Manifest b/media-video/mpv/Manifest index bce8105025eb..ec8a9265ce86 100644 --- a/media-video/mpv/Manifest +++ b/media-video/mpv/Manifest @@ -1,5 +1,7 @@ +AUX mpv-0.35.1-pipewire-0.3.75.patch 3024 BLAKE2B 5cbd566d7f63f660574765a401fba6bb5853e17e2faebab7ff7bd667595feac7b92eaa7f78199aa1dec91c8d894facd3f80815d3ac573ab741d974b5d86bf97a SHA512 b181304528836ce6cd5ee1d660bfb11cabc7e4c541c75970c9b0e8d6554016a5d9af4d8ae228ba4dc1deb01b72ae52b8a810db1d6c17048516a693230c904730 AUX mpv-0.35.1-yt-dlp-edl-fragments.patch 2446 BLAKE2B f43d78be7d9914abf87c3c34f99c8cb84fd463dac7b4f4cfa96268d4351006580454a2c609a655d3d036d4a72c534205d226fd4ecf8334c9a0ff016b7eecc1c0 SHA512 0cd0415dcd06f4732e87ca52f9d43ec1cbef7fab531d4f3ba7398f7a80718dc5e0b373850c5324fe9a151c3edb31a4a624854c2e09b19ab91a3c655e84261866 DIST mpv-0.35.1.tar.gz 3367913 BLAKE2B 706a2031a2ca973eb3a092ec7f62ba40ca4dfd78e3ffe5d6e432486b0018852b034152a21805be594054178ccb17856dafe2b860cddcc22d27df895d163871de SHA512 42f3564a9ed4d972d14b2c697b0163f06a8bb68a0606a86c34935181247c783e3cb62286b445799998def0919fb13fce8b8f6453f82652d5bfaea5929119127a EBUILD mpv-0.35.1-r1.ebuild 7610 BLAKE2B 0e2a9d6c0817f92995d53055357a4b1757b126bb7d4c105d3542630df9410475560f98772fbc021855a6e3acd029d7bbaf3cb50fc2734dd9122a05be50aab5fb SHA512 b04ea9db0876192883f62cf0ede1b2df633b7c0691d482248b1e765dd779a50679a9e11785943b218e73bfc66bdb2c3eb952765077f8e7b3de0774b2cab31f8c +EBUILD mpv-0.35.1-r2.ebuild 7652 BLAKE2B 7042109178a580d3d88bf7781cc7d1e8c503ba404eaff4512061a1d6526aa4aedb33537e103dedf5d2beec61fd4978b1762dd6de8950b1a31effadd601e5a905 SHA512 594c7b3a433ff96ec7ea84633e5660580fcf5b79d1c3021714d1b79782065e391895762795ccd796c3ad265b4c087ebc75582b07a8a8d6b5b7a66ff3bd9d93bb EBUILD mpv-9999.ebuild 7430 BLAKE2B fb11f7bf42d9575635bc531b363aae723118f69f86cdd7a90e951acc6a6dd96fa562fea2b189cb68fcb3de71b82062737a2afe8b891a539bae37f697893fe320 SHA512 cedc5defe0df4a5474ae63fadf7ba16f4615d9c7fc60dac0503f6f5625e0df9be65c100dc90d739cb6d2bb10867b3face51e9bc6ffe29259edb72ff2208c5aff MISC metadata.xml 2324 BLAKE2B 6fe57270fef9275f47b0d7f282fbf4ff5c4a76c74e43820a8e0a4d56348eb72dc89dfdb06a9ff9a2b6f73d35102f861200d6c8c6f4dc41cfb4e42ff69d70da8a SHA512 0418e3315b4ded29714099d80075f61f6d1b38d9109bbb3bc372abbaceb14f705d5798eac2c14ef0fd0e1c557785291a4acb5e773dffb46f0b7f7962bf38d041 diff --git a/media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch b/media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch new file mode 100644 index 000000000000..41392ab0839c --- /dev/null +++ b/media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch @@ -0,0 +1,86 @@ +Issue point that pipewire itself may apply a workaround for mpv, +so this may or may not be necessary for future pipewire versions. +Albeit the actual issue seems to be in mpv, so let's backport the +fix which appears to work properly for old 0.35.1 as well. + +Note that (unrelated to this issue), 0.35.1 is still a bit flaky +with pipewire. If have other issues with ao=pipewire you may want +to consider mpv-9999 until next release, or use ao=pulse/alsa/jack +to use through pipewire meanwhile. + +https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3374 +https://github.com/mpv-player/mpv/issues/11995 + +https://github.com/mpv-player/mpv/pull/11996 +https://github.com/mpv-player/mpv/commit/007019a303a09b098a387f607ae149705b57dc1c +From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= +Date: Sun, 23 Jul 2023 09:10:55 +0200 +Subject: [PATCH] ao_pipewire: for_each_sink: properly check termination + condition + +Doing a pw_thread_loop_wait() without checking conditions is invalid. +The thread loop could be signalled for other reasons and in this case +the wait needs to continue. + +PipeWire added such additional signaling in +commit 33be898130f0 ("thread-loop: signal when started"). + +This meant that for_each_sink would return before the callbacks have +fired and session_has_sink() would incorrectly return "false", failing +the initialization of ao_pipewire. + +Fixes #11995 +--- a/audio/out/ao_pipewire.c ++++ b/audio/out/ao_pipewire.c +@@ -337,6 +337,11 @@ + } + + ++struct for_each_done_ctx { ++ struct pw_thread_loop *loop; ++ bool done; ++}; ++ + static const struct pw_registry_events for_each_sink_registry_events = { + .version = PW_VERSION_REGISTRY_EVENTS, + .global = for_each_sink_registry_event_global, +@@ -344,8 +349,9 @@ + + static void for_each_sink_done(void *data, uint32_t it, int seq) + { +- struct pw_thread_loop *loop = data; +- pw_thread_loop_signal(loop, false); ++ struct for_each_done_ctx *ctx = data; ++ ctx->done = true; ++ pw_thread_loop_signal(ctx->loop, false); + } + + static const struct pw_core_events for_each_sink_core_events = { +@@ -359,12 +365,16 @@ + struct priv *priv = ao->priv; + struct pw_registry *registry; + struct spa_hook core_listener; ++ struct for_each_done_ctx done_ctx = { ++ .loop = priv->loop, ++ .done = false, ++ }; + int ret = -1; + + pw_thread_loop_lock(priv->loop); + + spa_zero(core_listener); +- if (pw_core_add_listener(priv->core, &core_listener, &for_each_sink_core_events, priv->loop) < 0) ++ if (pw_core_add_listener(priv->core, &core_listener, &for_each_sink_core_events, &done_ctx) < 0) + goto unlock_loop; + + registry = pw_core_get_registry(priv->core, PW_VERSION_REGISTRY, 0); +@@ -383,7 +393,8 @@ + if (pw_registry_add_listener(registry, ®istry_listener, &for_each_sink_registry_events, &revents_ctx) < 0) + goto destroy_registry; + +- pw_thread_loop_wait(priv->loop); ++ while (!done_ctx.done) ++ pw_thread_loop_wait(priv->loop); + + spa_hook_remove(®istry_listener); + diff --git a/media-video/mpv/mpv-0.35.1-r2.ebuild b/media-video/mpv/mpv-0.35.1-r2.ebuild new file mode 100644 index 000000000000..f41aea9d7e6f --- /dev/null +++ b/media-video/mpv/mpv-0.35.1-r2.ebuild @@ -0,0 +1,304 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-1 luajit ) +PYTHON_COMPAT=( python3_{10..12} ) +inherit edo flag-o-matic lua-single meson optfeature pax-utils python-single-r1 xdg + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/mpv-player/mpv.git" +else + SRC_URI="https://github.com/mpv-player/mpv/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="amd64 ~arm ~arm64 ~hppa ~loong ppc ppc64 ~riscv x86 ~amd64-linux" +fi + +DESCRIPTION="Media player for the command line" +HOMEPAGE="https://mpv.io/" + +LICENSE="LGPL-2.1+ GPL-2+ BSD ISC MIT" #506946 +SLOT="0/2" # soname +IUSE=" + +X +alsa aqua archive bluray cdda +cli coreaudio debug +drm dvb + dvd +egl gamepad +iconv jack javascript jpeg lcms libcaca +libmpv + +libplacebo +lua mmal nvenc openal opengl pipewire pulseaudio + raspberry-pi rubberband sdl selinux sixel sndio test tools +uchardet + vaapi vdpau vulkan wayland +xv zimg zlib" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( cli libmpv ) + egl? ( || ( X drm wayland ) ) + libplacebo? ( || ( egl opengl vulkan ) ) + lua? ( ${LUA_REQUIRED_USE} ) + nvenc? ( || ( egl opengl vulkan ) ) + opengl? ( || ( X aqua ) ) + test? ( cli ) + tools? ( cli ) + uchardet? ( iconv ) + vaapi? ( + || ( X egl libplacebo wayland ) + wayland? ( drm ) + ) + vdpau? ( X ) + vulkan? ( || ( X wayland ) libplacebo ) + xv? ( X )" +RESTRICT="!test? ( test )" + +# raspberry-pi: default to -bin given non-bin is known broken (bug #893422) +COMMON_DEPEND=" + media-libs/libass:=[fontconfig] + media-video/ffmpeg:=[encode,threads,vaapi?,vdpau?] + X? ( + x11-libs/libX11 + x11-libs/libXScrnSaver + x11-libs/libXext + x11-libs/libXinerama + x11-libs/libXpresent + x11-libs/libXrandr + xv? ( x11-libs/libXv ) + ) + alsa? ( media-libs/alsa-lib ) + archive? ( app-arch/libarchive:= ) + bluray? ( media-libs/libbluray:= ) + cdda? ( + dev-libs/libcdio-paranoia:= + dev-libs/libcdio:= + ) + drm? ( + media-libs/mesa[gbm(+)] + x11-libs/libdrm + ) + dvd? ( + media-libs/libdvdnav + media-libs/libdvdread:= + ) + egl? ( media-libs/libglvnd ) + gamepad? ( media-libs/libsdl2[joystick] ) + iconv? ( + virtual/libiconv + uchardet? ( app-i18n/uchardet ) + ) + jack? ( virtual/jack ) + javascript? ( dev-lang/mujs:= ) + jpeg? ( media-libs/libjpeg-turbo:= ) + lcms? ( media-libs/lcms:2 ) + libcaca? ( media-libs/libcaca ) + libplacebo? ( + >=media-libs/libplacebo-4.202:=[opengl?,vulkan?] +