mpv: update to 0.36.0.
This commit is contained in:
parent
b02abcc7fa
commit
0ac468669a
|
@ -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
|
|
@ -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, ®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);
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue