summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--.gitignore9
-rw-r--r--0003-Give-str-its-Python-3-meaning.patch27
-rw-r--r--0008-Update-to-libmpv-API-2.0.patch323
-rw-r--r--PKGBUILD26
5 files changed, 378 insertions, 13 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 6d7118fc858f..1e20660090aa 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = python-pympv
pkgdesc = Python wrapper for libmpv
pkgver = 0.7.1
- pkgrel = 1
+ pkgrel = 2
url = https://github.com/marcan/pympv
arch = x86_64
license = GPL3
@@ -11,6 +11,10 @@ pkgbase = python-pympv
depends = python
conflicts = python-mpv
source = python-pympv-0.7.1.tar.gz::https://github.com/marcan/pympv/archive/refs/tags/v0.7.1.tar.gz
+ source = 0003-Give-str-its-Python-3-meaning.patch
+ source = 0008-Update-to-libmpv-API-2.0.patch
b2sums = 57f9f0dbbf8d14714729642f0a646c0e9227134057b30c73c377c598c4c0b6e56147ec5a6ccc980e8b223775edd31072c2842f3d249a3698db5e83bbdc3f05ef
+ b2sums = d402ed389528472b4cbbae7bc78f95b67c7c3c353f08be2aded42ef209e66e612dea34896e0c435a02ba6e8b490a3d66ad2753be52bfa58f6fbbe8215c47e432
+ b2sums = fc1937d569a620820f80bdd308b5c3eabf31a7ca33250138b0f855be9787a46166e43085728300f12ac2f62fe31c77ab1207a3652860c1997af31f97101b3c9a
pkgname = python-pympv
diff --git a/.gitignore b/.gitignore
index 05c6d4d4c97b..b56c5662e8ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
-*
-!.gitignore
-!.SRCINFO
-!PKGBUILD
+/*
+!/.gitignore
+!/.SRCINFO
+!/PKGBUILD
+!/000*.patch
diff --git a/0003-Give-str-its-Python-3-meaning.patch b/0003-Give-str-its-Python-3-meaning.patch
new file mode 100644
index 000000000000..dcea638b3759
--- /dev/null
+++ b/0003-Give-str-its-Python-3-meaning.patch
@@ -0,0 +1,27 @@
+From 86ed671c8efbe4b5c5e51a23cdc207901e7bd014 Mon Sep 17 00:00:00 2001
+From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+Date: Thu, 26 Nov 2020 23:57:01 +0100
+Subject: [PATCH 3/9] =?UTF-8?q?Give=20str=20its=20Python=C2=A03=20meaning?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Cython still defaults to aliasing it to bytes for compatibility with
+Python 2, but we don’t need that anymore.
+---
+ mpv.pyx | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/mpv.pyx b/mpv.pyx
+index 8cef63d..c353493 100644
+--- a/mpv.pyx
++++ b/mpv.pyx
+@@ -1,3 +1,5 @@
++# cython: language_level=3
++
+ # This program is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation, either version 3 of the License, or
+--
+2.40.1
+
diff --git a/0008-Update-to-libmpv-API-2.0.patch b/0008-Update-to-libmpv-API-2.0.patch
new file mode 100644
index 000000000000..0d9702a806dc
--- /dev/null
+++ b/0008-Update-to-libmpv-API-2.0.patch
@@ -0,0 +1,323 @@
+From dc2f2f0c94d59d860dd66a65129deb7eea85c4e5 Mon Sep 17 00:00:00 2001
+From: Mia Herkt <mia@0x0.st>
+Date: Wed, 14 Dec 2022 23:51:38 +0100
+Subject: [PATCH 8/9] Update to libmpv API 2.0
+
+---
+ client.pxd | 47 ++++-----------------
+ mpv.pyx | 119 ++++-------------------------------------------------
+ 2 files changed, 16 insertions(+), 150 deletions(-)
+
+diff --git a/client.pxd b/client.pxd
+index befe219..08fb4d0 100644
+--- a/client.pxd
++++ b/client.pxd
+@@ -106,16 +106,10 @@ cdef extern from "mpv/client.h":
+
+ int mpv_initialize(mpv_handle *ctx) nogil
+
+- void mpv_detach_destroy(mpv_handle *ctx) nogil
+-
+ void mpv_terminate_destroy(mpv_handle *ctx) nogil
+
+ int mpv_load_config_file(mpv_handle *ctx, const char *filename) nogil
+
+- void mpv_suspend(mpv_handle *ctx) nogil
+-
+- void mpv_resume(mpv_handle *ctx) nogil
+-
+ int64_t mpv_get_time_us(mpv_handle *ctx) nogil
+
+ cdef enum mpv_format:
+@@ -200,21 +194,14 @@ cdef extern from "mpv/client.h":
+ MPV_EVENT_START_FILE
+ MPV_EVENT_END_FILE
+ MPV_EVENT_FILE_LOADED
+- MPV_EVENT_TRACKS_CHANGED
+- MPV_EVENT_TRACK_SWITCHED
+ MPV_EVENT_IDLE
+- MPV_EVENT_PAUSE
+- MPV_EVENT_UNPAUSE
+ MPV_EVENT_TICK
+- MPV_EVENT_SCRIPT_INPUT_DISPATCH
+ MPV_EVENT_CLIENT_MESSAGE
+ MPV_EVENT_VIDEO_RECONFIG
+ MPV_EVENT_AUDIO_RECONFIG
+- MPV_EVENT_METADATA_UPDATE
+ MPV_EVENT_SEEK
+ MPV_EVENT_PLAYBACK_RESTART
+ MPV_EVENT_PROPERTY_CHANGE
+- MPV_EVENT_CHAPTER_CHANGE
+
+ const char *mpv_event_name(mpv_event_id event) nogil
+
+@@ -282,29 +269,6 @@ cdef extern from "mpv/client.h":
+
+ void *mpv_get_sub_api(mpv_handle *ctx, mpv_sub_api sub_api) nogil
+
+-cdef extern from "mpv/opengl_cb.h":
+- struct mpv_opengl_cb_context:
+- pass
+-
+- ctypedef void (*mpv_opengl_cb_update_fn)(void *cb_ctx) nogil
+- ctypedef void *(*mpv_opengl_cb_get_proc_address_fn)(void *fn_ctx,
+- const char *name) nogil
+-
+- void mpv_opengl_cb_set_update_callback(mpv_opengl_cb_context *ctx,
+- mpv_opengl_cb_update_fn callback,
+- void *callback_ctx) nogil
+-
+- int mpv_opengl_cb_init_gl(mpv_opengl_cb_context *ctx, const char *exts,
+- mpv_opengl_cb_get_proc_address_fn get_proc_address,
+- void *get_proc_address_ctx) nogil
+-
+- int mpv_opengl_cb_draw(mpv_opengl_cb_context *ctx, int fbo, int w, int h) nogil
+-
+- int mpv_opengl_cb_report_flip(mpv_opengl_cb_context *ctx, int64_t time) nogil
+-
+- int mpv_opengl_cb_uninit_gl(mpv_opengl_cb_context *ctx) nogil
+-
+-
+ cdef extern from "mpv/render.h":
+ struct mpv_render_context:
+ pass
+@@ -325,9 +289,15 @@ cdef extern from "mpv/render.h":
+ MPV_RENDER_PARAM_BLOCK_FOR_TARGET_TIME
+ MPV_RENDER_PARAM_SKIP_RENDERING
+ MPV_RENDER_PARAM_DRM_DISPLAY
+- MPV_RENDER_PARAM_DRM_OSD_SIZE
++ MPV_RENDER_PARAM_DRM_DRAW_SURFACE_SIZE
++ MPV_RENDER_PARAM_DRM_DISPLAY_V2
++ MPV_RENDER_PARAM_SW_SIZE
++ MPV_RENDER_PARAM_SW_FORMAT
++ MPV_RENDER_PARAM_SW_STRIDE
++ MPV_RENDER_PARAM_SW_POINTER
+
+ char *MPV_RENDER_API_TYPE_OPENGL
++ char *MPV_RENDER_API_TYPE_SW
+
+ enum mpv_render_frame_info_flag:
+ MPV_RENDER_FRAME_INFO_PRESENT
+@@ -373,7 +343,6 @@ cdef extern from "mpv/render_gl.h":
+ struct mpv_opengl_init_params:
+ void *(*get_proc_address)(void *ctx, const char *name)
+ void *get_proc_address_ctx
+- const char *extra_exts
+
+ struct mpv_opengl_fbo:
+ int fbo
+@@ -391,6 +360,6 @@ cdef extern from "mpv/render_gl.h":
+ _drmModeAtomicReq **atomic_request_ptr
+ int render_fd
+
+- struct mpv_opengl_drm_osd_size:
++ struct mpv_opengl_drm_draw_surface_size:
+ int width
+ int height
+diff --git a/mpv.pyx b/mpv.pyx
+index 604a088..dd4f6c1 100644
+--- a/mpv.pyx
++++ b/mpv.pyx
+@@ -32,8 +32,8 @@ from client cimport *
+ __version__ = "0.3.0"
+ __author__ = "Andre D"
+
+-_REQUIRED_CAPI_MAJOR = 1
+-_MIN_CAPI_MINOR = 9
++_REQUIRED_CAPI_MAJOR = 2
++_MIN_CAPI_MINOR = 0
+
+ cdef unsigned long _CAPI_VERSION
+ with nogil:
+@@ -107,21 +107,14 @@ class Events:
+ start_file = MPV_EVENT_START_FILE
+ end_file = MPV_EVENT_END_FILE
+ file_loaded = MPV_EVENT_FILE_LOADED
+- tracks_changed = MPV_EVENT_TRACKS_CHANGED
+- tracks_switched = MPV_EVENT_TRACK_SWITCHED
+ idle = MPV_EVENT_IDLE
+- pause = MPV_EVENT_PAUSE
+- unpause = MPV_EVENT_UNPAUSE
+ tick = MPV_EVENT_TICK
+- script_input_dispatch = MPV_EVENT_SCRIPT_INPUT_DISPATCH
+ client_message = MPV_EVENT_CLIENT_MESSAGE
+ video_reconfig = MPV_EVENT_VIDEO_RECONFIG
+ audio_reconfig = MPV_EVENT_AUDIO_RECONFIG
+- metadata_update = MPV_EVENT_METADATA_UPDATE
+ seek = MPV_EVENT_SEEK
+ playback_restart = MPV_EVENT_PLAYBACK_RESTART
+ property_change = MPV_EVENT_PROPERTY_CHANGE
+- chapter_change = MPV_EVENT_CHAPTER_CHANGE
+
+
+ class LogLevels:
+@@ -159,19 +152,6 @@ cdef class EndOfFileReached(object):
+ return self
+
+
+-cdef class InputDispatch(object):
+- """Data field for MPV_EVENT_SCRIPT_INPUT_DISPATCH events.
+-
+- Wraps: mpv_event_script_input_dispatch
+- """
+- cdef public object arg0, type
+-
+- cdef _init(self, mpv_event_script_input_dispatch* input):
+- self.arg0 = input.arg0
+- self.type = _strdec(input.type)
+- return self
+-
+-
+ cdef class LogMessage(object):
+ """Data field for MPV_EVENT_LOG_MESSAGE events.
+
+@@ -269,8 +249,6 @@ cdef class Event(object):
+ return Property()._init(<mpv_event_property*>data)
+ elif self.id == MPV_EVENT_LOG_MESSAGE:
+ return LogMessage()._init(<mpv_event_log_message*>data)
+- elif self.id == MPV_EVENT_SCRIPT_INPUT_DISPATCH:
+- return InputDispatch()._init(<mpv_event_script_input_dispatch*>data)
+ elif self.id == MPV_EVENT_CLIENT_MESSAGE:
+ climsg = <mpv_event_client_message*>data
+ args = []
+@@ -385,18 +363,6 @@ cdef class Context(object):
+ time = mpv_get_time_us(self._ctx)
+ return time
+
+- def suspend(self):
+- """Wraps: mpv_suspend"""
+- assert self._ctx
+- with nogil:
+- mpv_suspend(self._ctx)
+-
+- def resume(self):
+- """Wraps: mpv_resume"""
+- assert self._ctx
+- with nogil:
+- mpv_resume(self._ctx)
+-
+ @_errors
+ def request_event(self, event, enable):
+ """Enable or disable a given event.
+@@ -787,18 +753,6 @@ cdef class Context(object):
+ self.reply_userdata = None
+ self._ctx = NULL
+
+- def opengl_cb_api(self):
+- cdef void *cb
+-
+- _ctx = mpv_get_sub_api(self._ctx, MPV_SUB_API_OPENGL_CB)
+- if not _ctx:
+- raise MPVError("OpenGL API not available")
+-
+- ctx = OpenGLContext()
+- ctx._ctx = <mpv_opengl_cb_context*>_ctx
+-
+- return ctx
+-
+ def __dealloc__(self):
+ self.shutdown()
+
+@@ -808,63 +762,6 @@ cdef void *_c_getprocaddress(void *ctx, const char *name) with gil:
+ cdef void _c_updatecb(void *ctx) with gil:
+ (<object>ctx)()
+
+-cdef class OpenGLContext(object):
+- cdef:
+- mpv_opengl_cb_context *_ctx
+- bint inited
+- object update_cb
+-
+- def __init__(self):
+- self.inited = False
+- warnings.warn("OpenGLContext is deprecated, please switch to RenderContext", DeprecationWarning)
+-
+- def init_gl(self, exts, get_proc_address):
+- exts = _strenc(exts) if exts is not None else None
+- cdef char* extsc = NULL
+- if exts is not None:
+- extsc = exts
+- with nogil:
+- err = mpv_opengl_cb_init_gl(self._ctx, extsc, &_c_getprocaddress,
+- <void *>get_proc_address)
+- if err < 0:
+- raise MPVError(err)
+-
+- self.inited = True
+-
+- def set_update_callback(self, cb):
+- self.update_cb = cb
+- with nogil:
+- mpv_opengl_cb_set_update_callback(self._ctx, &_c_updatecb, <void *>cb)
+-
+- def draw(self, fbo, w, h):
+- cdef:
+- int fboc = fbo
+- int wc = w
+- int hc = h
+- with nogil:
+- err = mpv_opengl_cb_draw(self._ctx, fboc, wc, hc)
+- if err < 0:
+- raise MPVError(err)
+-
+- def report_flip(self, time):
+- cdef int64_t ctime = time
+- with nogil:
+- err = mpv_opengl_cb_report_flip(self._ctx, ctime)
+- if err < 0:
+- raise MPVError(err)
+-
+- def uninit_gl(self):
+- if not self.inited:
+- return
+- with nogil:
+- err = mpv_opengl_cb_uninit_gl(self._ctx)
+- if err < 0:
+- raise MPVError(err)
+- self.inited = False
+-
+- def __dealloc__(self):
+- self.uninit_gl()
+-
+ DEF MAX_RENDER_PARAMS = 32
+
+ cdef class _RenderParams(object):
+@@ -943,19 +840,19 @@ cdef class RenderContext(object):
+ x11_display=None,
+ wl_display=None,
+ drm_display=None,
+- drm_osd_size=None
++ drm_draw_surface_size=None
+ ):
+
+ cdef:
+ mpv_opengl_init_params gl_params
+ mpv_opengl_drm_params drm_params
+- mpv_opengl_drm_osd_size _drm_osd_size
++ mpv_opengl_drm_draw_surface_size _drm_draw_surface_size
+
+ self._mpv = mpv
+
+ memset(&gl_params, 0, sizeof(gl_params))
+ memset(&drm_params, 0, sizeof(drm_params))
+- memset(&_drm_osd_size, 0, sizeof(_drm_osd_size))
++ memset(&_drm_draw_surface_size, 0, sizeof(_drm_draw_surface_size))
+
+ params = _RenderParams()
+
+@@ -986,9 +883,9 @@ cdef class RenderContext(object):
+ drm_params.atomic_request_ptr = <_drmModeAtomicReq **>get_pointer(arp, "drmModeAtomicReq*")
+ drm_params.render_fd = drm_display.get("render_fd", -1)
+ params.add_voidp(MPV_RENDER_PARAM_DRM_DISPLAY, &drm_params)
+- if drm_osd_size:
+- _drm_osd_size.width, _drm_osd_size.height = drm_osd_size
+- params.add_voidp(MPV_RENDER_PARAM_DRM_OSD_SIZE, &_drm_osd_size)
++ if drm_draw_surface_size:
++ _drm_draw_surface_size.width, _drm_draw_surface_size.height = drm_draw_surface_size
++ params.add_voidp(MPV_RENDER_PARAM_DRM_DRAW_SURFACE_SIZE, &_drm_draw_surface_size)
+
+ err = mpv_render_context_create(&self._ctx, self._mpv._ctx, params.params)
+ if err < 0:
+--
+2.40.1
+
diff --git a/PKGBUILD b/PKGBUILD
index 55bdb4a78a57..4f17cbc8e5cc 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,16 +3,26 @@
_pkgname=pympv
pkgname="python-$_pkgname"
pkgver=0.7.1
-pkgrel=1
+pkgrel=2
pkgdesc='Python wrapper for libmpv'
-arch=('x86_64')
+arch=(x86_64)
url="https://github.com/marcan/$_pkgname"
-license=('GPL3')
-depends=('mpv' 'python')
-makedepends=('cython' 'python-setuptools')
-conflicts=('python-mpv')
-source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
-b2sums=('57f9f0dbbf8d14714729642f0a646c0e9227134057b30c73c377c598c4c0b6e56147ec5a6ccc980e8b223775edd31072c2842f3d249a3698db5e83bbdc3f05ef')
+license=(GPL3)
+depends=(mpv python)
+makedepends=(cython python-setuptools)
+conflicts=(python-mpv)
+source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz"
+ 0003-Give-str-its-Python-3-meaning.patch
+ 0008-Update-to-libmpv-API-2.0.patch)
+b2sums=('57f9f0dbbf8d14714729642f0a646c0e9227134057b30c73c377c598c4c0b6e56147ec5a6ccc980e8b223775edd31072c2842f3d249a3698db5e83bbdc3f05ef'
+ 'd402ed389528472b4cbbae7bc78f95b67c7c3c353f08be2aded42ef209e66e612dea34896e0c435a02ba6e8b490a3d66ad2753be52bfa58f6fbbe8215c47e432'
+ 'fc1937d569a620820f80bdd308b5c3eabf31a7ca33250138b0f855be9787a46166e43085728300f12ac2f62fe31c77ab1207a3652860c1997af31f97101b3c9a')
+
+prepare() {
+ cd $_pkgname-$pkgver
+ patch -Np1 -i ../0003-Give-str-its-Python-3-meaning.patch
+ patch -Np1 -i ../0008-Update-to-libmpv-API-2.0.patch
+}
build() {
cd $_pkgname-$pkgver