Skip to content

Commit

Permalink
add mpv
Browse files Browse the repository at this point in the history
  • Loading branch information
flacjacket committed Aug 15, 2024
1 parent 45a8a8a commit c3aa942
Show file tree
Hide file tree
Showing 5 changed files with 405 additions and 0 deletions.
1 change: 1 addition & 0 deletions media-video/mpv/Manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DIST mpv-0.37.0.tar.gz 3384190 BLAKE2B 31d8d47ed7ae94540189fe05b7ea63f5b0d5c987a22191f931e4bd90664d05dca4c7e0bd0e05fcdf48b977e38e5f8eec0d2572265f2cf4a969a8a9a9dbf83d68 SHA512 a2f7fb3837312ec59c50427af7be3b2b1b6175a53ccc7463e81503284fc4047dff32cb105d665d80be77ee1ae775d4512b71584f324d6d202c9a7fc1fab53257
34 changes: 34 additions & 0 deletions media-video/mpv/metadata.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>[email protected]</email>
<name>Ionen Wolkens</name>
</maintainer>
<use>
<flag name="archive">Enable support for various archive formats via <pkg>app-arch/libarchive</pkg></flag>
<flag name="bluray">Enable playback of Blu-ray filesystems</flag>
<flag name="cli">Enable the command-line player</flag>
<flag name="drm">Enable Kernel Mode Setting / Direct Rendering Manager based video outputs</flag>
<flag name="gamepad">Enable gamepad input support</flag>
<flag name="libmpv">Enable the shared library and headers (used by frontends / plugins)</flag>
<flag name="lua">Enable Lua scripting, OSC (On Screen Controller) GUI, and <pkg>net-misc/yt-dlp</pkg> support</flag>
<flag name="mmal">Enable Multi-Media Abstraction Layer (MMAL) decoding support: Available e.g. on the Raspberry Pi</flag>
<flag name="opengl">Enable support for OpenGL-based video backends
(Note: deprecated for X11, USE=egl provides the newer support for -gpu-api=opengl)</flag>
<flag name="pipewire">Enable sound support via native PipeWire backend</flag>
<flag name="raspberry-pi">Enable support for the Raspberry Pi</flag>
<flag name="rubberband">Enable high quality pitch correction via <pkg>media-libs/rubberband</pkg></flag>
<flag name="sdl">Enable <pkg>media-libs/libsdl2</pkg> based video and audio outputs
(Note: these outputs exist for compatibility reasons only, avoid if possible)</flag>
<flag name="sixel">Enable support for the sixel video backend using <pkg>media-libs/libsixel</pkg></flag>
<flag name="sndio">Enable sound support via <pkg>media-sound/sndio</pkg></flag>
<flag name="soc">Use additional <pkg>media-video/ffmpeg</pkg> patches for efficient playback on some SoCs (e.g. ARM, RISC-V)</flag>
<flag name="tools">Install extra tools: mpv_identify.sh, mpv_idet.sh, and umpv</flag>
<flag name="uchardet">Enable subtitles charset discovery via <pkg>app-i18n/uchardet</pkg></flag>
<flag name="zimg">Enable libzimg support (for vf_fingerprint)</flag>
</use>
<upstream>
<remote-id type="github">mpv-player/mpv</remote-id>
</upstream>
</pkgmetadata>
41 changes: 41 additions & 0 deletions media-video/mpv/mpv-0.37.0-drm-fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
From e575ec4fc3654387c7358bd3640877ef32628d2c Mon Sep 17 00:00:00 2001
From: Jan Beich <[email protected]>
Date: Wed, 22 Nov 2023 19:44:13 +0100
Subject: [PATCH] meson: also expose present_sync for VT-only after
a96d04f19d73

$ meson setup --auto-features=disabled -Ddrm=enabled -Degl=enabled -Dgbm=enabled -Degl-drm=enabled /tmp/mpv_build
$ meson compile -C /tmp/mpv_build
[...]
ld: error: undefined symbol: mp_present_initialize
>>> referenced by drm_common.c
>>> libmpv.so.2.2.0.p/video_out_drm_common.c.o:(vo_drm_init)

ld: error: undefined symbol: present_sync_update_values
>>> referenced by drm_common.c
>>> libmpv.so.2.2.0.p/video_out_drm_common.c.o:(drm_pflip_cb)

ld: error: undefined symbol: present_sync_swap
>>> referenced by drm_common.c
>>> libmpv.so.2.2.0.p/video_out_drm_common.c.o:(drm_pflip_cb)

ld: error: undefined symbol: present_sync_get_info
>>> referenced by vo_drm.c
>>> libmpv.so.2.2.0.p/video_out_vo_drm.c.o:(get_vsync)
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index a3c3430dd47b..6fd5afa5122a 100644
--- a/meson.build
+++ b/meson.build
@@ -1049,7 +1049,7 @@ if features['xv']
sources += files('video/out/vo_xv.c')
endif

-if features['wayland'] or features['x11']
+if features['wayland'] or features['x11'] or features['drm']
sources += ('video/out/present_sync.c')
endif

45 changes: 45 additions & 0 deletions media-video/mpv/mpv-0.37.0-ffmpeg7.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
https://github.com/mpv-player/mpv/pull/13659
From: Dudemanguy <[email protected]>
Date: Thu, 7 Mar 2024 13:42:25 -0600
Subject: [PATCH 1/2] ad_spdif: handle const buf pointee in avio_alloc_context

ffmpeg recently changed this field to be const which causes our CI to
fail on newer versions.

See: https://github.com/FFmpeg/FFmpeg/commit/2a68d945cd74265bb71c3d38b7a2e7f7d7e87be5
--- a/audio/decode/ad_spdif.c
+++ b/audio/decode/ad_spdif.c
@@ -59,7 +59,11 @@ struct spdifContext {
struct mp_decoder public;
};

+#if LIBAVCODEC_VERSION_MAJOR < 61
static int write_packet(void *p, uint8_t *buf, int buf_size)
+#else
+static int write_packet(void *p, const uint8_t *buf, int buf_size)
+#endif
{
struct spdifContext *ctx = p;


From 7f9eabfb023611565db8b6cce9a3473a6eb6c731 Mon Sep 17 00:00:00 2001
From: Dudemanguy <[email protected]>
Date: Thu, 7 Mar 2024 14:12:15 -0600
Subject: [PATCH 2/2] filters/f_lavfi: handle removed
AV_OPT_TYPE_CHANNEL_LAYOUT

See: https://github.com/FFmpeg/FFmpeg/commit/65ddc74988245a01421a63c5cffa4d900c47117c
--- a/filters/f_lavfi.c
+++ b/filters/f_lavfi.c
@@ -1034,7 +1034,11 @@ static const char *get_avopt_type_name(enum AVOptionType type)
case AV_OPT_TYPE_VIDEO_RATE: return "fps";
case AV_OPT_TYPE_DURATION: return "duration";
case AV_OPT_TYPE_COLOR: return "color";
+#if LIBAVUTIL_VERSION_MAJOR < 59
case AV_OPT_TYPE_CHANNEL_LAYOUT: return "channellayout";
+#else
+ case AV_OPT_TYPE_CHLAYOUT: return "channellayout";
+#endif
case AV_OPT_TYPE_BOOL: return "bool";
case AV_OPT_TYPE_CONST: // fallthrough
default:
Loading

0 comments on commit c3aa942

Please sign in to comment.