diff options
Diffstat (limited to 'media-video/mpv/files')
-rw-r--r-- | media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch | 86 | ||||
-rw-r--r-- | media-video/mpv/files/mpv-0.35.1-yt-dlp-edl-fragments.patch | 55 |
2 files changed, 0 insertions, 141 deletions
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 deleted file mode 100644 index 41392ab0839c..000000000000 --- a/media-video/mpv/files/mpv-0.35.1-pipewire-0.3.75.patch +++ /dev/null @@ -1,86 +0,0 @@ -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?= <thomas@t-8ch.de> -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/files/mpv-0.35.1-yt-dlp-edl-fragments.patch b/media-video/mpv/files/mpv-0.35.1-yt-dlp-edl-fragments.patch deleted file mode 100644 index 058c608233d4..000000000000 --- a/media-video/mpv/files/mpv-0.35.1-yt-dlp-edl-fragments.patch +++ /dev/null @@ -1,55 +0,0 @@ -https://bugs.gentoo.org/899956 -https://github.com/mpv-player/mpv/pull/11398 - -From 985655ebfd77ceddc44d76f8cc6dc446002f34ee Mon Sep 17 00:00:00 2001 -From: Christoph Heinrich <christoph.heinrich@student.tugraz.at> -Date: Fri, 3 Mar 2023 00:45:45 +0100 -Subject: [PATCH 1/2] ytdl_hook: init fragment requires other fragments - -With dash the first fragment was always considered an init fragment if -there wasn't a duration. However that only makes sense when there are -also other fragments, so check if there are other fragments in addition -to the lack of a duration. ---- a/player/lua/ytdl_hook.lua -+++ b/player/lua/ytdl_hook.lua -@@ -297,7 +297,7 @@ local function edl_track_joined(fragments, protocol, is_live, base) - local args = "" - - -- assume MP4 DASH initialization segment -- if not fragments[1].duration then -+ if not fragments[1].duration and #fragments > 1 then - msg.debug("Using init segment") - args = args .. ",init=" .. edl_escape(join_url(base, fragments[1])) - offset = 2 - -From a5961ad096b1361a12f836c8b170fc748f46962a Mon Sep 17 00:00:00 2001 -From: Christoph Heinrich <christoph.heinrich@student.tugraz.at> -Date: Fri, 3 Mar 2023 00:50:58 +0100 -Subject: [PATCH 2/2] ytdl_hook: only log error when no fallback url available - -An error indicates that something doesn't work, but as long as a -safe url is available, playback is still expected to work. - -Thus reduce logging level of MP4 DASH without fragments message and -add a new error message for when there is no safe url available either. - -Also adds a missing space. ---- a/player/lua/ytdl_hook.lua -+++ b/player/lua/ytdl_hook.lua -@@ -309,7 +309,7 @@ local function edl_track_joined(fragments, protocol, is_live, base) - -- if not available in all, give up. - for i = offset, #fragments do - if not fragments[i].duration then -- msg.error("EDL doesn't support fragments" .. -+ msg.verbose("EDL doesn't support fragments " .. - "without duration with MP4 DASH") - return nil - end -@@ -423,6 +423,7 @@ local function formats_to_edl(json, formats, use_all_formats) - track.protocol, json.is_live, - track.fragment_base_url) - if not edl_track and not url_is_safe(track.url) then -+ msg.error("No safe URL or supported fragmented stream available") - return nil - end - |