summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2023-03-06 15:35:40 -0500
committerIonen Wolkens <ionen@gentoo.org>2023-03-06 15:39:50 -0500
commitb88415abf5a1a3174a30fb6bdf4cdca8cb8a6ab7 (patch)
tree10cba3a27174c28cc67f5d4353aa4751360152ad
parentdev-libs/libliftoff: Bump to 0.4.1, drop old 0.4.0 (diff)
downloadgentoo-b88415abf5a1a3174a30fb6bdf4cdca8cb8a6ab7.tar.gz
gentoo-b88415abf5a1a3174a30fb6bdf4cdca8cb8a6ab7.tar.bz2
gentoo-b88415abf5a1a3174a30fb6bdf4cdca8cb8a6ab7.zip
media-video/mpv: backport ytdl hook fix for dash videos
Feels safe enough for straight-to-stable given only touches the lua script which is already semi-broken. Closes: https://bugs.gentoo.org/899956 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
-rw-r--r--media-video/mpv/files/mpv-0.35.1-yt-dlp-edl-fragments.patch55
-rw-r--r--media-video/mpv/mpv-0.35.1-r1.ebuild (renamed from media-video/mpv/mpv-0.35.1.ebuild)4
2 files changed, 59 insertions, 0 deletions
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
new file mode 100644
index 000000000000..058c608233d4
--- /dev/null
+++ b/media-video/mpv/files/mpv-0.35.1-yt-dlp-edl-fragments.patch
@@ -0,0 +1,55 @@
+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
+
diff --git a/media-video/mpv/mpv-0.35.1.ebuild b/media-video/mpv/mpv-0.35.1-r1.ebuild
index 5ea6dc240af6..9d2d6ee62ae3 100644
--- a/media-video/mpv/mpv-0.35.1.ebuild
+++ b/media-video/mpv/mpv-0.35.1-r1.ebuild
@@ -133,6 +133,10 @@ BDEPEND="
cli? ( dev-python/docutils )
wayland? ( dev-util/wayland-scanner )"
+PATCHES=(
+ "${FILESDIR}"/${P}-yt-dlp-edl-fragments.patch
+)
+
pkg_setup() {
use lua && lua-single_pkg_setup
python-single-r1_pkg_setup