mpv: update to 0.36.0.

This commit is contained in:
triallax 2023-07-27 17:11:53 +01:00 committed by Duncan Overbruck
parent b02abcc7fa
commit 0ac468669a
4 changed files with 3 additions and 144 deletions

View File

@ -1,26 +0,0 @@
From 94c189dae76ba280d9883b16346c3dfb9720687e 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] 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.
---
player/lua/ytdl_hook.lua | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua
index 27e5f4544b2..9e50b3a80b8 100644
--- 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

View File

@ -1,78 +0,0 @@
From ac6bb48728af60c706a6a92573ea13651adb6d7d Mon Sep 17 00:00:00 2001
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
---
audio/out/ao_pipewire.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/audio/out/ao_pipewire.c b/audio/out/ao_pipewire.c
index 8e93dc5341b..0a39e4e1a59 100644
--- a/audio/out/ao_pipewire.c
+++ b/audio/out/ao_pipewire.c
@@ -354,6 +354,11 @@ static void for_each_sink_registry_event_global(void *data, uint32_t id,
}
+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,
@@ -361,8 +366,9 @@ static const struct pw_registry_events for_each_sink_registry_events = {
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 = {
@@ -376,12 +382,16 @@ static int for_each_sink(struct ao *ao, void (cb) (struct ao *ao, uint32_t id,
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);
@@ -400,7 +410,8 @@ static int for_each_sink(struct ao *ao, void (cb) (struct ao *ao, uint32_t id,
if (pw_registry_add_listener(registry, &registry_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(&registry_listener);

View File

@ -1,37 +0,0 @@
From 362256edbc4f95c63e69c1fa8c8dce9cc6c44288 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] 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.
---
player/lua/ytdl_hook.lua | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua
index 9e50b3a80b8..77f7446ed22 100644
--- 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

View File

@ -1,7 +1,7 @@
# Template file for 'mpv'
pkgname=mpv
version=0.35.1
revision=3
version=0.36.0
revision=1
build_style=meson
configure_args="-Dcdda=enabled -Ddvbin=enabled -Ddvdnav=enabled
-Dlibmpv=true -Dcplugins=enabled
@ -41,7 +41,7 @@ license="GPL-2.0-or-later"
homepage="https://mpv.io"
changelog="https://github.com/mpv-player/mpv/releases"
distfiles="https://github.com/mpv-player/mpv/archive/v${version}.tar.gz"
checksum=41df981b7b84e33a2ef4478aaf81d6f4f5c8b9cd2c0d337ac142fc20b387d1a9
checksum=29abc44f8ebee013bb2f9fe14d80b30db19b534c679056e4851ceadf5a5e8bf6
build_options="alsa caca jack lcms lua openal pulseaudio pipewire sdl2
sndio vapoursynth vdpau vulkan wayland x11"