diff options
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | .gitignore | 9 | ||||
-rw-r--r-- | 0003-Give-str-its-Python-3-meaning.patch | 27 | ||||
-rw-r--r-- | 0008-Update-to-libmpv-API-2.0.patch | 323 | ||||
-rw-r--r-- | PKGBUILD | 26 |
5 files changed, 378 insertions, 13 deletions
@@ -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 + @@ -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 |