summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Mangano-Tarumi2017-09-16 10:23:58 +0200
committerFrédéric Mangano-Tarumi2017-09-16 10:23:58 +0200
commitdd25cfd2198e1db7c3719df8cff6c5e4aaed7610 (patch)
treee9bde8d0f7eb1223cd4f49962273f4ef5d261647
parentc6965fcbb8c8d07289675da37cb41967ad9e84e9 (diff)
downloadaur-dd25cfd2198e1db7c3719df8cff6c5e4aaed7610.tar.gz
mpv 0.27.0
Ported from upstream, with the opengl-backend patch.
-rw-r--r--.SRCINFO15
-rw-r--r--0001-opengl-backend-support-multiple-backends.patch291
-rw-r--r--PKGBUILD18
3 files changed, 310 insertions, 14 deletions
diff --git a/.SRCINFO b/.SRCINFO
index e6151ee47225..cb54eadf75bc 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by mksrcinfo v8
-# Thu May 25 17:35:33 UTC 2017
+# Sat Sep 16 08:23:55 UTC 2017
pkgbase = mpv-rpi
pkgdesc = mpv with Raspberry Pi support
- pkgver = 0.25.0
+ pkgver = 0.27.0
pkgrel = 1
epoch = 1
url = http://mpv.io
@@ -11,8 +11,6 @@ pkgbase = mpv-rpi
makedepends = mesa
makedepends = python-docutils
makedepends = ladspa
- makedepends = hardening-wrapper
- makedepends = git
depends = ffmpeg-mmal
depends = lcms2
depends = libcdio-paranoia
@@ -31,17 +29,18 @@ pkgbase = mpv-rpi
depends = libdvdnav
depends = libxrandr
depends = jack
- depends = smbclient
depends = rubberband
depends = uchardet
+ depends = libarchive
optdepends = youtube-dl: for video-sharing websites playback
provides = mpv
conflicts = mpv
options = !emptydirs
- options = !buildflags
- source = mpv-0.25.0.tar.gz::https://github.com/mpv-player/mpv/archive/v0.25.0.tar.gz
+ source = mpv-0.27.0.tar.gz::https://github.com/mpv-player/mpv/archive/v0.27.0.tar.gz
+ source = 0001-opengl-backend-support-multiple-backends.patch
source = http://www.freehackers.org/~tnagy/release/waf-1.8.12
- sha256sums = 07423ffad6921ec4da32f703cd7fbfb27012301dcb736ac8542ac8e6083b0bce
+ sha256sums = 341d8bf18b75c1f78d5b681480b5b7f5c8b87d97a0d4f53a5648ede9c219a49c
+ sha256sums = 609e0530f1b0cdb910dcffb5f62bf55936540e24105ce1b2daf1bd6291a7d58a
sha256sums = 01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b
pkgname = mpv-rpi
diff --git a/0001-opengl-backend-support-multiple-backends.patch b/0001-opengl-backend-support-multiple-backends.patch
new file mode 100644
index 000000000000..e96c608d5029
--- /dev/null
+++ b/0001-opengl-backend-support-multiple-backends.patch
@@ -0,0 +1,291 @@
+From 9c397af0dabfff7177bcb76409af5b8f9ae608cf Mon Sep 17 00:00:00 2001
+From: Drew DeVault <sir@cmpwn.com>
+Date: Thu, 27 Apr 2017 17:19:58 -0400
+Subject: [PATCH 1/4] --opengl-backend: support multiple backends
+
+Will attempt each backend specified in order. The x11 backend is still
+preferred, even on Wayland, but the user can now use
+--opengl-backend=wayland,x11 to prefer wayland and fall back to x11 if
+wayland is unavailable.
+---
+ video/out/opengl/context.c | 66 +++++++++++++++++++++++++++++++++++++++++-----
+ video/out/opengl/context.h | 8 ++----
+ video/out/vo_opengl.c | 7 +++--
+ 3 files changed, 64 insertions(+), 17 deletions(-)
+
+diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c
+index 72311e11fa..568bb662b8 100644
+--- a/video/out/opengl/context.c
++++ b/video/out/opengl/context.c
+@@ -89,6 +89,30 @@ static const struct mpgl_driver *const backends[] = {
+ #endif
+ };
+
++static bool get_desc(struct m_obj_desc *dst, int index)
++{
++ if (index >= MP_ARRAY_SIZE(backends) - 1)
++ return false;
++ const struct mpgl_driver *driver = backends[index];
++ *dst = (struct m_obj_desc) {
++ .name = driver->name,
++ .description = driver->name,
++ .priv_size = sizeof(struct mpgl_driver),
++ .p = driver,
++ };
++ return true;
++}
++
++// for backend option
++const struct m_obj_list mpgl_backend_list = {
++ .get_desc = get_desc,
++ .description = "OpenGL windowing backends",
++ .allow_unknown_entries = true,
++ .allow_disable_entries = true,
++ .allow_trailer = true,
++ .disallow_positional_parameters = true,
++};
++
+ // 0-terminated list of desktop GL versions a backend should try to
+ // initialize. The first entry is the most preferred version.
+ const int mpgl_preferred_gl_versions[] = {
+@@ -100,7 +124,7 @@ const int mpgl_preferred_gl_versions[] = {
+ 0
+ };
+
+-int mpgl_find_backend(const char *name)
++static int mpgl_find_backend(const char *name)
+ {
+ if (name == NULL || strcmp(name, "auto") == 0)
+ return -1;
+@@ -126,7 +150,7 @@ int mpgl_validate_backend_opt(struct mp_log *log, const struct m_option *opt,
+ return mpgl_find_backend(s) >= -1 ? 1 : M_OPT_INVALID;
+ }
+
+-static void *get_native_display(void *pctx, const char *name)
++static void *get_native_display(const char *name)
+ {
+ MPGLContext *ctx = pctx;
+ if (!ctx->native_display_type || !name)
+@@ -186,11 +210,41 @@ cleanup:
+
+ // Create a VO window and create a GL context on it.
+ // vo_flags: passed to the backend's create window function
+-MPGLContext *mpgl_init(struct vo *vo, const char *backend_name, int vo_flags)
++MPGLContext *mpgl_init(struct vo *vo, struct m_obj_settings *backend_list, int vo_flags)
+ {
+ MPGLContext *ctx = NULL;
+- int index = mpgl_find_backend(backend_name);
+- if (index == -1) {
++ if (backend_list && backend_list[0].name) {
++ int n;
++ for (n = 0; backend_list[n].name; n++) {
++ // Something like "--opengl-backend=name," allows fallback to autoprobing.
++ int index = mpgl_find_backend(backend_list[n].name);
++ if (index == -1 || strlen(backend_list[n].name) == 0)
++ goto autoprobe;
++ if (index == -2) {
++ MP_FATAL(vo, "Unknown opengl backend '%s'\n", backend_list[n].name);
++ exit(-2);
++ return NULL;
++ }
++ ctx = init_backend(vo, backends[index], true, vo_flags);
++ if (ctx)
++ break;
++ }
++ if (!ctx && !vo->probing) {
++ // Now try with probing off
++ for (n = 0; backend_list[n].name; n++) {
++ int index = mpgl_find_backend(backend_list[n].name);
++ ctx = init_backend(vo, backends[index], false, vo_flags);
++ if (ctx)
++ break;
++ }
++ if (!ctx) {
++ // Backend explicitly requested, but unable to fulfill
++ return NULL;
++ }
++ }
++ }
++ if (!ctx) {
++autoprobe:
+ for (int n = 0; n < MP_ARRAY_SIZE(backends); n++) {
+ ctx = init_backend(vo, backends[n], true, vo_flags);
+ if (ctx)
+@@ -204,8 +258,6 @@ MPGLContext *mpgl_init(struct vo *vo, const char *backend_name, int vo_flags)
+ break;
+ }
+ }
+- } else if (index >= 0) {
+- ctx = init_backend(vo, backends[index], false, vo_flags);
+ }
+ return ctx;
+ }
+diff --git a/video/out/opengl/context.h b/video/out/opengl/context.h
+index 229c5ef54f..7cf439c1a0 100644
+--- a/video/out/opengl/context.h
++++ b/video/out/opengl/context.h
+@@ -100,17 +100,13 @@ typedef struct MPGLContext {
+ void *priv;
+ } MPGLContext;
+
+-MPGLContext *mpgl_init(struct vo *vo, const char *backend_name, int vo_flags);
++MPGLContext *mpgl_init(struct vo *vo, struct m_obj_settings *backend_list, int vo_flags);
+ void mpgl_uninit(MPGLContext *ctx);
+ int mpgl_reconfig_window(struct MPGLContext *ctx);
+ int mpgl_control(struct MPGLContext *ctx, int *events, int request, void *arg);
+ void mpgl_start_frame(struct MPGLContext *ctx);
+ void mpgl_swap_buffers(struct MPGLContext *ctx);
+
+-int mpgl_find_backend(const char *name);
+-
+-struct m_option;
+-int mpgl_validate_backend_opt(struct mp_log *log, const struct m_option *opt,
+- struct bstr name, struct bstr param);
++extern const struct m_obj_list mpgl_backend_list;
+
+ #endif
+diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c
+index 9b3f944e21..91e55b3b2f 100644
+--- a/video/out/vo_opengl.c
++++ b/video/out/vo_opengl.c
+@@ -55,7 +55,7 @@ struct vo_opengl_opts {
+ int allow_sw;
+ int swap_interval;
+ int vsync_fences;
+- char *backend;
++ struct m_obj_settings *backend_list;
+ int es;
+ int pattern[2];
+ };
+@@ -383,7 +383,7 @@ static int preinit(struct vo *vo)
+ if (p->opts.allow_sw)
+ vo_flags |= VOFLAG_SW;
+
+- p->glctx = mpgl_init(vo, p->opts.backend, vo_flags);
++ p->glctx = mpgl_init(vo, p->opts.backend_list, vo_flags);
+ if (!p->glctx)
+ goto err_out;
+ p->gl = p->glctx->gl;
+@@ -438,8 +438,7 @@ const struct vo_driver video_out_opengl = {
+ OPT_FLAG("opengl-waitvsync", opts.waitvsync, 0),
+ OPT_INT("opengl-swapinterval", opts.swap_interval, 0),
+ OPT_FLAG("opengl-debug", opts.use_gl_debug, 0),
+- OPT_STRING_VALIDATE("opengl-backend", opts.backend, 0,
+- mpgl_validate_backend_opt),
++ OPT_SETTINGSLIST("opengl-backend", opts.backend_list, 0, &mpgl_backend_list ),
+ OPT_FLAG("opengl-sw", opts.allow_sw, 0),
+ OPT_CHOICE("opengl-es", opts.es, 0, ({"no", -1}, {"auto", 0},
+ {"yes", 1}, {"force2", 2})),
+From 4e89fae50f70d065ff8ffee40aa8dffe8131210e Mon Sep 17 00:00:00 2001
+From: Drew DeVault <sir@cmpwn.com>
+Date: Thu, 27 Apr 2017 17:51:39 -0400
+Subject: [PATCH 2/4] Update mpv.1
+---
+ DOCS/man/options.rst | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
+index 925c501881..5d57720e3d 100644
+--- a/DOCS/man/options.rst
++++ b/DOCS/man/options.rst
+@@ -4480,9 +4480,10 @@ The following video options are currently all specific to ``--vo=opengl`` and
+ Continue even if a software renderer is detected.
+
+ ``--opengl-backend=<sys>``
+- The value ``auto`` (the default) selects the windowing backend. You can
+- also pass ``help`` to get a complete list of compiled in backends (sorted
+- by autoprobe order).
++ Specify a priority list of windowing backends to use with OpenGL. The value
++ ``auto`` (the default) automatically probes for the most suitable backend.
++ You can also pass ``help`` to get a complete list of compiled in backends
++ (sorted by autoprobe order).
+
+ auto
+ auto-select (default)
+From 3fb437fa09ebf20635c02f41ce0e3d13423d1454 Mon Sep 17 00:00:00 2001
+From: Drew DeVault <sir@cmpwn.com>
+Date: Thu, 27 Apr 2017 20:12:51 -0400
+Subject: [PATCH 3/4] Let options handle invalid backends
+---
+ video/out/opengl/context.c | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c
+index 568bb662b8..8aa44b67cc 100644
+--- a/video/out/opengl/context.c
++++ b/video/out/opengl/context.c
+@@ -91,6 +91,14 @@ static const struct mpgl_driver *const backends[] = {
+
+ static bool get_desc(struct m_obj_desc *dst, int index)
+ {
++ if (index == 0) {
++ *dst = (struct m_obj_desc) {
++ .name = "auto",
++ .description = "automatically select most suitable backend"
++ };
++ return true;
++ }
++ index--;
+ if (index >= MP_ARRAY_SIZE(backends) - 1)
+ return false;
+ const struct mpgl_driver *driver = backends[index];
+@@ -107,8 +115,6 @@ static bool get_desc(struct m_obj_desc *dst, int index)
+ const struct m_obj_list mpgl_backend_list = {
+ .get_desc = get_desc,
+ .description = "OpenGL windowing backends",
+- .allow_unknown_entries = true,
+- .allow_disable_entries = true,
+ .allow_trailer = true,
+ .disallow_positional_parameters = true,
+ };
+@@ -218,13 +224,8 @@ MPGLContext *mpgl_init(struct vo *vo, struct m_obj_settings *backend_list, int v
+ for (n = 0; backend_list[n].name; n++) {
+ // Something like "--opengl-backend=name," allows fallback to autoprobing.
+ int index = mpgl_find_backend(backend_list[n].name);
+- if (index == -1 || strlen(backend_list[n].name) == 0)
++ if (index < 0 || strlen(backend_list[n].name) == 0)
+ goto autoprobe;
+- if (index == -2) {
+- MP_FATAL(vo, "Unknown opengl backend '%s'\n", backend_list[n].name);
+- exit(-2);
+- return NULL;
+- }
+ ctx = init_backend(vo, backends[index], true, vo_flags);
+ if (ctx)
+ break;
+From 605785c4846ecaa969309f7fb63cfba59751ba61 Mon Sep 17 00:00:00 2001
+From: Drew DeVault <sir@cmpwn.com>
+Date: Fri, 26 May 2017 15:31:24 -0400
+Subject: [PATCH 4/4] Updates following HEAD
+---
+ video/out/opengl/context.c | 17 +----------------
+ 1 file changed, 1 insertion(+), 16 deletions(-)
+
+diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c
+index 8aa44b67cc..4cc0829c90 100644
+--- a/video/out/opengl/context.c
++++ b/video/out/opengl/context.c
+@@ -141,22 +141,7 @@ static int mpgl_find_backend(const char *name)
+ return -2;
+ }
+
+-int mpgl_validate_backend_opt(struct mp_log *log, const struct m_option *opt,
+- struct bstr name, struct bstr param)
+-{
+- if (bstr_equals0(param, "help")) {
+- mp_info(log, "OpenGL windowing backends:\n");
+- mp_info(log, " auto (autodetect)\n");
+- for (int n = 0; n < MP_ARRAY_SIZE(backends); n++)
+- mp_info(log, " %s\n", backends[n]->name);
+- return M_OPT_EXIT;
+- }
+- char s[20];
+- snprintf(s, sizeof(s), "%.*s", BSTR_P(param));
+- return mpgl_find_backend(s) >= -1 ? 1 : M_OPT_INVALID;
+-}
+-
+-static void *get_native_display(const char *name)
++static void *get_native_display(void *pctx, const char *name)
+ {
+ MPGLContext *ctx = pctx;
+ if (!ctx->native_display_type || !name)
diff --git a/PKGBUILD b/PKGBUILD
index 0492aaf39c15..9dcea371b083 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -11,7 +11,7 @@
pkgname=mpv-rpi
_pkgname=mpv
epoch=1
-pkgver=0.25.0
+pkgver=0.27.0
pkgrel=1
_waf_version=1.8.12
pkgdesc='mpv with Raspberry Pi support'
@@ -22,14 +22,16 @@ depends=(
'ffmpeg-mmal' 'lcms2' 'libcdio-paranoia' 'libgl' 'libxss'
'libxinerama' 'libxv' 'libxkbcommon' 'libva' 'wayland' 'libcaca'
'desktop-file-utils' 'hicolor-icon-theme' 'xdg-utils' 'lua52' 'libdvdnav'
- 'libxrandr' 'jack' 'smbclient' 'rubberband' 'uchardet'
+ 'libxrandr' 'jack' 'rubberband' 'uchardet' 'libarchive'
)
-makedepends=('mesa' 'python-docutils' 'ladspa' 'hardening-wrapper' 'git')
+makedepends=('mesa' 'python-docutils' 'ladspa')
optdepends=('youtube-dl: for video-sharing websites playback')
-options=('!emptydirs' '!buildflags')
+options=('!emptydirs')
source=("$_pkgname-$pkgver.tar.gz::https://github.com/mpv-player/$_pkgname/archive/v$pkgver.tar.gz"
+ '0001-opengl-backend-support-multiple-backends.patch'
"http://www.freehackers.org/~tnagy/release/waf-${_waf_version}")
-sha256sums=('07423ffad6921ec4da32f703cd7fbfb27012301dcb736ac8542ac8e6083b0bce'
+sha256sums=('341d8bf18b75c1f78d5b681480b5b7f5c8b87d97a0d4f53a5648ede9c219a49c'
+ '609e0530f1b0cdb910dcffb5f62bf55936540e24105ce1b2daf1bd6291a7d58a'
'01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b')
provides=('mpv')
conflicts=('mpv')
@@ -37,6 +39,9 @@ conflicts=('mpv')
prepare() {
cd ${_pkgname}-${pkgver}
+ # --opengl-backend: support multiple backends (#4384) (FS#53962)
+ patch -Np1 < "${srcdir}"/0001-opengl-backend-support-multiple-backends.patch
+
install -m755 "${srcdir}"/waf-${_waf_version} waf
}
@@ -47,10 +52,11 @@ build() {
./waf configure --prefix=/usr \
--confdir=/etc/mpv \
- --enable-libarchive \
--enable-cdda \
+ --enable-dvb \
--enable-dvdnav \
--enable-encoding \
+ --enable-libarchive \
--enable-libmpv-shared \
--enable-zsh-comp \
--enable-egl-x11 \